monkey1302 / mining_comment

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Comment_mining

代码目标:从京东评论中,挖掘:1.产品特征,2.用户对于该特征的情感
例:某电视产品的一条用户评论为:“东西质量挺好的,送货也快,一直支持京东。”
预期提取到的特征是:[质量,送货]
对应的情感是:{质量:挺好, 送货: 快}

1.评论原始数据

从京东爬取的数据,存入到本地文件。
每个文件是一件商品下的所有评论,json格式(raw_comments文件夹中只放了两个文件做实例)

2.第三方库

A.中文NLP工具(面对非书面化语言,比结巴更准确一些)

哈工大LTP的python封装pyltp,安装分为两步:
第一步,正常情况下,可以通过pip install pyltp安装,不过经常会报错,挺麻烦的,需要自行排查。
第二步,下载“模型文件”,这个文件很重要,有了它才能使用LTP(代码中会调用这些文件),使用说明&下载地址: http://pyltp.readthedocs.io/zh_CN/develop/api.html

B.gensim的word2vec

pip install gensim

c.scikit-learn的kmeans

pip install scikit-learn

3.主要流程 (comment_mining.py)

3.1产品特征词提取

特征词提取的问题在于,由于评论很多,又都是口语化表达,同一意义的特征,可能在评论中会用不同词去描述。
比如:价格、价钱、价位, 其实说的都是同一个产品特征
结果中,我们需要把意思相近的词聚到一起,这就需要用到K-means聚类算法。
而K-means是针对向量而言的,这就需要把每个词向量化,并且同义词的向量应该距离相近。Word2vec正好可以满足这一需求。

A.特征词提取

利用LTP,对每句评论,进行分词和词性标注,提取出每句话的名词,作为备选特征。

B.特征词转换成词向量

利用Word2vec,获取每个特征词的对应向量(须提前训练,见4.2)

C.特征词聚类

现在每个词以向量表示,词义相近的词,向量也相近,因此可以利用K-means把词向量做聚类,预期情况下,词义相近的向量会聚到一类。

D.每类选举代表词

聚类后,每类特征词中,选一个代词表整个类,具体选取规则可以调整。

3.2情感词提取

情感词提取比较简单,在找到特征词后,只本文只在特征词相邻距离2以内的范围内,寻找形容词作为情感词

4.辅助步骤

4.1准备语料库(data2corpus.py)

为了训练word2vec模型,首先需要把原始评论转换成英文语料的形式。 其实就是 分词+去标点 例如:“我爱互联网。”-> “我 爱 互联网”

4.2训练Word2vec模型(w2v_training.py)

有了上一步生成的corpus.txt,可以把它加载到word2vec中,以此得到训练之后的model文件,(其实就是每个词对应的向量都存在这个文件里了)

About


Languages

Language:Python 100.0%