NLP干货: (1) 基于机器学习的文本分类

本文介绍了文本分类的基本流程,包括数据预处理(清洗、分词、去停用词)、特征提取(词袋模型和TF-IDF)、以及模型选择(朴素贝叶斯、SVM、随机森林和逻辑回归),并通过示例展示了如何使用这些技术进行实际的文本分类。
摘要由CSDN通过智能技术生成

目录

一、数据预处理

1.1 数据清洗

1.2 分词

1.3 去停用词

二、特征提取

2.1 词袋模型(Bag of Words)

2.2 TF-IDF模型

三、模型选择和评估

3.1 朴素贝叶斯(Naive Bayes)

3.2 支持向量机(Support Vector Machine)

3.3 随机森林(Random Forest)

3.4 逻辑回归(Logistic Regression)

3.5 模型训练与评估

四、小结


文本分类是NLP最常用的应用之一,这是基于文档内容将电子邮件、消息、推文或文章形式的文本文档分类为预定义类别的过程。在本章中,你将学习如何使用机器学习技术进行文本分类,并提供了代码进行实战,让我们开始吧。

首先加载所需的依赖库:

# 依赖库
import pandas as pd
import random
import time
import joblib
from sklearn.model_selection import train_test_split, RandomizedSearchCV
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.linear_model import LogisticRegression
import re
import jieba

源数据的形式:

case number content label
0 文本内容1。。。 标签1
1 文本内容2。。。 标签2

一、数据预处理

在文本分类中,数据处理是一个关键的步骤,它可以影响模型的性能。以下是一些常用的数据处理技术:

1.1 数据清洗

包括去除文本中的特殊字符、标点符号、数字等,并进行大小写转换、去除HTML标签等操作,以保证文本数据的干净和一致性。

1.2 分词

将完整的句子拆分成词语,实现分词的常用库:jieba, SnowNLP, THULAC, TLNK等。

1.3 去停用词

删除对文本特征没有任何贡献作用的字词,例如语气词、人称助词等频繁表达的词语。

# 数据预处理:清洗、分词、去停用词 ##
def preprocess_text(content,words):
    print('开始数据预处理...')
    stopwords = pd.read_csv("C:/Users/xxx/Documents/NLP/data/Stopwords.txt", index_col=False,quoting=3, sep="\t", names=['stopword'], encoding='utf8')
    stopwords = stopwords['stopword'].values
    for line in range(len(content)):
        try:
            content[line] = content[line].lower()
            # 删除提及(例如:@zhangsan);删除URL链接;删除标签(例如:#Amazing);删除记号和下一个字符(例如:he's);删除数字
            content[line] = re.sub("\S+@\S+|https*\S+|#\S+|\'\w+|\d+", " ", content[line])
            # 删除特殊字符
            content[line] = re.sub(r'[’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’!\[\\\]^_`{|}~]+', ' ',content[line])
            #删除两端空格;删除2个及以上的空格
            content[line] = re.sub('\s{2,}', " ", content[line])
            content[line] = content[line].strip()
            segs = jieba.lcut(content[line])
            segs = filter(lambda x: len(x) > 1, segs)
            segs = filter(lambda x: x not in stopwords, segs)
            segs = list(segs)
            Allsegs = " ".joi
  • 41
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于深度学习的文本分类任务是指利用深度学习模型对文本进行情感分类。在这个任务中,我们使用了CNN和RNN模型来进行文本分类。数据集包含了15万余项英文文本,情感分为0-4共五类情感。任务的流程如下:输入数据→特征提取→神经网络设计→结果输出。 在特征提取阶段,我们使用了词嵌入(Word embedding)技术。词嵌入是一种将单词映射到低维向量空间的方法,它可以将单词的语义信息编码为向量表示。在本次任务中,我们参考了博客\[NLP-Beginner 任务二:基于深度学习的文本分类\](https://pytorch.org/Convolutional Neural Networks for Sentence Classification)中的方法,使用了预训练的词嵌入模型。 神经网络设计阶段,我们采用了卷积神经网络(CNN)和循环神经网络(RNN)的结合。具体来说,我们使用了四个卷积核,大小分别为2×d, 3×d, 4×d, 5×d。这样设计的目的是为了挖掘词组的特征。例如,2×d的卷积核用于挖掘两个连续单词之间的关系。在模型中,2×d的卷积核用红色框表示,3×d的卷积核用黄色框表示。 最后,我们将模型的输出结果进行分类,得到文本的情感分类结果。这个任务的目标是通过深度学习模型对文本进行情感分类,以便更好地理解和分析文本数据。 #### 引用[.reference_title] - *1* *3* [NLP-Brginner 任务二:基于深度学习的文本分类](https://blog.csdn.net/m0_61688615/article/details/128713638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [NLP基本任务二:基于深度学习的文本分类](https://blog.csdn.net/Mr_green_bean/article/details/90480918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值