二、 算法

通过观测百度的那个产品,发现主要的做法就是产品特征+观点组成的,为止,首先要找出产品的特征词,然后再寻找搭配词,基本上就是这么一个过程,具体如下......

2.1 特征词挖掘

通过开源分词软件分别对评论标题、优点、缺点、总结进行分词,统计出每个词(不区分词性)的词频,记为 WordBag WordBag 包括俩个字段,词+词频。

同时统计词性为名词的词的词频,去除停用词后取出词频最大的前 N 个名词(默认为200),人工干预从个 N 名词中筛选出与产品相关的特征词(记为 KeyWord )。

2.2 搭配修饰词挖掘

记观点评价修饰词表为 Mod(初始为空表) ,根据最近匹配原则寻找修饰词,令单条评论语料为 P ,对 P 进行分词,分词结果为 FP ,以词性标注为标点符号作为分隔符,将 FP 分为多个单一句子。

某用户对Iphone4S的优点评论如下:

P =“屏幕像素确实高,闪光灯也相当霸道,摄像也很清晰 跟数码相机可以相提并论”

分词结果为:

FP = 屏幕(名词) 像素(名词) 确实(副词) 高(形谓词) , (标点) 闪光灯(名词) 也(副词) 相当(副词) 霸道(形谓词) , (标点) 摄像(名词) 也(副词) 很(副词) 清晰(形谓词) 跟 (并列连词) 数码(名词) 相机(名词) 可以(能愿动词) 相提并论(动词)

以标点符号为分隔符将 FP 分成3个单一句子Fp 1 、Fp 2 、Fp 3

Fp 1 =屏幕(名词) 像素(名词) 确实(副词) 高(形谓词)

Fp 2 =闪光灯(名词) 也(副词) 相当(副词) 霸道(形谓词)

Fp 3 =摄像(名词) 也(副词) 很(副词) 清晰(形谓词) 跟 (并列连词) 数码(名词) 相机(名词) 可以(能愿动词) 相提并论(动词)

对于每个句子,判断句子中的名词是否在 KeyWord 中存在,如果存在,则标记该名词的位置,假设该名词在句子中的第 k 个位置,则判断 k -3到 k +3中是否存在修饰词(形容词或形谓词),如果存在,则生成特征词+修饰词搭配对,例如上面中可生成搭配对(屏幕+高 和 像素+高),则生成(闪光灯+霸道),生成(摄像+清晰)

2.3 搭配词挖掘

在2.2挖掘出来的搭配词对中,每个搭配词对都是由[特征词( K) +修饰词( M) ]组成的,则 k m 的互信息( 其实不是标准互信息的求法,不过这个算法的结果感觉还可以 )为

其中N为评论语料的记录数,即一共有多少个用户进行评论

|| k,m ||表示[特征词( K) +修饰词( M) ]在2.2的结果中出现的次数

|| k ||表示特征词( K) 在中对应 WordBag 的频数

|| m ||表示修饰词( M) WordBag 中对应的频数

2.4 句子观点挖掘

2.2和2.3是结合其他网站数据进行挖掘的,2.4则是只对自己的数据进行观点挖掘。

对于某条已经被分为单一句子的字符串 Fp 1 ,该句子中可能存在多个不同的特征词跟修饰词,假设特征词有 K 个,修饰词有 M 个,则 可能存在的组合共有

对于每一个组合结果中的搭配对,如果存在有搭配对的特征词 k i 与修饰词 m j 的位置偏移量大于3,则丢弃该组合,否则计算该组合的互信息和,即2.3中求出的互信息,如果组合中的某个搭配对在2.3中找不到相应的互信息,则该搭配对对应的互信息为0,最终求出所有满足要求的组合中互信息之和最大的组合,在组合结果中查询每个观点之间是否存在否定词“不”,如果存在,则将该词与之合并,其结果作为该句子的组合观点集,如 Fp 1 的观点集为

{(像素,高),(屏幕,null)}={(像素,高)}

2.5 观点映射

对于不同的人,在表达同一个观点的时候存在多种说法,例如(造型+漂亮) 跟(样子+不错),通过观点聚类可以对其进行合并,但准确度低,为此,可以通过人工干预对出现较频繁的观点进行合并,不频繁出现的可以丢弃。最终构造出一个观点映射库,将2.4中的观点结果进行映射后,统计每一个产品各个观点的频数,最终可得出每一个产品观点 TopN

三、    结果展现

套用经理的话说,我们只要做出来就可以了,UI方面是设计的事,不过本人闲得蛋疼想看一下效果,所以也弄了一个,观点太多的话比较杂,所以只取最热的10个观点进行展现,下面是Iphone4S的结果,来出来晾一晾