编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

20行代码教会Python分析商品评价(python爬取商品评论)

wxchong 2024-09-12 21:57:20 开源技术 10 ℃ 0 评论

前言

Python以开发效率高而著称,其中一个重要原因是Python有许多好用的第三方库,今天我们就借助一个中文情感分析库 SnowNLP ,来对某个商品的评价做情感分析,得出每条评价到底是好评还是差评。SnowNLP 库的一个特点就是内置了中文词库,使用这个库就可以直接处理中文,也无需我们去做分词的操作,此外,他还可以做简单的关键字提取以及关键句提取等。

安装snownlp

pip install snownlp

执行上面的命令,即可自动安装,安装完成后就可以开始我们的评论情感分析了。

数据准备

为了避免太多其他功能代码干扰本文的重点内容,因此我提前在某宝的一个商品上把评论复制下来放入文件 taobao评论.txt 中,内容大致如下:

良心话,淘宝买衣服最满意的一次,质量也没让我失望,物有所值,非常合身,非常满意,收到就洗了,穿上心情美美的,值得推荐,请大家放心购买
衣服收到了质量挺好哦,价格实惠物美价廉,款式简单大方比较百搭,是雪纺的面料不会很透明,穿着还算合身,喜欢的宝宝可以入手
宝贝己收到,迫不及待的试了一下,感觉还不错,与图片相符合,没有色差,穿起很合身,布料柔软,是我购物最满意的一次,准备再买一件其它颜色,想买的朋友赶紧下手吧,赞赞赞
真心不错。比我想象的还要好。送给朋友的妈妈穿,穿着显年轻。喜欢的赶紧下单。真的不错
袖子太短了,颜色也不好看。
看起来很土啊,穿起来像个大妈款
这个价位太贵了,款式也太旧了。

实现代码

#%% 导入
import snownlp as slp
import collections as clt
#1
Comment=clt.namedtuple('Comment','content,result')
#%% 方法定义 
def get_contents(file_path):
 with open(file_path,'r',encoding='utf8') as f:
 return [n.strip() for n in f.readlines()]
def analyse_to_comment(content):
 #2
 s=slp.SnowNLP(content)
 #3
 return Comment(display_long(content),pst_to_result(s.sentiments))
 
def display_long(content):
 if len(content)>10:
 return f'{content[0:5]}……{content[-5:]}'
 return content
#4
def pst_to_result(positive):
 if positive>0.75:
 return '好评'
 return '差评'
#%% 运行
if __name__ == "__main__":
 file=r'taobao评论.txt'
 cms=(
 analyse_to_comment(c) 
 for c in get_contents(file)
 )
 for c in cms:
 print(c)

输出:

Comment(content='良心话,……家放心购买', result='好评')
Comment(content='衣服收到了……宝可以入手', result='好评')
Comment(content='宝贝己收到……吧,赞赞赞', result='好评')
Comment(content='真心不错。……。真的不错', result='好评')
Comment(content='袖子太短了……也不好看。', result='差评')
Comment(content='看起来很土……像个大妈款', result='差评')
Comment(content='这个价位太……也太旧了。', result='差评')
  • (#1) 使用命名元组来组织数据,两个属性,content是评论,由于可能会很长,所以最终结果会进行缩略显示。result就显示"好评"或"差评"
  • (#2) 使用 snownlp 的 SnowNLP,实例化时传入我们要分析的文本
  • (#3) 使用 调用 SnowNLP 的方法 sentiments ,即可得到一个百分比的数值,这个数值表示积极度
  • (#4) 自定义方法 pst_to_result ,这里就简单把大于 0.75 分的就输出 "好评",其他情况就输出 "差评"

总结

  • 使用 snownlp 的 SnowNLP ,实例化时传入待分析的文本
  • 调用 SnowNLP 的方法 sentiments,获取积极度分数(0到1之间的小数)

最后

本文介绍了在Python中简单使用 snownlp 进行商品评价情感分析,这个库一般对于商品买卖才有比较好的分析效果,对于其他场景恐怕会比较感人。考虑到他调用简单方便,我们无需顾及中文分词和创建各种nlp模型即可进行分析也是一个不错的选择。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表