笔者团队最近在Modelscope平台上线了一系列情感分析模型,欢迎大家试用,多多提供意见。
模型传送门:
- 情感分类模型:https://www.modelscope.cn/models/damo/nlp_structbert_sentiment-classification_chinese-base/summary
- 情绪分类模型:https://modelscope.cn/models/damo/nlp_structbert_emotion-classification_chinese-base/summary
- 商品评价解析模型:https://modelscope.cn/models/damo/nlp_bert_relation-extraction_chinese-base-commerce/summary
- 客户满意度分析模型:https://www.modelscope.cn/models/damo/nlp_user-satisfaction-estimation_chinese
情感分析概述
背景及意义
人类情感是人们相互交往中主动选择和创造的结果,它是通过特定的人类行为和符号来表现、传达和显示的。1995年情感计算的概念由 Picard 首次提出,并于1997年正式出版《Affective Computing (情感计算)》。文本情感分析或观点挖掘是有关以文本形式表达的主观信息的计算的研究。其基本任务形式包括:针对不同粒度文本(如属性、句子、对话等级别)中的主观信息(如情感、情绪、态度、立场等)的提取、分析和处理。
常见任务
- 属性级情感分析:从评论文本中挖掘评价对象,并分析针对该评价对象的情感。评论中的对象通常包含评价实体及其属性,实体常常省略,因此在商品评论领域常常用属性级情感分析(ABSA)术语 [2-10]。
- 句子级情感分析:给定句子,决定句子的情感极性。句子涉及的话题往往比较单一,而且很多自然语言处理技术都以句子为处理单元。早期的句子级情感分析还包括主客观分析。
- 对话级情感分析:给定单轮或多轮对话,决定整段对话的情感。对话通常包含多个话题,多个语句,甚至多个对话角色。代表性任务包括多轮对话的用户满意度估计 [3, 4] 和单轮问答的情感分析 [11]。
情感分析Modelscope实战
ModelScope介绍
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!
实验环境准备
依据ModelScope的介绍,实验环境可分为两种情况。笔者在此推荐使用第2种方式,点开就能用,省去本地安装环境的麻烦,直接体验ModelScope。
1 本地环境安装
可参考ModelScope环境安装。
2 Notebook
ModelScope直接集成了线上开发环境,用户可以直接在线训练、调用模型。
打开模型页面,点击右上角“在Notebook中打开”,选择机器型号后,即可进入线上开发环境。
句子级情感分析
背景
情感分类需要模型对带有感情色彩的主观性文本进行分析、推理,即分析文本所表达的态度,是倾向于正面还是反面,对及时把握舆情走势,了解商品评价,检测客服服务质量,实现观点抽取和意图识别都起到了重要作用。而在电商场景中,情感分类显得尤为重要,可以通过对商品评论情感极性的分析,作为对商品质量及相关服务质量把控的重要参考依据。由于电商场景大多数的情感分析需求是粗粒度的或文档级的,预训练模型底座的性能差异、模型的灵活、易用、低成本往往是需求开发的关注点。因此,我们提供了在通用场景和电商场景下,基于StructBERT[1]预训练的模型推理和模型训练的便捷接口,能够快速有效地满足简单需求开发和情感分析效果快速验证。
任务定义
通常来说,情感分类的输入是一段句子或一段话,模型需要返回该段话的类别,包括但不限于:
- 正向、负向(二分类);
- 恐惧、愤怒、厌恶、喜好、悲伤、高兴、惊讶(七分类)的情感概率。
方案描述
如上图所示,模型输入为带[CLS]标记的文本,通过Bert Encoder对包括[CLS]在内的每一个token进行编码,最后将[CLS]的编码表示作为整个文本的张量表示,将其通过一个全连接层和softmax层,输出文本的情感极性概率。
- 通用场景情感分类模型基于Structbert-base-chinese,在bdci、dianping、jd binary、waimai-10k四个数据集(11.5w条数据)上fine-tune得到。
- 电商场景情感分类模型基于Structbert-base-chinese,基于百万电商评价数据fine-tune得来。
Modelscope示例
ModelScope链接:
StructBERT情感分类-中文-通用-base:https://www.modelscope.cn/models/damo/nlp_structbert_sentiment-classification_chinese-base/summary
StructBERT情感分类-中文-通用-large:https://www.modelscope.cn/models/damo/nlp_structbert_sentiment-classification_chinese-large/summary
StructBERT情感分类-中文-通用-tiny:
https://www.modelscope.cn/models/damo/nlp_structbert_sentiment-classification_chinese-tiny/summary
StructBERT情感分类-中文-电商-base:
StructBERT情绪分类-中文-七分类-base:
https://modelscope.cn/models/damo/nlp_structbert_emotion-classification_chinese-base/summary
可以通过简单的Pipeline调用来使用商品评价解析模型,调用示例如下:
from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks semantic_cls = pipeline(Tasks.text_classification, 'damo/nlp_structbert_sentiment-classification_chinese-base') semantic_cls(input='启动的时候很大声音,然后就会听到1.2秒的卡察的声音,类似齿轮摩擦的声音')
属性级情感分析
背景
电商、本地生活等平台每天都要产生上千万的用户平均数据。评价是消费者做出购物决策的重要参考,也是商家了解消费者反馈的重要渠道。传统的属性级情感分析方案,一般采用pipeline方式,逐步抽取属性词、观点词、观点极性等信息,对于一条评价文本,需要根据每个步骤抽取的结果,用编码器反复编码,推理延时较高,我们提出了基于Cascade级联的架构,在ABSA三元组抽取任务上,将推理速度提高了7倍。
任务定义
属性观点三元组抽取任务:从评价文本中抽取由(属性词,观点词,观点极性)(AspectTerms, OpinionTerms, Polarity) 组成的三元组。
方案描述
我们将(AspectTerms, OpinionTerms, Polarity)三元组抽取任务拆分为属性词抽取、观点词抽取、观点极性分类三个任务,技术方案参考了《Adjacency List Oriented Relational Fact Extraction via Adaptive Multi-task Learning》[2],并在此基础上进行了级联加速,推理速度较论文版本提高了7倍!
1. 模型结构为多任务联合优化的Cascade级联结构:
a. 与流水线结构的区别为:流水线结构各个任务需要完整地经过表达层、输出层,而Cascade级联结构只需要过一次表达层;
b. 表达层为BERT预训练编码器,作用是将输入文本编码,得到文本在欧氏空间的向量序列表达 h_t。
c. 输出层分为三块:1. AspectTerms Extractor, 2. OpinionTerms Extractor, 3. Polarity Classifier,三个输出层级联在一起。其中抽取器为指针网络结构,分类器为全连接多分类结构。1、2之间有一个多头注意力层,用于将属性词信息融合到句子信息中,2、3之间有一个池化层,用于抽取属性词和观点词的表征信息。
2. 训练时,将多个Cascade级联模型当成普通的多任务学习,进行联合训练,因此分为了三个任务。
a. 表达层使用BERT预训练语言模型,训练前提前准备好各个任务的输入输出张量,会根据三个任务的损失函数进行梯度下降;
b. 属性词抽取和观点词抽取的输出层为指针网络,具体方法是用1标出抽取词的头尾字符,其他位置标为0,训练时使用二元交叉熵损失函数进行训练;
c. 观点极性分类为多分类,训练时使用交叉熵损失函数进行训练;
3. 推理时,步骤分为三步:
a. 首先,用编码器BERT将文本编码得到向量序列表征h_t,输入AspectTerms Extractor, 通过头尾字符的匹配,抽取出文本中所有的属性词(如图:“快递”、“味道”);
b. 然后,将其中一个属性词(如图:“味道”)对映位置的向量序列和完整的向量序列进行多头注意力计算,得到融合了属性词信息的评价文本表征,输入OpinionTerms Extractor,通过头尾字符的匹配,抽取出该属性词对应的所有观点词(如图:“很正宗”、“够辣”);
c. 最后,将(属性词,观点词)两元组对映位置的向量序列进行池化,得到两元组的向量表征,输入Polarity Classifier,通过选择最高置信度的类别,进行观点极性分类。
d. 重复b-c步,遍历所有的属性词和观点词,得到所有的三元组。
Modelscope示例
在ModelScope上(https://modelscope.cn/models/damo/nlp_bert_relation-extraction_chinese-base-commerce/summary),可以通过简单的Pipeline调用来使用商品评价解析模型,调用示例如下:
from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks semantic_cls = pipeline(Tasks.information_extraction, 'damo/nlp_bert_relation-extraction_chinese-base-commerce', model_revision='v1.0.0') semantic_cls(input='#纯棉白色已经收到。质量非常好。一般的厚实。尺寸规格。和商家描述的一样。') # "#"表示属性词缺省 # InformationExtractionOutput(spo_list=[('#', '正向情感', '一般的厚实'), ('质量', '正向情感', '非常好'), ('和商家描述的', '正向情感', '一样')])
对话级情感分析
背景
智能客服质量检测系统通过人工智能技术取代人力资源,来进行对客户服务内容质量检查的工作。一般的智能客服质量检测系统可以记录在线客服人员与客户之间的每一次对话,并通过特定的指标,对所记录对对话内容进行分析和检测。质检系统会从服务质量和服务态度两个检测维度出发,挖掘客户服务对话数据,并采用智能自动质量检测和人工审核相结合的方式自动生成质量检测报告。智能客服质检系统可以改善人工质检效率低下,覆盖不全,以及工作任务枯燥重复等问题,能有效提高企业对客户的服务质量。用户满意度估计作为对话级的情感分析任务,具有重要的实际应用价值,可用于各种在线客服场景来评价人工或机器人客服的服务质量好坏。
任务定义
用户满意度估计(User Satisfaction Estimation),又称服务满意度分析(Service Satisfaction Analysis),是分析用户是否对在线服务感到满意的任务。通常为输入一段连读的对话,从用户视角评价该段对话的满意度极性(不满意/中立/满意)。
方案描述
以下面客户(User)和客服(Service Staff)之间的对话为例,我们归纳该任务的特点:
- 与文档级情感分析相似,整段对话可以包含多个话题,如“退货”、“物流”和“材质”等等,不同之处在于对话具有特殊的问答结构和对话角色信息;
- 用户满意度的评价标准为是否有助于客户解决问题,综合考量用户的意图是否得以满足和用户的情感是否愉悦,而且特别考验客服的“共情”和“业务”能力,这段对话从用户角度评价为“不满意”。
- 用户满意度与用户语句的情感紧密相关,客服通常经过良好培训,其情感通常为“正向”或“中立”;用户的情感则更具多元化,如图中的用户情感变化“正向”->“中立”->“负向”。
模型的架构支持多任务,包括对话的用户满意度估计(USE)和语句的情感分析(SA)两个子任务,模型细节如图所示:
- (图左模块)使用Hierarchical Transformer Encoder(HiTrans)来建模对话中的每条语句的向量表示,包括基于bert-base-chinese的backbone建模语句对(一轮的人-人/人-机交互),以及基于Transformer Encoder捕获对话上下文的语义信息。
- (图右模块)随后,衔接论文的Basic多任务模型,对话级的用户满意度估计(USE)为主任务,语句级的情感分析(SA)为辅助任务,两个分类器通过基于Meta-GRU的多任务交互层共享参数特征,因此两个任务可以联合学习互为补充。
Modelscope示例
在ModelScope上(https://www.modelscope.cn/models/damo/nlp_user-satisfaction-estimation_chinese),可以通过简单的Pipeline调用来使用满意度估计推理模型,调用示例如下:
from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks semantic_cls = pipeline(Tasks.text_classification, 'damo/nlp_user-satisfaction-estimation_chinese') print(semantic_cls([('返修退换货咨询|||', '手机有质量问题怎么办|||稍等,我看下', '开不开机了|||', '说话|||谢谢哈')])) # 输出结果 # [{'scores': [0.6664977073669434, 0.3217740058898926, 0.011728283949196339], 'labels': ['满意', '中立', '不满意']}]
格式说明:一轮对话用“|||”连接用户提问和代理的回复语句,例如“有适合我穿的尺码吗|||稍等,我看下哈”;多轮对话用元组表示,例如3轮对话为('Q1|||A1', 'Q2|||A2', 'Q3|||A3');对于非人机交互的一问一答场景,允许Q或A为空,即“Q|||”或“|||A”。
相关论文:Kaisong Song, Yangyang Kang, Jiawei Liu, Xurui Li, Changlong Sun, Xiaozhong Liu. A Speaker Turn-Aware Multi-Task Adversarial Network for Joint User Satisfaction Estimation and Sentiment Analysis. AAAI 2023.
————————————————
版权声明:本文为CSDN博主「aka_wali」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aka_wali/article/details/129005573
总结
本文主要介绍了三类情感分析模型。
- 句子级情感分析:包含了情感分类、情绪分类两种模型,情感分类适用于对句子级别的文本进行【正面、负面】的分类;情绪分类适用于对句子级别文本进行【恐惧、愤怒、厌恶、喜好、悲伤、高兴、惊讶】的分类。
- 属性级情感分析:从评价文本中抽取由(属性词,观点词,观点极性)(AspectTerms, OpinionTerms, Polarity) 组成的三元组,适用于需要对文本进行更细粒度的情感分析,往往应用于电商等评价数据。
- 对话级情感分析:分析用户是否对在线服务感到满意的任务,输入一段连读的对话,从用户视角评价该段对话的满意度极性(不满意/中立/满意),适用于客服对话等场景。
参考文献
[1] Wang, Wei, Bi, Bin et al. Structbert: Incorporating language structures into pre-training for deep language understanding.
[2] Fubang Zhao, Zhuoren Jiang et al. Adjacency List Oriented Relational Fact Extraction via Adaptive Multi-task Learning
[3] Kaisong Song, Yangyang Kang, Jiawei Liu, Xurui Li, Changlong Sun, Xiaozhong Liu. A Speaker Turn-Aware Multi-Task Adversarial Network for Joint User Satisfaction Estimation and Sentiment Analysis. AAAI 2023.
[4] Jiawei Liu, Kaisong Song, Yangyang Kang, Guoxiu He, Zhuoren Jiang, Changlong Sun, Wei Lu, Xiaozhong Liu. A Role-Selected Sharing Network for Joint Machine-Human Chatting Handoff and Service Satisfaction Analysis. EMNLP 2021.
[5] Wenxuan Zhang, Xin Li, Yang Deng, Lidong Bing, Wai Lam. Towards Generative Aspect-Based Sentiment Analysis. ACL 2021.
[6] Lu Xu, Yew Ken Chia, Lidong Bing. Learning Span-Level Interactions for Aspect Sentiment Triplet Extraction. ACL 2021.
[7] Junhao Liu, Zhen Hai, Min Yang, Lidong Bing. Multi-perspective Coherent Reasoning for Helpfulness Prediction of Multimodal Reviews. ACL 2021.
[8] Wenxuan Zhang, Ruidan He, Haiyun Peng, Lidong Bing, Wai Lam. Cross-lingual Aspect-based Sentiment Analysis with Aspect Term Code-Switching. EMNLP 2021.
[9] Wenxuan Zhang, Yang Deng, Xin Li, Yifei Yuan, Lidong Bing, Wai Lam. Aspect Sentiment Quad Prediction as Paraphrase Generation. EMNLP 2021.
[10] Wenxuan Zhang, Yang Deng, Xin Li, Lidong Bing, Wai Lam. Aspect-based Sentiment Analysis in Question Answering Forums. Findings of EMNLP 2021.
[11] Jingjing Wang, Changlong Sun, Shoushan Li, Xiaozhong Liu, Luo Si, Min Zhang, Guodong Zhou. Aspect Sentiment Classification Towards Question-Answering with Reinforced Bidirectional Attention Network. ACL 2019.