基于paddlehub的网民情绪识别-对话情绪识别
对话情绪识别
对话情绪识别(Emotion Detection,简称EmoTect),专注于识别智能对话场景中用户的情绪,针对智能对话场景中的用户文本,自动判断该文本的情绪类别并给出相应的置信度,情绪类型分为积极、消极、中性。
适用场景:语音助手、智能音箱、智能客服、智能车载等,帮助企业更好地把握对话质量、改善产品的用户交互体验。
ERNIE模型简介
在大规模语料上预训练的自然语言表征模型(如BERT)可以从纯文本中捕获丰富的语义模式,并且能够通过微调以继续提升各种NLP任务的性能。然而,目前的预训练语言模型没有与知识图(KG)相结合,其可以为更好的语言理解提供丰富的结构化知识事实。我们认为,KG中的信息实体可以通过外部知识提升语言表示。本文中,我们利用大规模文本语料库和知识图训练了一个增强语言表征模型(ERNIE),其可以同时利用词汇、句法和知识信息。实验结果显示,ERNIE在不同的知识驱动任务取得了显著的改进,同时在其它常见任务上与现有的BERT模型具有可比性。源代码与实验详情可见:xinz评价指标
分类模型的评价指标通常有 Accuracy、Precision、Recall 和 F1。
- 准确率 Accuracy = 正确分类的样本数 / 总样本数。
- 精确率 Precision = 预测为正类并且正确的样本数 / 预测为正类的样本数。
- 召回率 Recall = 预测为正类并且正确的样本数 / 标注为正类的样本数。
- 综合评价指标 F1:2(Precision + Recall) / (Precision*Recall),Precision 和 Recall 加权调和平均
以上指标越高,则说明模型比较理想。
以二分类问题为例,通常以关注的类为正类,其它类为负类,通常会有一份测试集,模型在测试集上预测的结果有4种情况。
准确率 Accuracy 定义为:
acc=(TP+FN+FP+TN—)/(TP+TN)
精确率 Precision 定义为:
P=TP/(FP+TP)
召回率 Recall 定义为:
R=TP/(FN+TP)
综合评价指标 F1 定义为:
F1=2(P∗R)/(P+R)
在多分类情况下,则用宏平均和微平均的方法,宏平均是指先计算每一类的各项评估指标,然后再对指标求算术平均值;微平均是指先对混淆矩阵的元素进行平均,得到TP,FP,TN,FN的平均值,然后再计算各项评估指标。
在本案例中,我们主要使用宏平均的计算方法。
一 首先进行准备工作,声明路径变量、解压数据集和代码。
View dataset directory. This directory will be recovered automatically after resetting environment.
ls /home/aistudio/data
View personal work directory. All changes under this directory will be kept even after reset. Please clean unnecessary files in time to speed up environment loading.
!ls /home/aistudio/work
If a persistence installation is required, you need to use the persistence path as the following:
!mkdir /home/aistudio/external-libraries
!pip install beautifulsoup4 -t /home/aistudio/external-libraries
二 环境安装
pip install paddlehub
三 作品代码
!import paddlehub as hub
senta = hub.Module(name="senta_bilstm")
test_text = ["这個PaddleHub很不賴", "小翔哥真正帥"]
input_dict = {"text": test_text}
results = senta.sentiment_classify(texts=test_text,data=input_dict, use_gpu=True, batch_size=1)for result in results:
print(result['text'])
print(result['sentiment_label'])
print(result['sentiment_key'])
print(result['positive_probs'])
print(result['negative_probs'])
四 运行结果
这個PaddleHub很不賴
0
negative
0.3874
0.6126
小翔哥真正帥
2
positive
0.9666
0.0334
五 总结
通过将一个月的学习,认识了很多新的知识,也浅浅的学习了python和liunx的一些基本语法,可能对我们后面学习python提供一点帮助,在下载软件时经常弄错,还是要去官网下载,很多官网都是英文的,同时我们也要提高英语水平。逐渐渗透了很多的知识,也意识到自己的不足。
总的来说,难度还是挺大的,但是说要非常深刻的数学基础,并没有那么夸张,只要你想学,愿意花时间,都可以入门,自己要学的东西还很多,希望从NLP自然语言处理开始框架的选型挺重要的,对于Pytorch和Tensorflow2.0有一点点了解,但是PaddlePaddle是一个全新的框架,是陌生的,上手有点难度。
PaddlePaddle客观来说,用的人还是比较少,所以导致网络上的教程以及解决问题的博客也是比较少的希望PaddlePaddle的教程能更简单化,易于查询一些,API能继续完善易读。