基于主题模型的文本情感分析系统主要包括以下部分:

评论信息采集与预处理(如网页爬取、中文分词、停用词处理等)、主题抽取、情感词抽取(可能涉及到情感词典构建)、主题的情感分类或评分、主题情感摘要生成(方便用户直接了解主题)、系统评测等。

此外,当前的基于主题模型的文本情感分析技术主要侧重于文本评论,而较少关注与客服人员的文本问答或者语音咨询;而后者对于挖掘用户需求也是有意义的。

文本情感极性分析:
目前常见的情感极性分析方法主要是两种:基于情感词典的方法和基于机器学习的方法。

基于情感词典的方法:

基于情感词典的文本情感分类规则比较机械化。简单起见,我们将每个积极情感词语赋予权重1,将每个消极情感词语赋予权重-1,并且假设情感值满足线性叠加原理;然后我们将句子进行分词,如果句子分词后的词语向量包含相应的词语,就加上向前的权值,其中,否定词和程度副词会有特殊的判别规则,否定词会导致权值反号,而程度副词则让权值加倍。最后,根据总权值的正负性来判断句子的情感。基本的算法如图。

文本情感分析_情感分类

★ 更新/新增情感词典库的方法:

对所有词频为正和为负的分别统计各个词频,我们发现,新词语“黑心”在负面评论中出现很多次,但是在正面评论中几乎没有出现,那么我们就将黑心这个词语添加到我们的消极情感词典中。

词典方法和机器学习方法的区别:(词典方法以SnowNLP为例)

1. 使用词典不能区分情感上的程度级别,如“非常好看”和“好看”的情感判别概率分数是一样的

2. 词典判断不出含否定词的情况

文本情感分析_机器学习_02

3. 由于语义表达的丰富性,词典匹配会出现很大的误差,判断不出一些中性词或正词反用或反词正用的情况,如“油耗高”(高是正面的词汇,但表达的是负面的意思)、”话费减少了“(减少是负面的词汇,但表达的是正面的意思),【奥结局这类问题需要用到深度学习,机器学习可能也没办法完全解决】。而机器学习的方法精确度更高,可使用的场景更多样。无论是主客观分类还是正负面情感分类,机器学习都可以完成任务。

4. 词典的语料是通用的,无论是手机、电脑这些商品,还是书评、影评这些语料,都可以适用。但机器学习则极度依赖语料,把手机语料训练出来的的分类器拿去给书评分类,那是注定要失败的。

5. 词典匹配是直接计算文本中的情感词,得出它们的情感倾向分值。而机器学习方法的思路是先选出一部分表达积极情感的文本和一部分表达消极情感的文本,用机器学习方法进行训练,获得一个情感分类器。再通过这个情感分类器对所有文本进行积极和消极的二分分类。

基于机器学习的方法:

主要会用到nltk、scikit-learn(机器学习)或深度学习的程序包,参考http://www.360doc.com/content/16/0725/19/15165994_578332920.shtml

nltk 主要负责处理特征提取(双词或多词搭配需要使用nltk 来做)和特征选择(需要nltk 提供的统计方法);

scikit-learn 或深度学习包主要负责分类算法,评价分类效果,进行分类等任务。

1.  有监督意味着需要人工标注,需要人为的给文本一个类标签 —— “积极”或“消极”

2.  特征选择:从评论中的所有切分后的单词、 双词搭配、三词搭配中挑选出合适的特征。

           比如这句话“手机非常好用!”,我给了它一个类标签“Positive”。里面有四个词(把感叹号也算上),“手机”,“非常”,“好用”,“!”。我可以认为这4个词都对分类产生了影响,都是分类的依据。也就是无论什么地方出现了这四个词的其中之一,文本都可以被分类为“积极”。这个是把所有词都作为分类特征。

3.   降维(词向量化):通过一定的统计方法找到信息量丰富的特征。

      特征降维说白了就是减少特征的数量。这有两个意义,一个是特征数量减少了之后可以加快算法计算的速度(数量少了当然计算就快了),另一个是如果用一定的方法选择信息量丰富的特征,可以减少噪音,有效提高分类的准确率。

 4. 转换成适合的特征形式:在使用分类算法进行分类之前,第一步是要把所有原始的语料文本转化为特征表示的形式。

     在NLTK 中,所选择作为特征词其形式是这样的:[ {“手机”: True, “非常”: True, “好用”: True, “!”: True} , positive]

 5. 把用特征表示之后的文本分成开发集和测试集,把开发集分成训练集和开发测试集。

 6. 用不同的分类算法给训练集构建分类器,用开发测试集检验分类器的准确度(选出最佳算法后可以调整特征的数量来测试准确度)。

在选出最好的分类算法之后,就可以测试不同的特征维度对分类准确度的影响了。一般来说,特征太少则不足以反映分类的所有特点,使得分类准确率低;特征太多则会引入噪音,干扰分类,也会降低分类准确度。所以,需要不断的测试特征的数量,这样才可以得到最佳的分类效果。

 7. 选择出开发集中最佳的分类算法和特征维度,使用测试集检验得出情感分类的准确度。

参考:

2)https://www.jianshu.com/p/158c3f02a15b

3)https://spaces.ac.cn/archives/3414