当前位置:   article > 正文

NLP作业02:课程设计报告_垃圾短信分类是属于什么nlp的模型

垃圾短信分类是属于什么nlp的模型
这个作业属于那个课程

自然语言课程

这个作业要求在哪里http://t.csdn.cn/04wrd
我在这个课程的目标是

(1) 了解垃圾短信识别的背景知识,分析步骤和流程。

(2) 掌握 Jieba 分词、去停用词等文本预处理方法与应用。

(3) 掌握文本数据的向量表示方法。

(4) 掌握朴素贝叶斯分类算法的原理与应用。

这个作业在那个具体方面帮助我实现目标使用不同模型对垃圾短信进行分类,对于分词、去停用词等流程更加熟悉,也了解不同模型的原理。
参考文献

(1)http://t.csdn.cn/TfpkQ

(2)http://t.csdn.cn/h8jHI

(3)http://t.csdn.cn/GYnb0

一、设计目的

垃圾短信内容往往是广告或者虚假信息,甚至是电脑病毒、情色、反动等不良信息,大量垃圾邮件的存在不仅会给人们带来困扰,还会造成网络资源的浪费。因此,我们对短信进行分类,将垃圾短信从中分离出来。

二、设计要求

针对某通讯运营商提供的短信文本数据,首先从原始数据集中抽取所需数据,再对其进行数据预处理,其中包括去除重复值、中文分词和停用词过滤,并通过绘制词云图检查数据分词效果,最后建立朴素贝叶斯(Naive Bayes) 分类模型,实现对垃圾短信的精确识别。

三、设计内容

  1. 分析垃圾短信识别的背景,明确分析目标。
  2. 垃圾短信识别的分析过程和方法。
  3. 对垃圾短信识别的文本梳理流程和分类模型构建步骤进行梳理。

四、设计过程

4.1数据抽取

加载pandasmatplotlib.pyplot库,通过read_csv函数message80W1.csv文件读取进来并对列名赋值,输出前五行数据。

4.2 查看正负样本分布情况

短信文本数据不同于标准的数值型数据,是由字符和字符串构成的短文本或长文本,不能进行常用的加减乘除或统计计算,而且因为中文的文字表达博大精深,数据中包含的内容更丰富,对于分析和处理而言也更麻烦。故在进行建模和统计分析之前,需要先分析这些文本数据的特性以确定后续的数据处理方法,这里先对正负样本的样本量分布做简单的分布分析,确保正负样本的数量偏差不相差太大,并绘制饼状图让数据更直观,可以看到正负样本量分布极不均衡,因此进行随机抽样保证正负样本的均衡。

4.3 数据预处理 

抽取出短信文本后,首先要对该文本数据进行预处理。短信文本中存在着各种各样的符号、字 母、数字等,如果将这些特殊符号也引进分词,在词频统计甚至文本建模中,不仅会消耗计算机内存,还会造成分析结果的偏差。那么在利用短信文本数据之前就必须对这个特殊符号进行处理,初步将这些无价值的数据清除掉。 对这些短信文本数据的预处理主要包括:特殊字符处理、文本数据去重、中文分词、停用词过滤。

4.3.1  文本清洗

 由于数据采集、保存或是短信大范围重复发送等问题,在大多数情况下,不同用户之间的短信都不会出现完全重复,如果出现了不同用户之间的短信完全重复,这些短信一般都是毫无意义的。这种短信显然只有一条短信文本有意义。部分短信相似程度极高,可是在某些词语的运用上存在差异。此类短信可归为重复,但若是删除文字相近评论,则会出现误删的情况。由于相近的短信也存在不少有用的信息,去除这类短信显然不合适。因此,为了存留更多的有用语料,对数据进行去重复以降低数据处理和建模过程的复杂度。

 数据中存在空格、Tab 键、回车键,这些数据对于结果分析都是无意义的,故在后的数据处理过程需要架将它们处理干净。

4.3.2 Jieba中文分词

分词是文本信息处理的基础环节,是将一个单词序列切分成一个一个单词的过程。准确的分词可 以极大的提高计算机对文本信息的是被和理解能力。相反,不准确的分词将会产生大量的噪声,严重干扰计算机的识别理解能力,并对这些信息的后续处理工作产生较大的影响。中文分词的任务就是把中文的序列切分 成有意义的词,即添加合适的词串使得所形成的词串反映句子的本意。

这里使用 Jieba 库进行中文文本的分词,以词作为基本单元,使用计算机自动对中文文本进行词语的切分,即使词之间有空格,这样方便计算机识别出各语句的重点内容。

4.3.3 去除停用词 

停用词一定程度上相当于过滤词,区别是过滤词的范围更大一些,包含情色、政治等敏感信息的关键词都会被视做过滤词加以处理,停用词本身则没有这个限制。通常意义上,停用词大致可分为如下两类。一类是使用十分广泛,甚至是过于频繁的一些单词。另一类是文本中出现频率很高,但实际意义又不大的词。这一类词主要包括了语气助词、副词、介词、连词等,通常自身并无明确意义,只有将其放入一个完整的句子中才有一定作用的词语。这些词语的使用较大的作用仅仅是协助一些文本的名词描述和概念表达,并没有太多的实际含义。

接下来根据上述停用词的定义整理出停用词库,并根据停用词库去除评论中的停用词。

4.4 绘制词云图 

词云图是文本结果展示的有利工具,通过词云图的展示可以对短信文本数据分词后的高频词予以视觉上的强调突出效果,从而达到过滤绝大部分的低频词汇文本信息的效果,使得阅读者一眼就可获取到文本的主旨信息。进行数据预处理后,可绘制词云查看分词效果,词云会将文本中出现频率较高的“关键词”予以 视觉上的突出。通过上述的一系列文本数据预处理之后,对词语进行词频统计,再使用wordcloud模块的WordCloud绘制词云 将垃圾短信与非垃圾短信分别进行可视化。

4.5 使用多种模型识别垃圾短信

采用贝叶斯模型、伯努利、逻辑回归分类器对垃圾短信进行识别。

4.5.1 构建词条文档矩阵

在文本问题中,词袋模型就是表示文本特征的一种方式,词袋模型只考虑一篇文档中单词出现的频率,用每个词出现的频率作为文档的特征。而短信文本属于短文本,因此我们需要利用分 词并去停用词之后的数据进行词频统计,从而得出文本特征。由于文本数据无法直接用于建模,因此需要将文本表示成计算机能够直接处理的形式,即文本数字化。词频文档矩阵即将文本数据进行数值化。创建文档词条矩阵以转换成符合支持向量机算法的数据形式,矩阵的行表示短信ID矩阵的列表示词语。

4.6 模型构建

在分类模型中,一般构造精确度、召回率、F1 值指标以评价模型分类效果,其中精度是分类结果及实际均为垃圾短信数和分类为垃圾短信总数的比率;召回率是指分类结果及实际均为垃圾短信数和实际为垃圾短信总数的比率。混淆矩阵就是汇总分类模型中分类正确和不正确的样本数目的矩阵。

4.6.1 朴素贝叶斯模型

朴素贝叶斯分类是一种十分简单的分类算法,朴素贝叶斯的思想基础是这样的:假设X的特征之间是独立的,互相不影响,这就是朴素贝叶斯中“朴素”的由来。对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

4.6.2 伯努利模型 

伯努利朴素贝叶斯,适用于离散变量,其假设各个特征xi在各个类别y下是服从n重伯努利分布(二项分布)的,因为伯努利试验仅有两个结果,因此,算法会首先对特征值进行二值化处理(假设二值化的结果为1与0)。

4.6.3 逻辑回归分类器 

逻辑回归属于线性分类器,通过Logistic函数(Sigmoid函数),将数据特征映射到0~1区间的一个概率值(样本属于正例的可能性),通过与0.5的比对得出数据所属的分类。

5.设计体会

这次课程设计我选择的是基于基于文本内容的垃圾短信识别的项目,在对代码进行改进之前,我在尝试运行原有代码这里花了很多时间,主要是在删去停用词、绘制词云图以及构建模型这几个地方出现了问题,于是我在网上查找相应的函数以及类似的代码,然后我发现停用词部分的代码是缺少了数据预处理函数封装这一步,导致两个后面需要用到的量没有定义,代码就报错了,词云图数据处理的地方代码没有问题,主要是绘制的函数设置错误了,查找了绘制词云图用到的函数,并对源代码进行修改后成功运行,构建模型的问题是部分量前面没有定义导致的。

在写代码以及解决问题的过程中,不仅考验了我对于相关知识的掌握度也对我的实操能力进行考验,我还学到了很多新的知识,解决各种错误也让我积累了更多经验。在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则,在老师讲解时就会听不懂,这将使你在做实验时的难度加大,浪费做实验的宝贵时间。比如做应变片的实验,你要清楚电桥的各种接法,如果你不清楚,在做实验时才去摸索,这将使你极大地浪费时间,使你事倍功半。

通过这次实验,使我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我受益匪浅。也使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的动手能力和独立思考的能力。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号