日常笔记-snownlp情感分析计算情感得分

snownlp是Python中的一类库,功能很多,这篇笔记涉及到其中的情感分析模块。

snownlp文本分类功能将原始评论分为正负情感两个数据集,返回值为情绪的概率。情感评分在[0,1]之间,越接近1,情感表现越积极,越接近0,情感表现越消极。

举个例子:

from snownlp import SnowNLP
from snownlp import sentiment

s=SnowNLP(u'这个东西真的很赞')
print(s.words)   #返回分词结果
print(s.sentiments)   #返回该句话的情感得分

输出情感得分结果为:0.96733,靠近1,说明这条评论是积极的,用户评价偏好!

开始进入案例,运用调查数据的评论文字:

# 读如数据并显示数据的前五条
import pandas as pd
df = pd.read_excel("C:/Users/admin/Desktop/pinglun.xlsx")    #去掉一些特殊符号,只留下纯文本评论,去掉无
df.head()

注:1.考虑到有些用户有刷评论的原因,故去掉整句为特殊符号的句子;2.“无”本身的情感得分为0.4,偏消极,但实际过程中“无”为目前没有评价,变中性,故本次中“无”的占比较大,以防对最后结果产生影响,在此处去掉。实际应用时,视具体情况而定!

from snownlp import SnowNLP

def get_sentiment_cn(text):
    s = SnowNLP(text)
    return s.sentiments

df["sentiment"] = df.comments.apply(get_sentiment_cn)
df.head()

   日常笔记-snownlp情感分析计算情感得分_第1张图片

将得分apply在comments后面。

round(df.sentiment.mean(),2)   #返回情感得分的均值

 返回情感得分的均值,并保留两位小数。

pos=0
neg=0
for i in df.sentiment:
    if i >=0.5:
        pos +=1
    else:
        neg +=1
print(f"积极的评论占比:{round(pos/len(df.comments)*100,2)}%")
print(f"消极的评论占比:{round(neg/len(df.comments)*100,2)}%")

以0.5为分界点,大于为积极,小于为消极,进行两面的评论占比计算。

文章参考:[Python][snownlp]基于情感词典的情感分析 - 小白的学习笔记 (corina.cc)

你可能感兴趣的:(文本,深度学习,机器学习,自然语言处理)