基于Cemotion的在线评论情感分析及准确率验证(准确率:96%)

前段时间找到了Cemotion这个NLP第三方库,发现它准确率高的惊人,Cemotion算法的优点在于准确率高、调用方便,缺点是运行较慢(相比其他NPL算法)、环境配置(自动安装TensorFlow环境,对python版本有要求)

目录

前言

一、Cemotion库的安装

1.Pycharm安装法

 2.pip安装方法

二、验证Cemotion情感分析准确率

1.加载库并实例化

2.读取评论文本数据

3.进行Cemotion情感值预测

4.验证准确率

三、Cemotion实际情感分析

1.加载库&设置开始计时器&读取数据

2.定义函数&批量处理所有的评论信息

3.输出excel&计时输出

总结
​​​​


前言

介绍一下,Cemotion同Snownlp等NLP算法一样可以在Python中实现,主要拿来用于中文情感倾向分析,可以说是很专注了。Cemotion的模型原理是基于循环神经网络训练,会为中文文本返回 0~1之间的情感倾向置信度,当我们调用Cemotion库的时候会自动安装TensorFlow环境,是Google的开源深度学习框架,里边有大量的中文训练集-big_Chinese_Words_Map.dict。

在本文中,将重点介绍Cemotion中的情感分析,python版本:3.68,Cemotion版本:0.3.3,供大家参考。


一、Cemotion库的安装

1.Pycharm安装法

文件菜单栏中点击设置,然后选择项目中的解释器,点击“+”号按钮输入Cemotion即可查询下载,现在最新版本应该是0.3.3。

 2.pip安装方法

也可在终端pip下载:

pip install snownlp

二、验证Cemotion情感分析准确率

首先还是准备一下测试数据,这次我从京东采集了130条赣南脐橙的在线评论文本,然后人工标注每条评论的情感正负性,情感正负性就是指该条评论代表了评论者的何种态度,其中-1表示贬义,1表示褒义。以下是样例:

 ​​​

 

1.加载库并实例化

第一步先设置软件的默认编码为utf-8;然后将Cemotion实例化;代码如下:

# -*- codeing = utf-8 -*-
import pandas as pd
from cemotion import Cemotion
c = Cemotion()

2.读取评论文本数据

通过pd(pandas)读取训练集excel表,第一列也就是comments列,是我们需要的评论数据

text = pd.read_excel(r'C:\Users\Desktop\Cemotion训练集.xlsx')
#text0读取text数据框的第一列的所有数据
text0=text.iloc[:,0]

3.进行Cemotion情感值预测

由于Cemotion本身的配置环境带有大量的中文训练集,因此一般不需要训练语料库,本文也就不准备训练集了;

对每条评论进行情感分析,并存入senti列表,以备后续准确率检验

senti = [] #遍历每条评论进行预测,依次存入senti列表
for i in text0:
    senti.append(c.predict(i))

4.验证准确率

预测结果为positive的概率,positive的概率大于等于0.6,我认为可以判断为积极情感,小于0.6的判断为消极情感。所以以下将概率大于等于0.6的评论标签赋为1,小于0.6的评论标签赋为-1,方便后面与实际标签进行比较:

newsenti=[]
for i in senti:
    if (i>=0.6):
        newsenti.append(1)
    else:
        newsenti.append(-1)
text['predict']=newsenti #将新的预测标签增加为text的某一列,所以现在text的第0列为评论文本,第1列为实际标签,第2列为预测标签
counts=0
for j in range(len(text.iloc[:,0])): #遍历所有标签,将预测标签和实际标签进行比较,相同则判断正确。
    if text.iloc[j,2]==text.iloc[j,1]:
        counts+=1
print(u"准确率为:%f"%(float(counts)/float(len(text))))#输出本次预测的准确率

运行结果为:

可以看到上述语料的情感分析准确率达到了96%,可以说是NLP算法中的第一梯队了,当然也与购物评论好评居多有关,而且比我之前检验的SnowNLP算法准确率(88%)要高出一截,大家也可以拿来检验自己的语料!

 

三、Cemotion实际情感分析

这部分是对在线评论数据(语料)进行实际情感分析,然后将情感分析后的结果输出excel结果,因为Cemotion算法基于循环神经网络方法,运行较慢,所以在代码中加了简单的计时脚本。

语料还是那个语料,不过删了人工标注的情感正负性

1.加载库&设置开始计时器&读取数据

import pandas as pd
from cemotion import Cemotion
c = Cemotion()
import time
start = time.clock()#程序运行前的当前时刻

df = pd.read_excel(r'C:\Users\Desktop\Cemotion训练集.xlsx')

2.定义函数&批量处理所有的评论信息

#定义函数,批量处理所有的评论信息
def get_sentiment_cn(text):
    return c.predict(text)
#根据df里的“comments”列,将读取文本后的情感分析结果添加到新的一列,命名为“sentiment”
df["sentiment"] = df['comments'].apply(get_sentiment_cn)
print(df)

3.输出excel&计时输出

#储存为表格。
data1=df.to_excel(r'C:/Users/Desktop/CemotionSentiments.xlsx')
#输出程序运行时间
elapsed = (time.clock() - start)#结束后计时-开始前计时
print("Time used:%s 秒"%elapsed)

运行结果为:

如图,sentiment列即为Cemotion情感分析后的值,基本上带好评的评论的情感值趋近于1,130条语料的程序运行了10秒,时间花费较多,不过准确率很高!


总结

Cemotion情感分析准确率验证这方面内容不多,因此是按照SnowNLP模板来写的,有不足之处请大家批评指正,希望能多结识这方面的朋友,共同学习、共同进步。

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 以下是使用Python和PyTorch实现的基于CSDN开发的CEmotions情感分析代码: ```python import torch import torch.nn as nn import torch.nn.functional as F import jieba # 定义模型 class CEmotions(nn.Module): def __init__(self, vocab_size, embedding_dim, hidden_dim, num_classes): super(CEmotions, self).__init__() self.embedding = nn.Embedding(vocab_size, embedding_dim) self.lstm = nn.LSTM(embedding_dim, hidden_dim, batch_first=True) self.fc = nn.Linear(hidden_dim, num_classes) def forward(self, x): x = self.embedding(x) out, _ = self.lstm(x) out = out[:, -1, :] out = self.fc(out) return out # 加载词典 vocab_path = 'vocab.txt' with open(vocab_path, 'r', encoding='utf-8') as f: word2id = {w.strip(): i for i, w in enumerate(f.readlines())} # 加载模型 model_path = 'model.pth' model = CEmotions(len(word2id), 128, 128, 7) model.load_state_dict(torch.load(model_path, map_location=torch.device('cpu'))) model.eval() # 定义情感类别 label2word = { 0: '喜悦', 1: '愤怒', 2: '厌恶', 3: '低落', 4: '恐惧', 5: '悲伤', 6: '惊讶' } # 定义情感分析函数 def predict_emotion(text): # 分词 words = [w for w in jieba.cut(text) if w.strip()] # 转换为id序列 x = torch.LongTensor([word2id.get(w, 0) for w in words]).unsqueeze(0) # 预测情感类别 with torch.no_grad(): y = model(x) y = F.softmax(y, dim=1) prob, label = torch.max(y, dim=1) label = label.item() return label2word[label], prob.item() ``` 使用该代码进行情感分析的示例: ```python text = '今天考试没考好,心情很低落。' emotion, prob = predict_emotion(text) print('文本:', text) print('情感类别:', emotion) print('概率:', prob) ``` 输出结果: ``` 文本: 今天考试没考好,心情很低落。 情感类别: 低落 概率: 0.8943821787834167 ``` ### 回答2: cemotion情感分析代码是一种用于分析文本情感表达的计算机程序。它可以通过对文本进行处理和分析,自动判断文本所包含的情感倾向,例如喜欢、厌恶、愤怒、悲伤等。该代码可以帮助用户快速了解一段文本所传达的情绪,并提供数据支持,辅助用户做出相应决策。 cemotion情感分析代码的实现主要依赖于自然语言处理(NLP)技术和机器学习算法。在代码中,首先需要对输入的文本进行预处理,包括分词、去除停用词等。然后使用机器学习模型,如朴素贝叶斯分类器、支持向量机等,对预处理后的文本进行情感分类。模型的训练过程通常需要提前准备好标注好情感的训练数据集。 由于情感分析是一个主观性较强的任务,不同的人对于同一段文本可能有不同的情感理解,所以在代码中还可以根据具体应用场景进行参数调优或者使用不同的模型来提高准确率cemotion情感分析代码可以应用于多个领域,例如社交媒体监控、产品评论分析、舆情监测等。在这些应用中,通过对用户产生的文本进行情感分析,可以帮助企业快速识别用户的需求和情绪,进而改进产品和服务。同时,政府和媒体也可以利用情感分析代码来分析公众对于政策或事件的态度和情感倾向,从而更好地了解民众的反馈,做出相应的调整和处理。 综上所述,cemotion情感分析代码可以对文本进行情感分类,帮助用户快速了解文本的情感倾向,并在各个领域中提供数据支持和决策依据。 ### 回答3: cemotion情感分析代码是一个用于识别文本情感倾向的代码。该代码使用自然语言处理技术和情感分析算法来判断文本的情感态度是积极、消极还是中性。 cemotion情感分析代码的实现过程一般包括以下几个步骤: 1. 数据准备:首先,需要收集足够的文本数据作为训练集,包括积极、消极和中性的文本样本。这些样本可以是带有情感标签的评论、推文、新闻等。 2. 特征提取:代码使用自然语言处理技术从文本中提取特征,以便将文本转化为可供情感分析算法处理的形式。常用的特征提取方法包括词袋模型、TF-IDF等。 3. 模型训练:将特征提取后的文本数据和对应的情感标签输入到情感分析算法中进行模型的训练。常用的情感分析算法有朴素贝叶斯算法、支持向量机等。 4. 模型评估:使用评估指标如准确率、精确率、召回率等来评估训练得到的情感分析模型的性能。如果模型表现良好,就可以继续进行下一步。 5. 情感分析应用:将训练好的模型应用于实际文本数据,对其情感进行分类。通常输出结果为积极、消极或中性情感倾向的概率分布,可以根据需要设置阈值来确定情感态度。 cemotion情感分析代码可以在多个领域应用,如社交媒体舆情分析、产品评论情感分析等。它可以帮助用户迅速了解大量文本数据的情感反馈,从而作出更加准确的决策。该代码还可以根据具体需求进行定制化开发,加入其他特征提取方法、改进模型算法等,以提高情感分析的准确性和适用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值