《自然语言处理技术》——实训11 垃圾短信分类.docx

上传人:极速器 文档编号:591420 上传时间:2025-09-01 格式:DOCX 页数:6 大小:17.88KB
下载 相关 举报
《自然语言处理技术》——实训11 垃圾短信分类.docx_第1页
第1页 / 共6页
《自然语言处理技术》——实训11 垃圾短信分类.docx_第2页
第2页 / 共6页
《自然语言处理技术》——实训11 垃圾短信分类.docx_第3页
第3页 / 共6页
《自然语言处理技术》——实训11 垃圾短信分类.docx_第4页
第4页 / 共6页
《自然语言处理技术》——实训11 垃圾短信分类.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、项目3深入文本进阶处理垃圾短信分类1实训目标(1) 能够进行中文分词和去除停用词的操作。(2) 掌握TF-IDF向量化器的使用以及对应的向量化文本数据的方法。(3) 掌握skleam库中MultinomialNB分类模型的使用方法。(4) 掌握模型评估中的计算准确率与模型优化的方法。2实训环境环境版本说明Windows1064电脑操作系统Python3.8.5Python语言版本pandas1.3.0主要用于数据读取、清洗等操作NumPy1.21.6主要用于Python中的数值计算jieba0.42.1主要用于文本分词Gensim4.2.0主要用于检索文本、计算文本相似度、训练词向量、建模主题

2、等Matplotlib3.3.0主要用于数据可视化PaddlePaddle2.4.2是一个深度学习框架,提供了高效的计算框架和优化算法PaddleSpeech1.2.0主要用于语音和音频中的各种关键任务的开发scikit-leam1.0.2广泛地用于统计分析和机器学习建模等数据科学领域Librosa0.8.1主要用于分析一般的音频信号,是一个非常强大的Python语音信号处理的第三方库NLTK3.5是一个常用的自然语言处理工具包,可用于文本处理、语义分析、词性标注等SciPy1.7.3是一个科学计算工具包,可用于数学、科学、工程学等领域pyttsx32.9.0主要用于将文本转换成语音3实训说明

3、垃圾短信分类任务是指将一组给定的短信文本进行分类,判定其是否为垃圾短信。该任务通常是一个二分类问题,其中垃圾短信被视为正类,非垃圾短信被视为负类。垃圾短信分类任务的目的是让计算机自动识别垃圾短信,以便有效地过滤掉垃圾信息,提高用户体验和安全性。常见的应用包括垃圾短信过滤和网络安全等领域。因此,垃圾短信分类任务的研究和应用不仅是为了提高用户体验和安全性,更是为了践行社会主义核心价值观中的公正、法治等原则,推动社会主义现代化国家建设和网络治理的进步。垃圾短信分类的基本流程如图3-1所示。数据预处理一特征工程一模型训练一模型评估图3-1垃圾短信分类的基本流程4实训步骤4.1 数据预处理数据预处理需要

4、经过加载停用词表、加载数据集、中文分词和去除停用词的步骤。数据预处理如代码3-1所示。代码3-1数据预处理importjieba#导入jieba库importpandasaspd#导入pandas库importnltk#导入nltk库fromnltk.corpusimportstopwords#导入停用词# 加载停用词表withOPenc./data/StoPWOrdSHlT.txt,T)asf:stop_words=line.strip()forlineinf.readlines()#加载停用词表并去重# 加载数据集data=pd.read_table(./data/junk_message

5、txt,sep=t,header=None,names=,labe,content)#读取文本文件,使用制表符分隔,没有表头,指定列名为label和content# 中文分词和去除停用词defcut_words(text):#定义cut_words函数words=wordforwordinlist(jieba.cut(text)ifwordnotinstop_words#对文本进行分词,并去除停用词return,.join(words)#返回分词后的文本,单词之间用空格分隔data,content=datacontent,.apply(cut_words)#对dataconten门中的文本进

6、行分词和去除停用词的处理Print(第1个文本的分词结果为:,cut_words(datacontent0)#输出第1个文本的分词结果运行代码3-1,得到数据预处理结果如下。第1个文本的分词结果为:商业秘密秘密性维系商业价值垄断地位前提条件4.2 特征工程特征工程需要经过初始化TF-IDF向量化器、对文本数据进行向量化处理、获取文本标签的步骤,从中提取出最能代表数据特征的信息。特征工程如代码3-2所示。代码3-2特征工程fromskleam.feature_extraction.textimportTfidfVectorizer#提取特征Vectorizer=TfidfVectorizerO#

7、初始化TF-IDF向量化器X=vectorizer.fit_transfonn(datacontent)#对文本数据进行向量化处理,生成tf-idf矩阵y=datalabe#获取文本标签Print(“文本向量为:n”,X)运行代码3-2,得到文本向量化后结果,部分结果的展示如下。文本向量为:(0,1313)0.3779644730092272(0,1799)0.3779644730092272(1,3089)0.23273798677957954.3 模型训练模型训练需要先划分数据集,导入所需模块,最后训练模型,从而生成一个能够对新数据进行预测或分类的模型。模型训练如代码3-3所示。代码3-3

8、模型训练fromskleam.model_selectionimporttrain_test_split#导入train_test_split模块# 划分数据集X_train,X_test,y_train,yest=train_test_split(X,y,test_size=0.2,random_state=42)# 导入MultinomiaINB模块和accuracy_scorefl_score模块fromsklearn.naive_bayesimportMultinomialNBfromskleam.metricsimportaccuracy_score,fl_score# 训练模型Cl

9、f=MultinomialNBO#构建先验概率为多项式分布的贝叶斯分类模型clf.fit(X_train,y_train)MUltinomiaINB是一种朴素贝叶斯分类器,它适用于离散特征的分类问题(如文本分类),它是基于贝叶斯定理的一种分类方法,假设特征之间相互独立,在处理文本分类问题时,特征通常是单词的出现频率。MultinomialNB函数的常用参数说明如表3-1所示。表3-1MultinomialNB函数的常用参数说明参数名称参数说明alpha接收noat,表示平滑参数,用于避免概率为0的情况,通常取值在01之间。默认为1.0fit_prior接收bool,表示是否学习类的先验概率。默

10、认为TrUeCIaSS_prior接收numpy数组,表示类的先验概率,若指定,则不根据数据自动计算先验概率。默认为None4.4 模型评估模型评估需要预测测试集的标签并计算准确率,以便选择最佳的模型并进行优化。模型评估如代码3-4所示。代码3-4模型评估#预测并评估模型y_pred=Clfpredict(Xjest)#预测测试集的标签acc=accuracy_score(y_test,y_pred)#计算准确率Printc准确率为:,acc)在Python中可以使用Skleam库中的accuracy_score函数计算分类准确率,accuracy_score函数的常用参数如表3-2所示。表3

11、2accuracy_score函数的常用参数说明参数名称参数说明y_pred接收numpy数组,表示分类模型的预测结果。无默认值y_true接收numpy数组,表示分类的真实标签。无默认值运行代码3-4,得到模型评估准确率结果如下。准确率为:0.8863636363636364从得到的准确率结果可以看出,垃圾短信分类模型可以得到较好的效果,基本能够将垃圾短信和正常短信进行区分。5实训小结技术点自评达标未达标能熟练完成中文分词和去除停用词能使用TF-IDF向量化器对文本数据进行向量化能使用MultinomialNB构建分类模型能计算模型准确率心得体会(如遇到的问题及解决方法、存在的不足之处等),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 人工智能

宁ICP备18001539号-1