随着互联网的发展,越来越多的人选择在网上消费,并且越来越的证据表明商品的评论信息会影响到消费者的消费决定。评论挖掘的主要任务是从评论中了解到用户对产品的哪些功能、属性进行了怎样的评论,并抽取成简短有效的信息。

评论挖掘主要有以下几个子任务:

识别、抽取产品特征

产品特征分为显示特征和隐含特征。

  • 显示特征
    显示特征是直接出现在产品的评论中,描述产品的性能或功能的名词或名词短语。
  • 隐含特征
    隐含特征没有在语句中直接进行描述,需要对句子进行语义理解才能得到,提取隐含特征需要自然语言的完全理解技术 。
    特征词满足以下三个条件之一:
    (1) 给定评论对象的一部分
    (2) 给的评论对象的一个属性
    (3) 给定评论对象的一个部分的一个属性
    特征提取分为人工标记和自动提取两种方法。人工标记一般由领域专家来完成。
    自动提取过程:对语料进行词性标注,提取其中的名词短语,利用关联规则挖掘出频繁项,在频繁项候选集上做密实度修剪和冗余修剪,去掉无用的短语和合并相似的短语。

特征语意去重

首先介绍一下什么是词向量和语言模型。
(1) 词向量就是用来将语言中的词进行数学化的一种方式。有了词向量之后就可以对词进行聚类、分类、计算相似度等等。
(2) 语言模型就是用来计算一个句子的概率的模型,简单来说就是判断一句话是不是正常人说出来的。常见的应用场景:机器翻译、语音识别得到若干候选之后,可以利用语言模型挑一个尽量靠谱的结果。

特征词去重采用聚类的方法对特征词进行聚类,归属于同一类的即为同义词。其中判断词语的相似度,采用计算特征词的词向量,然后计算向量间的相似度(例如计算向量夹角)的方法。

关于同义词聚类,Google推出的Word2Vec是一个不错的工具,关于Word2Vec的介绍请参考之前的博文:自然语言处理之Word2Vec 。其中一个思路是:用word2vec的到词向量然后用kmeans进行同义词聚类。

识别产品特征对应的观点词

对评论语料进行词法和依存句法分析生成三元组:
<Attribute, Subject, Value>
Subject:产品
Attribute:特征
Value:特征观点

分析评论的情感及强度

把用户评论句子切分为只包含一个特征词的短句并将评论抽象概括为<Holder, Topic, Sentimentl>
采用基于情感词典的方式计算短句的情感得分:

$$Score=\sum_{ w_i \in V} \frac{S_w}{dis(w_i, f)}$$

$w_i$ 代表句子中的情感词

V代表情感词典中情感词集合

$S_{w_i}$代表$w_i$在情感词典中的极性值

$f$代表该句子中的特征词

$dis(w_i, f)$代表在句子中情感词$w_i$与特征词f之间的距离,距离越远情感词$w_i$对特征词f的影响越小,因此赋予的权重也越小。

在此基础之上应用否定词、转折词规则以及基于上下文情感的连词规则和蕴含连词规则。最终计算得到短句的情感倾向得分。

后记

以上是针对中文的用户评论挖掘的一个大致粗略的过程,也算是对之前一个回答的补充:淘宝的评论归纳是如何做到的? - 慕希颜的回答 - 知乎
在进行挖掘前的一些数据清洗工作(例如计算评论的质量,去掉无效、低质量评论)就不详细介绍了,如有不对的地方请指正,谢谢。