您的位置:首页 > 编程语言 > Python开发

SnowNLP 中文文本分析器基本用法

2017-08-13 22:54 399 查看
发现一篇SnowNLP写的蛮好的一个示例:NLP之淘宝商品评论情感分析,可以去看看这个案例,能更好的理解。

github地址:https://github.com/isnowfy/snownlp

作者大人的博客地址:浅谈中文分词

感觉还是蛮有意思的,这个东西是自带了一个词库,然后还可以进行情感分析,把繁体化简,把中文变成汉语拼音,还可以提取关键字,提取摘要(这个感觉666),还可以进行文本分类,对文本的相似性进行判断。

1.安装:pip3 install snownlp

2.基本用法:

from
snownlp import
SnowNLP
s = SnowNLP(u'一次满意的购物')
s.words

1) s.words        词语

2) s.sentences   句子

3) s.sentiments 情感偏向,0-1之间的浮点数,越靠近1越积极

4) s.pinyin         转为拼音

5) s.han             转为简体

6) s.keywords(n) 提取关键字,n默认为5

7) s.summary(n)  提取摘要,n默认为5

8) s.tf                   计算term frequency词频

9) s.idf                 计算inverse document frequency逆向文件频率

10) s.sim(doc,index)          计算相似度

这个sim的话,后面跟的是一个可以迭代的东西。

2.训练:

训练的文本是有要求的。

1)分词

比如说你要进行分词的话,首先先from snownlp import seg,然后通过seg.data_path可以看到词典的路径。

我的路径是:

/usr/local/lib/python3.6/site-packages/snownlp/seg/seg.marshal

然后你可以看到在同一个目录下,有个data.txt,这个就是训练的样本,打开样本可以发现:

迈/b 向/e 充/b 满/e 希/b 望/e 的/s 新/s 世/b 纪/e

中/b 共/m 中/m 央/e 总/b 书/m 记/e

这样的句子

其中b代表begin,m代表middle,e代表end,分别代表一个词语的开始,中间词和结尾,s代表single,一个字是一个词的意思。

将训练样本放入data1.txt中,进行训练:

seg.train('data1.txt')

如果下次还需要使用的话,将结果保留到seg2.marshal当中,使用的时候只要更改data_path改为seg2.marshal的路径即可。

2)情感分析

和上面一样,能看到/usr/local/lib/python3.6/site-packages/snownlp/sentiment里面有2个txt文件,neg.txt和pos.txt,这两个里放的是负向情感和正向情感的句子。所以在训练的时候也只需要这样子放入句子即可。

from snownlp import sentiment

sentiment.train(neg1.txt,pos1.txt)

sentiment.save('sentiment2.marshal')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  情感 nlp snownlp python