天猫商品评论情感词分析(基于SnowNLP)

简介

SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。而且SnowNLP非常适合商品评论的情感词分析。

参考链接: https://github.com/isnowfy/snownlp

功能

  • 中文分词(Character-Based Generative Model
  • 词性标注(TnT 3-gram 隐马)
  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
  • 文本分类(Naive Bayes)
  • 转换成拼音(Trie树实现的最大匹配)
  • 繁体转简体(Trie树实现的最大匹配)
  • 提取文本关键词(TextRank算法)
  • 提取文本摘要(TextRank算法)
  • tf,idf(信息衡量)
  • Tokenization(分割成句子)
  • 文本相似(BM25

功能介绍

安装

pip install snownlp

功能

from snownlp import SnowNLP

text = u'''
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。
'''
s=SnowNLP(text)

# 1、分词
print(s.words)

['自然', '语言', '处理', '是', '计算机', '科学', '领域', '与', '人工', '智能', '领域', '中', '的', '一个', '重要', '方向', '。', '它', '研究', '能', '实现', '人', '与', '计算机', '之间', '用', '自然', '语言', '进行', '有效', '通信', '的', '各种', '理论', '和', '方法', '。', '自然', '语言', '处理', '是', '一', '门融', '语言', '学', '、', '计算机', '科学', '、', '数学', '于', '一体', '的', '科学', '。', '因此', ',', '这', '一', '领域', '的', '研究', '将', '涉及', '自然', '语言', ',', '即', '人们', '日常', '使用', '的', '语言', ',', '所以', '它', '与', '语言学', '的', '研究', '有着', '密切', '的', '联系', ',', '但', '又', '有', '重要', '的', '区别', '。', '自然', '语言', '处理', '并', '不', '是', '一般', '地', '研究', '自然', '语言', ',', '而', '在于', '研制', '能', '有效', '地', '实现', '自然', '语言', '通信', '的', '计算机', '系统', ',', '特别', '是', '其中', '的', '软件', '系统', '。', '因而', '它', '是', '计算机', '科学', '的', '一', '部分', '。']

# 2、词性标注
tags=[x for x in s.tags]
print(tags)

[('自然', 'n'), ('语言', 'n'), ('处理', 'v'), ('是', 'v'), ('计算机', 'n'), ('科学', 'n'), ('领域', 'n'), ('与', 'c'), ('人工', 'b'), ('智能', 'n'), ('领域', 'n'), ('中', 'f'), ('的', 'u'), ('一个', 'm'), ('重要', 'a'), ('方向', 'n'), ('。', 'w'), ('它', 'r'), ('研究', 'v'), ('能', 'v'), ('实现', 'v'), ('人', 'n'), ('与', 'p'), ('计算机', 'n'), ('之间', 'f'), ('用', 'v'), ('自然', 'a'), ('语言', 'n'), ('进行', 'v'), ('有效', 'a'), ('通信', 'vn'), ('的', 'u'), ('各种', 'r'), ('理论', 'n'), ('和', 'c'), ('方法', 'n'), ('。', 'w'), ('自然', 'n'), ('语言', 'n'), ('处理', 'v'), ('是', 'v'), ('一', 'm'), ('门融', 'q'), ('语言', 'n'), ('学', 'v'), ('、', 'w'), ('计算机', 'n'), ('科学', 'n'), ('、', 'w'), ('数学', 'n'), ('于', 'p'), ('一体', 'n'), ('的', 'u'), ('科学', 'n'), ('。', 'w'), ('因此', 'c'), (',', 'w'), ('这', 'r'), ('一', 'm'), ('领域', 'n'), ('的', 'u'), ('研究', 'vn'), ('将', 'd'), ('涉及', 'v'), ('自然', 'a'), ('语言', 'n'), (',', 'w'), ('即', 'v'), ('人们', 'n'), ('日常', 'b'), ('使用', 'vn'), ('的', 'u'), ('语言', 'n'), (',', 'w'), ('所以', 'c'), ('它', 'r'), ('与', 'p'), ('语言学', 'a'), ('的', 'u'), ('研究', 'vn'), ('有着', 'v'), ('密切', 'a'), ('的', 'u'), ('联系', 'vn'), (',', 'w'), ('但', 'c'), ('又', 'd'), ('有', 'v'), ('重要', 'a'), ('的', 'u'), ('区别', 'n'), ('。', 'w'), ('自然', 'n'), ('语言', 'n'), ('处理', 'vn'), ('并', 'c'), ('不', 'd'), ('是', 'v'), ('一般', 'a'), ('地', 'u'), ('研究', 'vn'), ('自然', 'n'), ('语言', 'n'), (',', 'w'), ('而', 'c'), ('在于', 'v'), ('研制', 'v'), ('能', 'v'), ('有效', 'a'), ('地', 'u'), ('实现', 'v'), ('自然', 'n'), ('语言', 'n'), ('通信', 'vn'), ('的', 'u'), ('计算机', 'n'), ('系统', 'n'), (',', 'w'), ('特别', 'd'), ('是', 'v'), ('其中', 'r'), ('的', 'u'), ('软件', 'n'), ('系统', 'n'), ('。', 'w'), ('因而', 'c'), ('它', 'r'), ('是', 'v'), ('计算机', 'n'), ('科学', 'n'), ('的', 'u'), ('一', 'm'), ('部分', 'n'), ('。', 'w')]

# 3、断句
print(s.sentences)

['自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学', '因此', '这一领域的研究将涉及自然语言', '即人们日常使用的语言', '所以它与语言学的研究有着密切的联系', '但又有重要的区别', '自然语言处理并不是一般地研究自然语言', '而在于研制能有效地实现自然语言通信的计算机系统', '特别是其中的软件系统', '因而它是计算机科学的一部分']


# 4、正负情感词判断得分
print(s.sentiments)

1.0

# 5、转换为拼音
print(s.pinyin)

['Zi', 'ran', 'yu', 'yan', 'chu', 'li', 'shi', 'ji', 'suan', 'ji', 'ke', 'xue', 'ling', 'yu', '与', 'ren', 'gong', 'zhi', 'neng', 'ling', 'yu', 'zhong', 'de', 'yi', 'ge', 'zhong', 'yao', 'fang', 'xiang', '。', 'ta', 'yan', 'jiu', 'neng', 'shi', 'xian', 'ren', '与', 'ji', 'suan', 'ji', 'zhi', 'jian', 'yong', 'Zi', 'ran', 'yu', 'yan', 'jin', 'xing', 'you', 'xiao', 'tong', 'xin', 'de', 'ge', 'zhong', 'li', 'lun', 'huo', 'fang', 'fa', '。', 'Zi', 'ran', 'yu', 'yan', 'chu', 'li', 'shi', 'yi', 'men', 'rong', 'yu', 'yan', 'xue', '、', 'ji', 'suan', 'ji', 'ke', 'xue', '、', 'shu', 'xue', '于', 'yi', 'ti', 'de', 'ke', 'xue', '。', 'yin', 'ci', ',', 'zhe', 'yi', 'ling', 'yu', 'de', 'yan', 'jiu', 'jiang', 'she', 'ji', 'Zi', 'ran', 'yu', 'yan', ',', 'ji', 'ren', 'men', 'ri', 'chang', 'shi', 'yong', 'de', 'yu', 'yan', ',', 'suo', 'yi', 'ta', '与', 'yu', 'yan', 'xue', 'de', 'yan', 'jiu', 'you', 'zhe', 'mi', 'qie', 'de', 'lian', 'xi', ',', 'dan', 'you', 'you', 'zhong', 'yao', 'de', 'qu', 'bie', '。', 'Zi', 'ran', 'yu', 'yan', 'chu', 'li', 'bing', 'bu', 'shi', 'yi', 'ban', 'di', 'yan', 'jiu', 'Zi', 'ran', 'yu', 'yan', ',', 'er', 'zai', 'yu', 'yan', 'zhi', 'neng', 'you', 'xiao', 'di', 'shi', 'xian', 'Zi', 'ran', 'yu', 'yan', 'tong', 'xin', 'de', 'ji', 'suan', 'ji', 'xi', 'tong', ',', 'te', 'bie', 'shi', 'qi', 'zhong', 'de', 'ruan', 'jian', 'xi', 'tong', '。', 'yin', 'er', 'ta', 'shi', 'ji', 'suan', 'ji', 'ke', 'xue', 'de', 'yi', 'bu', 'fen', '。']

# 6、繁体转换为简体
print(s.han)

自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。

# 7、关键字抽取
print(s.keywords(10))

['语言', '自然', '计算机', '领域', '研究', '科学', '通信', '系统', '智能', '人工']

# 8、摘要
print(s.summary(3))

['因而它是计算机科学的一部分', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学']

案例展示

爬取天猫上olay官方旗舰店的一个商品,对评论内容进行情感词分析,得出评论正负情感的概率,从而判断产品的好坏。代码如下所示

from snownlp import SnowNLP
from snownlp import sentiment
import pandas as pd
import csv

result=pd.read_csv('./olay.csv',encoding='utf-8')
# print(result['评论内容'])
items=result['评论内容'].astype(str).tolist()
# print(items)

D=[]
for i in range(len(items)):
    s=SnowNLP(items[i])
    t=s.sentiments
    print(t)
    a=[items[i],t]
    D.append(a)
print(D)
with open('./情感词分析.csv','a',encoding='gb18030',newline='')as f1:
    write=csv.writer(f1)
    write.writerows(D)

结果展示

观察正负情感词概率分布可以看出,在0.8以上的好评率占比最高,观察数据评分,在0.1以下的snownlp才认为是差评,


随着大数据的时代的到来,数据变得越来越重要,数据可以帮助我们来看清行业的本质,也可以帮助我们更加快速的了解一个行业,关注公众号——DT学说,走进数据的时代

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值