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

这篇博客介绍了基于snownlp和朴素贝叶斯的情感分析方法,以大众点评网评论数据为例。首先,讨论了数据情况和情感划分,接着详细阐述了snownlp的简单应用。然后,通过jieba分词,数据预处理,训练朴素贝叶斯模型,实现了更准确的情感分析,得到的模型精度为0.899。最后,指出了样本量少、未调参和无交叉验证等不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

数据情况和处理

数据情况

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

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

在这里插入图片描述

情感划分

对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)

在这里插入图片描述

工具包(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

这样,我们就定义大于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)

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


                
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值