二、
算法
通过观测百度的那个产品,发现主要的做法就是产品特征+观点组成的,为止,首先要找出产品的特征词,然后再寻找搭配词,基本上就是这么一个过程,具体如下......
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的结果,来出来晾一晾