NLP之淘宝商品评论情感分析

浏览: 9361

前言

最近学习NLP,还在初级阶段,上次jieba分词那篇写完,还在学习哈工大的pyltp。

发现一个比较有趣的中文类库:snownlp

SnowNLP是一个Python写的类库,可以方便的处理中文文本内容。


使用环境

Python3


Features

  • 中文分词(Character-Based Generative Model)

  • 词性标准(TnT 3-gram 隐马)

  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)

  • 文本分类(Naive Bayes)

  • 转换成拼音

  • 繁体转简体

  • 提取文本关键词(TextRank算法)

  • 提取文本摘要(TextRank算法)

  • tf,idf

  • Tokenization(分割成句子)

  • 文本相似(BM25)

  • 支持python3

安装snownlp

在cmd下输入:pip3 install snownlp

(ps:为什么用pip3而不用pip,在之前的文章中已经说过原因)

Clipboard Image.png

如图,我之前已经安装过


snownlp分词

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

['一', '次', '满意', '的', '购物']


PS:这里使用的是它自带的词典

snownlp情感分析

这里的情感分析结果是【0,1】区间上的一个值,越接近1,情感越积极,越接近0,情感越消极。

或者可以理解为positive的概率。


s.sentiments#positive的概率

0.8463107097139686


汉语转拼音

s.pinyin

['yi', 'ci', 'man', 'yi', 'de', 'gou', 'wu']


繁体字转简体

s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
s.han

'「繁体字」「繁体中文」的叫法在台湾亦很常见。'


提取文章关键词

text = u'''
自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。因此,自然语言处理是与人机交互的领域有关的。在自然语言处理面临很多挑战,包括自然语言理解,因此,自然语言处理涉及人机交互的面积。在NLP诸多挑战涉及自然语言理解,即计算机源于人为或自然语言输入的意思,和其他涉及到自然语言生成。
现代NLP算法是基于机器学习,特别是统计机器学习。机器学习范式是不同于一般之前的尝试语言处理。语言处理任务的实现,通常涉及直接用手的大套规则编码。
许多不同类的机器学习算法已应用于自然语言处理任务。这些算法的输入是一大组从输入数据生成的"特征"。一些最早使用的算法,如决策树,产生硬的if-then规则类似于手写的规则,是再普通的系统体系。然而,越来越多的研究集中于统计模型,这使得基于附加实数值的权重,每个输入要素柔软,概率的决策。此类模型具有能够表达许多不同的可能的答案,而不是只有一个相对的确定性,产生更可靠的结果时,这种模型被包括作为较大系统的一个组成部分的优点。
自然语言处理研究逐渐从词汇语义成分的语义转移,进一步的,叙事的理解。然而人类水平的自然语言处理,是一个人工智能完全问题。它是相当于解决中央的人工智能问题使计算机和人一样聪明,或强大的AI。自然语言处理的未来一般也因此密切结合人工智能发展。
'''

s = SnowNLP(text)

s.keywords(4)#提取关键词

['语言', '自然', '计算机', '涉及']


总结文章

s.summary(3)

['许多不同类的机器学习算法已应用于自然语言处理任务', '在NLP诸多挑战涉及自然语言理解', '包括自然语言理解']


切分为句子

s.sentences
['自然语言处理(NLP)是计算机科学',
'人工智能',
'语言学关注计算机和人类(自然)语言之间的相互作用的领域',
'因此',
'自然语言处理是与人机交互的领域有关的',
'在自然语言处理面临很多挑战',
'包括自然语言理解',
'因此',
'自然语言处理涉及人机交互的面积',
'在NLP诸多挑战涉及自然语言理解',
'即计算机源于人为或自然语言输入的意思',
'和其他涉及到自然语言生成',
'现代NLP算法是基于机器学习',
'特别是统计机器学习',
'机器学习范式是不同于一般之前的尝试语言处理',
'语言处理任务的实现',
'通常涉及直接用手的大套规则编码',
'许多不同类的机器学习算法已应用于自然语言处理任务',
'这些算法的输入是一大组从输入数据生成的"特征"',
'一些最早使用的算法',
'如决策树',
'产生硬的if-then规则类似于手写的规则',
'是再普通的系统体系',
'然而',
'越来越多的研究集中于统计模型',
'这使得基于附加实数值的权重',
'每个输入要素柔软',
'概率的决策',
'此类模型具有能够表达许多不同的可能的答案',
'而不是只有一个相对的确定性',
'产生更可靠的结果时',
'这种模型被包括作为较大系统的一个组成部分的优点',
'自然语言处理研究逐渐从词汇语义成分的语义转移',
'进一步的',
'叙事的理解',
'然而人类水平的自然语言处理',
'是一个人工智能完全问题',
'它是相当于解决中央的人工智能问题使计算机和人一样聪明',
'或强大的AI',
'自然语言处理的未来一般也因此密切结合人工智能发展']

接下来,进入正题!

from snownlp import seg#现在提供训练的包括分词,词性标注,情感分析,而且都提供了我用来训练的原始文件 以分词为例 分词在snownlp/seg目录下

用data.txt可以用于训练

Clipboard Image.png

seg.train('C:\Anaconda3\Lib\site-packages\snownlp\seg\data.txt')
seg.save('seg.marshal')

这样训练好的文件就存储为seg.marshal

训练情感

from snownlp import sentiment
sentiment.train('C:/Anaconda3/Lib/site-packages/snownlp/sentiment/negtive1.txt','C:/Anaconda3/Lib/site-packages/snownlp/sentiment/positive1.txt')#注意路径斜线别写错
sentiment.save('C:/Anaconda3/Lib/site-packages/snownlp/sentiment/sentiment2.marshal')

Clipboard Image.png


这些训练内容是自己找的,可以是情感积极消极词库,也可以是爬到的淘宝积极消极情感文档。


Clipboard Image.pngClipboard Image.png


Clipboard Image.png


训练好了就可以计算情感啦~

q = SnowNLP(u'宝贝真的很不错,,这是我第二次买了,我的朋友都好喜欢,穿上特别漂亮!好性感!质量好好!大爱!')
q.sentiments

0.9999498509266149

q = SnowNLP(u'非常的好,穿上美美哒,喜欢的美美放心购买好了,料子穿着很舒。')
q.sentiments

0.9999498509266149

q = SnowNLP(u'布料不好,不建议购买')
q.sentiments

0.367781463800559

q = SnowNLP(u'好重的味道,好难闻,而且严重掉色,请大家还是要看过再买吧')
q.sentiments

0.2997962754770197

q = SnowNLP(u'太失望了')
q.sentiments

0.1322809488637342

q = SnowNLP('东西很好')
q.sentiments

0.7811183413508497

q = SnowNLP('辣鸡店主,败我钱财,毁我青春')
q.sentiments

0.9774554349848498


最后这个不科学。。。【捂脸】

一定是训练集太小啦~,还需要扩充训练集

推荐 6
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

3 个评论

非常可以,很不错
Hi, 你好,我想问问你python 3 win 10系统下,怎么成功安装pyltp 的呢?我安装的时候总是报各种错误,也百度了很多错误的解决方法,但是最终的错误是can not run rc. exe,网上也有相应的解决办法,但是,我的Windows SDK下并没有这个程序,所以我想问问你的pyltp 是如何安装成功的呢?
你好,我想问一下那个具体是怎样训练的,能否指点一二

要回复文章请先登录注册