当前位置:   article > 正文

基于snownlp及朴素贝叶斯的情感分析——以大众点评网评论为例_snownlp情感分析基于朴素贝叶斯

snownlp情感分析基于朴素贝叶斯

「情感分析」是对带有感情色彩的主观性文本进行分析、处理、归纳和推理的过程。按照处理文本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析。其中,前者多用于舆情监控和信息预测,后者可帮助用户了解某一产品在大众心目中的口碑。
目前常见的情感极性分析方法主要是两种:基于情感词典的方法和基于机器学习的方法。

中文文本情感分析的机器学习项目,今天的流程如下:
在这里插入图片描述

数据情况和处理

数据情况

这里的数据为大众点评上的评论数据,主要就是评论文字和打分。我们首先读入数据,看下数据的情况:

import numpy as np
import pandas as pd
data = pd.read_csv('comment_dazhongdianping.csv',encoding="utf-8-sig")
data.head()
print(data)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

情感划分

对star字段看唯一值,打分有1,2,4,5。
在这里插入图片描述
中文文本情感分析属于我们的分类问题(也就是消极和积极),这里是分数,那我们设计代码,让分数小于3的为消极(0),大于3的就是积极(1)。

定义一个函数,然后用apply方法,这样就得到了一个新列(数据分析里的知识点)

#分数小于3的为消极(0),大于3的就是积极(1)
def make_label(star):
    if star > 3:
        return 1
    else:
        return 0

#结果写入一个新列sentiment
data['sentiment'] = data.star.apply(make_label)
print(data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

工具包(snownlp

我们首先不用机器学习方法,我们用一个第三库(snownlp),这个库可以直接对文本进行情感分析(记得安装),使用方法也是很简单。返回的是积极性的概率。

from snownlp import SnowNLP
text1 = '这个东西不错'
text2 = '这个东西很垃圾'
s1 = SnowNLP(text1)
s2 = SnowNLP(text2)
#显示分词
print(",".join(s1.words))
print(",".join(s2.words))
#显示情感值
print(s1.sentiments,s2.sentiments)
# result 0.8623218777387431 0.21406279508712744
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这样,我们就定义大于0.6,就是积极的,同样的方法,就能得到结果。

# 用snownlp进行情感分析,定义大于0.6,就是积极的
def snow_result(comemnt):
    s = SnowNLP(comemnt)
    if s.sentiments >= 0.6:
        return 1
    else:
        return 0

#结果写入一个新列snlp_result
data['snlp_result'] = data.comment.apply(snow_result)
print(data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述
上面前五行的结果看上去很差(5个就2个是对的),那到底有多少是对的了?我们可以将结果与sentiment字段对比,相等的我就计数,这样在除以总样本,就能看大概的精度了。


                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/945851
推荐阅读
相关标签
  

闽ICP备14008679号