互联网产品评论语料的观点挖掘
前阵子看到淘宝、百度等出了一个新的产品,用户评论观点挖掘的
具体的可看下面的图片
刚好手头上也有一些类似的评论语料数据,于是自己也摸索出了一些方法
下面简单的介绍介绍
一、 数据需求
相关网站产品评论数据
以下数据是通过爬虫抓取的,数据的字段如下
产品型号 |
评论标题 |
优点 |
缺点 |
总结 |
二、 算法
通过观测百度的那个产品,发现主要的做法就是产品特征+观点组成的,为止,首先要找出产品的特征词,然后再寻找搭配词,基本上就是这么一个过程,具体如下......
2.1特征词挖掘
通过开源分词软件分别对评论标题、优点、缺点、总结进行分词,统计出每个词(不区分词性)的词频,记为WordBag,WordBag包括俩个字段,词+词频。
同时统计词性为名词的词的词频,去除停用词后取出词频最大的前N个名词(默认为200),人工干预从个N名词中筛选出与产品相关的特征词(记为KeyWord)。
2.2搭配修饰词挖掘
记观点评价修饰词表为Mod(初始为空表),根据最近匹配原则寻找修饰词,令单条评论语料为P,对P进行分词,分词结果为FP,以词性标注为标点符号作为分隔符,将FP分为多个单一句子。
某用户对Iphone4S的优点评论如下:
P=“屏幕像素确实高,闪光灯也相当霸道,摄像也很清晰 跟数码相机可以相提并论”
分词结果为:
FP = 屏幕(名词) 像素(名词) 确实(副词) 高(形谓词) , (标点) 闪光灯(名词) 也(副词) 相当(副词) 霸道(形谓词) , (标点) 摄像(名词) 也(副词) 很(副词) 清晰(形谓词) 跟 (并列连词) 数码(名词) 相机(名词) 可以(能愿动词) 相提并论(动词)
以标点符号为分隔符将FP分成3个单一句子Fp1、Fp2、Fp3
Fp1=屏幕(名词) 像素(名词) 确实(副词) 高(形谓词)
Fp2=闪光灯(名词) 也(副词) 相当(副词) 霸道(形谓词)
Fp3=摄像(名词) 也(副词) 很(副词) 清晰(形谓词) 跟 (并列连词) 数码(名词) 相机(名词) 可以(能愿动词) 相提并论(动词)
对于每个句子,判断句子中的名词是否在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则是只对自己的数据进行观点挖掘。
对于某条已经被分为单一句子的字符串Fp1,该句子中可能存在多个不同的特征词跟修饰词,假设特征词有K个,修饰词有M个,则可能存在的组合共有
对于每一个组合结果中的搭配对,如果存在有搭配对的特征词ki与修饰词mj的位置偏移量大于3,则丢弃该组合,否则计算该组合的互信息和,即2.3中求出的互信息,如果组合中的某个搭配对在2.3中找不到相应的互信息,则该搭配对对应的互信息为0,最终求出所有满足要求的组合中互信息之和最大的组合,在组合结果中查询每个观点之间是否存在否定词“不”,如果存在,则将该词与之合并,其结果作为该句子的组合观点集,如Fp1的观点集为
{(像素,高),(屏幕,null)}={(像素,高)}
2.5观点映射
对于不同的人,在表达同一个观点的时候存在多种说法,例如(造型+漂亮) 跟(样子+不错),通过观点聚类可以对其进行合并,但准确度低,为此,可以通过人工干预对出现较频繁的观点进行合并,不频繁出现的可以丢弃。最终构造出一个观点映射库,将2.4中的观点结果进行映射后,统计每一个产品各个观点的频数,最终可得出每一个产品观点TopN。
三、 结果展现
套用经理的话说,我们只要做出来就可以了,UI方面是设计的事,不过本人闲得蛋疼想看一下效果,所以也弄了一个,观点太多的话比较杂,所以只取最热的10个观点进行展现,下面是Iphone4S的结果,来出来晾一晾