首先抓取网页上的数据,每一页十条评论,生成为一个txt文件。
数据链接
以下采用既有词典的方式:
准备四本词典,停用词,否定词,程度副词,情感词,链接也给出来:
[python] view plain copy
导入数据并且分词
[python] view plain copy
计算一下得分,注意,程度副词和否定词只修饰后面的情感词,这是缺点之一,之二是无法判断某些贬义词其实是褒义的,之三是句子越长得分高的可能性比较大,在此可能应该出去词的总数。
[python] view plain copy
[python] view plain copy
排序之后图标如下,可以看出积极正面的得分比较多,负面的比较少,根据原网页的评分确实如此,然而点评为1星的有1半得分为正,点评为5星的有四分之一得分为负。基于词典的方式严重依赖词典的质量,以及这种方式的缺点都可能造成得分的偏差,所以接下来打算利用word2vec试试。
词向量的变换方式如下:
[python] view plain copy
加载一下评分
[python] view plain copy
转换成词向量,发现里面有2个失败并且删除
[python] view plain copy
PCA降维并运用SVM进行分类
[python] view plain copy
降维后的准确度为auc=0.83,相比MLP神经网络的准确度0.823来说结果差不多,以下是MLP的代码。对于利用word2vec来说,其结果依赖于语料库的词语量大小,我打印了部分失败的词语如下,表明在语料库中并没有找到相关的词,导致向量的表达信息有所缺失。
[python] view plain copy
原文:http://blog.csdn.net/Jemila/article/details/62887907?locationNum=7&fps=1