基于朴素贝叶斯模型的评论文本情感分析

2021-12-13 07:31周晓兰戴香平陈洪龙
科学技术创新 2021年33期
关键词:贝叶斯词典分类

周晓兰 戴香平 陈洪龙

(湖南科技大学计算机科学与工程学院,湖南湘潭 411201)

情感分析(Sentiment Analysis)是自然语言处理( Natural Language Processing , NLP )领域中的一个重要分支。文本情感分析关键是分析一组文本以理解其所表达的观点,一般使用正值或负值量化文本所表达的情绪。近年来,基于网络平台文本评论的情感分析越来越多,论文针对实时发送的文本数据使用朴素贝叶斯模型,对获得的文本数据,利用SnowNLP 进行情感分析,得出分析结果。

1 相关研究技术

1.1 文本情感分析

文本情感分析致力于将单词、句子和文档映射到一组相对应的情感类别上,继而得到一个可用于划分情感状态的心理学模型。[1]近年来,深度神经网络取得了极大的进展,各个主流领域,包括图像分类、机器翻译、自然语言处理、语音识别等,均依赖于深度学习技术提供的高层语义特征及分类方法。

1.2 SnowNLP 类库

SnowNLP 是适用于中文自然语言处理的Python 类库,专门针对中文文本进行挖掘,主要可以进行中文分词、词性标注、情感分析、文本分类、转换拼音、繁体转简体、提取文本关键词、提取摘要、分割句子、文本相似。[2]SnowNLP 类库中存在已经训练好的模型,因此,在实际使用的过程中,用户需要根据实际情况,重新训练模型。在重新训练模型的时候,必须修改调用模型的位置。

1.3 朴素贝叶斯模型

朴素贝叶斯模型是一种基于贝叶斯定理与特征条件独立假设的,非常简单、特别有效的分类器,主要应用在文本分类、垃圾邮件过滤、疾病诊断等领域。[3]

朴素贝叶斯算法具有很多优点,一是它有着坚实的理论基础;二是在训练和查询大量数据方面效率很高;三是能处理小规模的数据;四是即使存在缺失的数据,对分析的结果影响也不大;五是易于进行文本分类,分类结果容易被人理解。

朴素贝叶斯是基于贝叶斯决策理论的分类方法,对于朴素贝叶斯总是假设特征之间互不关联。例如对于c1 和c2 两个类别,其特征w1,w2,……,wn 之间是相互独立的,根据贝叶斯公式可知:

c1 的贝叶斯模型为:

P(c1w1,w2,……,wn)=P(w1,w2,……,wn|c1)*P(c1)/P(w1, w2,……,wn)

C2 的贝叶斯模型为:

P(c2|w1,w2,……,wn)=P(w1, w2,……,wn|c2)*P(c2)/P(w1, w2,……,wn)

其中:P(w1, w2,……,wn)=P(w1, w2,……,wn|c1)·P(c1)+P(w1, w2,……,wn|c2)·P(c2)。

贝叶斯模型训练是统计每一个特征出现的正类或负类的频次,统计好正类和负类数据就说明模型训练完毕。

贝叶斯模型预测是分别求出P (c1|w1,w2, ……,wn)> 和P(c2|w1,w2,……,wn)的值,然后根据贝叶斯分类准则判断。

如果P(c1|w1,w2,……,wn)> P(c2|w1,w2,……,wn),则属于c1类;如果P(c1|w1,w2,……,wn)

2 情感分析

2.1 情感分析基础

情感分析主要采用SnowNLP 中自然语言处理库进行核心情感分析。情感分析是在评论文本数据获取完成,且返回了正确的信号值后,再对获得的评论文本进行情感分析。获取的实时评论文本先是保存在数据库中,经过情感分析后,将分析的结果同样保存在数据库中,这些打分结果可以为其他应用提供有用的信息。

2.2 情感分析过程

2.2.1 采用朴素贝叶斯模型进行分类

朴素贝叶斯通过训练数据集的条件概率分布P(x|y)来学习联合概率。

首先用先验概率分布和条件概率分布来替代联合概率。

给定数据集:T={(x1,y1),(x2,y2),…,(xN,yN)};

输出的类别:yi∈{c1, c2, ...., ck}

贝叶斯条件概率是指在事件x 发生的情况下,事件y 发生的概率,用P(x|y)表示。先预估计一个“先验概率”,然后加入实验结果,看这个实验到底是增强还是削弱了“先验概率”,由此得到更接近事实的“后验概率”。

先验概率分布:

对于朴素贝叶斯模型,各个特征是相不关联的,可以得出条件概率分布:

各特征之间相互独立,后验概率分布:

根据分类公式,模型为:

贝叶斯模型训练的过程,实际上是统计每一个特征出现的频次,在SnowNLP 中,贝叶斯模型训练过程的核心内容是sentiment.train()。情感分析结果写入数据库。

2.2.2 采用SnowNLP 类库进行情感分析

SnowNLP 中支持情感分析的模块在文件夹sentiment 中,其核心代码在__init__.py。使用snownpl 类库进行情感分析时,使用到以下重要代码:

S=SnowNLP(source_data)

Result=S.sentiments

调用SnowNLP(source_data)创建了一个SnowNLP 类实例S,将需要进行情感分析的数据data,作为参数(object 类型)传入函数。调用S.sentiments,主要是通过类实例调用该类中的成员方法sentiments(),在该方法中再调用sentiment 文件中的classify( )方法,而后在classify( )方法中调用贝叶斯模型,就可以开始情感分析。

调用SnowNPL_analysis.analysis()和read_and_analysis()进行情感分析,得出分析结果。

在进行情感分析之前,根据业务需求确定是否要重新训练模型。业务场景要求模糊或者和商品评论的场景相差不大,可以直接使用已训练的模型进行简单情感分析,这种情况下得到的结果的准确度可以达到要求。如果业务场景非常明确,且要求结果非常准确,则需要用典型的语料建立语料库,重新训练模型,进行情感分析,以便达到更好的分析结果。系统要求分析直播平台的弹幕数据,弹幕数据短小精悍,且含有较多网络用语,场景非常明确,从而需要用直播平台典型的语料建立语料库(词典),重新训练模型。

3 实验结果

通过模型训练,初步获得新训练出来的适用于系统业务场景的新模型。为了对比训练模型与未训练模型的效果,模块事先预留了210 条测试数据(存放在Excel 表中),预留数据中122条来自网络上收集的常见的网络弹幕用语,另外88 条为直播间随机获取的实时弹幕数据。对于这210 条数据事先都作了人工情感标签标注label(消极为-1,积极为1)。

在测试中,设置打分结果大于或等于0.5 的为“积极”情感,设置打分小于0.5 的为“消极”情感,把模型情感分析输出grade值和模型预测的情感标签值predict 保存到到测试数据的Excel表中(1 对应“积极”,-1 对应“消极”),同时比对grade 和人工标注的label 标签相同的比率(比率越高,说明准确率越高)。对未经训练的模型和进过训练的模型进行测试,并保存结果。未经训练模型的测试结果如图1 所示,进过训练模型的测试结果如图2 所示。

图1 未经训练模型的测试结果图

图2 经过训练模型的测试结果图

2.3 模型训练

为了模型更加适应系统的应用场景,系统需要重新训练模型。模型训练采用基于词典与机器学习相结合的方式进行。对于文本分类来说,训练语料分类的准确性决定了情感分析结果的准确率,从而系统还要求从直播平台语境构建情感词典。

2.3.1 构建基础情感词典

训练模块从相对成熟的文本词典基础上进一步拓展情感词典,内容包括现有成熟情感词典、直播平台弹幕语、流行网络用语和其他网络词汇。系统最终采用知网情感词典和搜集的网络词汇作为情感词典。对于搜集的网络词汇,需要有人工情感标记,另外对于知网情感词典和搜集的网络词汇必须去重后才能作为最终的基础情感词典。系统对于最终词典分出正面情感(正训练样本)和负面情感(负训练样本),经过整理系统中正面情感词典和负面情感词典分别超过四千条。

2.3.2 训练模型

系统采用贝叶斯模型训练的方法,操作步骤如下:

第一步,准备正负情感分类的样本,将基础情感词典整理成一个正样本(保存为积极训练.txt),和一个负样本(保存为消极训练.txt);

第二步,利用sentiment.train()方法训练新的模型(正样本和负样本作为sentiment.train()的参数传入);

第三步,利用sentiment.save()方法保存最近一次训练的模型;

第四步,利用最近一次训练的模型进行情感分析,注意在采用最近一次训练模型进行后续情感分析时需要修改训练模型的路径(即需要正确传入最近一次训练好的模型位置)。

在相同的消极测试样本下,未训练的模型输出的情感分析结果中,predict 字段标注的值(1,-1)与人工标注的情感标签值(1,-1)有很多是不一致的,即模型的准确度不高,说明没有重新训练的模型(采用SnowNLP 自带的旧模型)是不适用于本直播平台的语境的;而在训练过后,用同样的方式去分析,就会发现label 字段和predict 字段的一致性有很大的提升,积极的测试样本同理。

通过9000 多条数据的训练,在200 多条数据的测试下,未训练时情感分析的准确率为57.1%,经过训练的模型情感分析准确率达到85.7%。从这个结果可以得出:模型训练过程是有效的。

从上文可知,初步的训练是有成效的,后续需要对模型进行持久的训练,才能让模型情感分析效果越来越优秀。持续化训练方式为每次进行情感分析后,筛选当次情感分析打分结果中小于0.1 的极端负面评论,将其自动添加入消极训练文本,然后判断消极训练文本中有无通过情感分析新写入的语料,有则调用模型训练的方法进行一轮模型训练。通过这种自动化的训练机制,可以随着系统的持续运行,持续提升情感分析模型的准确度。

结束语

从测试效果可以看出,系统达到了情感分析效果,但还是存在一定的局限性,由于实时获取在线数据的速度较慢、数量不够丰富,导致整体效率和效果理想;另外,朴素贝叶斯模型存在一定的问题,比如,在模型中进行分类决策时有差错率;对输入数据的形式要求较高;它使用了样本独立性假设,但在人们的实际生活中,样本的属性其实是相关联的。

当前网络文本挖掘的研究发展迅速,其中网络评论情感分析这个技术领域也十分热门。随着情感分析软件开发日渐完善,它能够实现对网络直播平台评论(舆论)的正确引导与控制,情感分析领域前景非常广阔。

猜你喜欢
贝叶斯词典分类
基于贝叶斯定理的证据推理研究
基于贝叶斯解释回应被告人讲述的故事
米兰·昆德拉的A-Z词典(节选)
米沃什词典
词典引发的政治辩论由来已久 精读
租赁房地产的多主体贝叶斯博弈研究
租赁房地产的多主体贝叶斯博弈研究
按需分类
教你一招:数的分类
说说分类那些事