NeverStop 2018-11-07
近年来,人工智能算法被应用到了自然语言处理领域,获得了比传统模型更优秀的成果。如Bengio等学者基于深度学习的思想构建了神经概率语言模型,并进一步利用各种深层神经网络在大规模英文语料上进行语言模型的训练,完成了句法分析和情感分类等常见的自然语言处理任务,为大数据时代的自然语言处理提供了新的思路。
假如有一句话,我们的算法理解它是正面的评价,但是并不表示这句话的所有的内容都是正面的。也就是说这句话中可能有负面的评价,但是大部分是正面的评价,所以算法将其理解为正面评价。我们下面举一个例子:
比如有一句关于餐饮店的评论:这家店的体验还行(打了4颗星),但是拉面不行,不好吃(打了三颗星),但是寿司还不错,我非常喜欢(五颗星)。
我们可以将这个评论分成3个句子,其中评价了体验是4星的,拉面是3星的,寿司是5星的。分开之后我们就可以获取到我们想要的评价了,对于关心寿司的我来说,拉面就算是一星和我也没有什么关系,我现在只想要吃寿司。
将对参厅的评价拆分为句子
如上所示,我们将评价拆分为多个句子,每个句子形容的是餐厅的某一方面,是对餐厅某一方面的评价。那么我们就可以将每一个句子放入到句子情感分类器,最终得出这个句子是正情感还是负情感。
句子情感分类器
如上所示,现在有一个句子(全西雅图最好的寿司),我们将这个句子输入到句子情感的分类器,那么结果就可以得出这个句子是正向评价还是负向评价,这个就是主题预测情感的核心构造模块。
假如现在我们有这样的一个情感分类器,那么我们现在有一句评论,那么这个情感分类器如何运行的呢?
如下所示,我们将评价拆分为多个句子,我们找到这所有句子中和寿司有关的句子,我们将这些句子放入到句子情感分类器中,可以得出每一个句子的评价,所有句子评价的平均值就是我们想要的评价中关于寿司的评价分数。
情感分类器的原理
为了让情感分类器更加准确,我们可以为建立一个阈值情感分类器:
阈值情感分类器
阈值分类器很简单,我们看一句话中是正面词语个数多还是负面词语个数多,我们就可以确定这句话是正向情感,还是负向情感。
像这样简单的阈值分类器是有一些局限的,我们如何得到正面/负面的词语列表。也就是说什么词是正面的词,什么样的词是负面的词?
而且词语的情感度也是不同的:比如同样是好,那么Great>good,我们应该如何度量词语的情感度?
单个单词是无法做好分类的,Good是正面的,Not good是负面的,所以不能因为出现good就认为是积极的评价,因为有可能是not good,它是反面的。
阈值分类器的局限
既然简单的阈值分类器不太好用,我们可以使用线性分类器。
线性分类器:我们通过训练数据得到每个词语的权重(权重是训练得到的),要是正向积极的就打正分,要是负向积极的就打负分。,
线性分类器训练出来的词语权重表
有些单词和情感是无关的,所以我们可以设置其权重为0。
现在假如我们已经知道了每个词语的权重,那么我们就可以根据这些词语的权重来对句子进行评分,运行原理为:
简单线性分类器的原理
这个就是简单的线性分类器的原理,如下所示我们输入三个句子,这三个句子中分别有关键词great、awesome、terrible,那么我们去词语权重表中查找每个词的权重,输出是输入的简单的加权和,最后为2.2大于0,那么我们就认为这个评价是一个正向的评价。
线性分类器的示例
以上就是基于机器学习情感预测的一种非常常见的情感预测方式,应用非常的广泛。