2020.10.24 留:本文未完成。
Introduction
情感计算(affective computing),移情计算(empathetic computing)。
Related Work
论文 | 模型 | 标签 | 评价指标 |
---|---|---|---|
笔记论文 Zhong et al., 2020 | BERT | 移情计算 PEC Co-attention | R#k MRR |
笔记AAAI Zandie et al., 2020 | GPT2 | 移情计算 DailyDialog multi-task learning Three Head | perplexity(PPL) Hit#1 BLEU F1 |
笔记AAAI Lin et al., 2019a | GPT | 移情计算 EmpatheticDialogues PersonaChat multi-task learning | PPL AVG BLEU EMO ACC |
笔记ACL Lin et al., 2019b | Transformer | 移情计算 EmpatheticDialogues Emotion Tracker Emotion Aware Listener Meta Listener Mixture Of Expert response comparison listener analysis visualize Emotion Dist | BLEU Relevance Fluency Empathy |
笔记ICLR rashkin et al., 2018ACL 2019 | Transformer / BERT | 移情计算 EmpatheticDialogues | PPL P#1,100 AVG BLEU Fluency Empathy Relevance |
笔记AAAI Zhou et al., 2017 | GRU | 情感计算 ESTC Emotion Category Embedding Internal Memory External Memory emotion accuracy loss function | PPL EMO ACC Content Emotion |
笔记AAAI Wolf et al., 2019 | Transformer | Hits#1 F1 | |
笔记论文 | ------- | ---------- | |
--------------------- | 粗体代表有启发的论文 | 粗体代表有启发的思想 | ---------------- |
论文 | 实现的功能 | 局限性 |
---|---|---|
Zhong et al., 2020 | 1)通过二分类,选取候选回复 | |
Zandie et al., 2020 | 1)使用 GPT-2 进行预训练;2)LM head 可以预测下一条语句;3)NUP head 预测下一条语句是否与输入语句匹配;4)NEP head 预测下一条语句的情绪;4)词嵌入的用法与 Transformer 类似 | 1)为了使用合适的情绪进行回复,需要使用到情绪、动作和主题等元信息(作者自己这么认为的); |
Lin et al., 2019a | 1)使用 GPT 在 BooksCorpus 上预训练;2)在 PersonaChat 上进行预训练;3)使用三句话赋予 CAiRE 一个人物定位;4)SEN 预测 distractor 是否为真实回复;5)LM 生成回复;6)EMO 预测对话上下文的情绪。 | 1) |
Lin et al., 2019b | 1)Emotion Tracker 追踪对话上下文中的情绪;2)Emotion Aware Listeners 分别监听 36 种情绪以及一种通用情绪的信息;3)Meta Listener 收集多个 Listener 的意见,并产生最终的回复。 | 1)需要为每种情绪都分配一个监听器,未免有些不灵活; |
rashkin et al., 2018 | 1)提出了 EmpatheticDialogues 数据集;2)提出了 Pre-trained、Fine-tuned、EmoPrepend-k、TopicPrepend-k、Multi-task 和 Ensem-DM 基线模型 | |
Zhou et al. 2017 | 1)使用情绪分类器对数据集进行自动标注;2)给定用户的输入,通过 embed 层和两个 Memory 组件,能够根据不同的情绪类别,生成特定的情绪化语句;3)外部记忆通过为情感词和通用词分配不同的概率,从而生成更优质的回复 | 1)在编码过程中,输入需要包含待生成语句的情绪(emotion) \(e\),这是不现实的,因为在实际应用中,你并不知道返回的语句需要包含什么情绪 |
----------------- | 粗体代表不错的想法 | 斜体代表在以后的论文中此缺点大致已被解决 |
- Zhou et al. 2017 提出了 Emotional Chatting Machine(ECM),该模型不可控制生成回复的情绪类别。比如说现在系统中定义了 5 种情绪类别,现在用户很悲伤,需要机器生成 “安慰” 的语句。但是 ECM 做不到,它只能遍历所有的情绪类别,然后为每一种类别生成一句回复。
请注意,由于此论文为 2017 年提出,此时并没有支持 ECM 训练的数据集,所以他们先在 NLPCC2013 和 NLPCC2014 的一个情绪分类数据集上训练了一个情绪分类器(emotion classifier) ,然后使用这个分类器对 STC 数据集进行自动标注,从而生成一个全新的带有情绪的数据集。他们称之为 ESTC,不过由于自动标注,必不可免地拥有噪声。
Emotion Category Embedding 提取情绪类别的嵌入。Internal Memory 记录用户交谈过程中的短暂情绪变化,该模块中的情绪状态向量 \(M^I\) 会影响解码过程。特别地,其不同于其他模型的记忆模块,当解码过程结束后,记忆模块中的状态应该衰减至 0,这代表着情绪被机器完全地表达出来。External Memory 通过对情感词(emotion words)和通用词(generic words)分配不同的生成概率,从而生成进一步情绪词。由于内部情绪状态和被挑选出的单词之间并不具有明显的关系,而有些词汇可以很好的表达出感情,例如 awesome,所以需要一个外部记忆模块控制这些情绪词。(博主注:原论文中并没有写明 Internal Memory(下称 IM) 和 External Memory(下称 EM) 的具体用法,但是我认为 IM 应该是配合着 GRU 使用,它是 GRU 的输入之一,同时 GRU 也会影响 IM 的状态。而 EM 是在 GRU 生成隐藏状态 \(s_t\) 后使用的,EM 用于进一步完善所生成单词的概率分布。)
另外此文的 loss function 设计的很有启发性。 - Rashkin et al., 2018 提出了一个数据集 EmpatheticDialogues,以及提出了 Pre-trained、Fine-tuned、EmoPrepend-k、TopicPrepend-k、Multi-task 和 Ensem-DM 基线模型。
- Lin et al., 2019b 提出了 MoLE 架构,在 EmpatheticDialogues 数据集上进行训练,使得其可以生成移情回复。它主要由三大组件组成:1)emotion tracker 编码上下文信息 \(\mathcal{C}\),同时计算用户潜在情绪的分布;2)emotion-aware listeners 独立地关注上述的分布,并计算自己的分布;3)meta listener 采用各个 emotion-aware listener 的加权表征,然后相加为一个表征,并生成最终的回复。。其中 emotion-aware listeners 还包含 shared listener 和 \(n\) 个独立的 empathetic listener,shared listener 捕获通用信息,empathetic listener 捕获其对应情绪的信息。
- Lin et al., 2019a 提出了一个对话代理 CAiRE。首先使用 GPT 预训练模型,其中 GPT 已经在大型文本语料库 BooksCorpus 上进行了预训练。其次由于现存的移情对话数据集相对较小,仅在这数据集上进行微调,模型在闲聊时所拥有的话题可能会有相对的局限。为了增强 CAiRE 在闲聊时的能力,参考 Wolf et al., 2019 的迁移学习策略,先在 PersonChat 上对模型进行预训练,此时的预训练不同于之前的预训练。该步的训练使得 CAiRE 拥有一种人格,而之前的预训练是使 CAiRE 拥有理解语言的能力。 另外为了完全利用在 PersonaChat 上预训练的效果,他们自定义了三条 CAiRE 的人物定位(persona)语句。这些语句代表着 CAiRE 的人物定位。
- Zandie et al., 2020 提出了 EmpTransfo 架构。他们将序列输入进 Transformer(GPT-2)中得到特征,然后将特征分别输入给三个头,即 Language modeling head(LM),Next utterance prediction head(NUP)和 Next emotion prediction head(NEP)。LM 生成回复语句,与 CAiRERE 类似,NUP 预测干扰项是否为正确回复(感觉这个模块有点问题,可能公式写错了),NEP 预测回复语句所带有的情绪。其中 NUP 是参考了 BERT 的做法。
- Zhong et al., 2020 提出了 Persona-based Empathetic Conversation(PEC)数据集,提供一个基线,并且证明 persona 对移情回复有着提升性能的效果。他们提出的模型的做法是:对 \(X, P, y\) 分别使用 BERT 提取向量表征,然后使用 Co-attention 机制配上 max-pooling 提取特征。最后将所有向量拼接后做 dot 运算,得到一个值,从而判断某一个候选回复是否为合适的回复。其中 \(X\) 是对话上下文,\(P\) 是 persona 语句(用于提升性能,博主注:我不太懂这个 persona 是什么意思),\(y\) 是候选回复。所以这个模型的运行方式是,用 \(X\) 对每一个候选回复 \(y\) 做点积得到一个分数,然后选取分数最高的候选回复返回。
论文笔记
Dataset
简称 | 数据集名称 | 来源 | 类型 | 语言 | 公开 |
---|---|---|---|---|---|
PEC | Persona-based Empathetic Conversations | persona + empathy | en | 是? | |
ED | EmpatheticDialogues | CS | empathy | en | 是 |
PCR | persona-based conversations from Reddit | persona | en | 否 | |
none | MojiTalk | emotion | en | 是 | |
none | Dailydialog | various websites | emotion + topic + action | en | 是 |
-- | Emotion Analysis in Chinese Weibo Texts |
简称 | 数据集名称 | 来源 | 类型 | 语言 | 公开 |
---|---|---|---|---|---|
PEC | Persona-based Empathetic Conversations | persona + empathy | en | 是? | |
PC | PersonaChat | CS | persona | en | 是 |
情感分析
这个领域说实话挺乱的,有叫 sentiment analysis(情感分析)/sentiment classification 的,也有叫 emotion classification(情绪分类)/emotion analysis/emotion detection 的。不过这两种任务实际上有一点不同,sentiment analysis 分析的是消极积极的程度,一般是二分类,但是也有多分类的。比如说在影评的时候,如果满分是 10 分,那么就是十分类问题。而 emotion classification 是对语句所包含的情绪进行分类,例如喜悦、快乐、满足、幸福、恐惧、悲伤等等等等。虽然说有点不一样,但是说白了都是对于情感/情绪的一个分类问题。
总而言之,简单来说,喜怒哀乐是 emotion,消极中性积极是 sentiment。【2】
说实话,在中文中,情绪和情感这两个词其实一般没有很大的区别。但是在中英文互翻的时候就有问题了,比如 sentiment analysis,我觉得叫情绪分析更为贴切。个人认为情感是人类对事物的某种表达,它常常有多种类别,例如喜怒哀乐等,这些都是人类经过长时的积淀而产生的。但是情绪更像是瞬发的表达,正如影评分类之类的任务,并不会包含过多的情感,更多是情绪。例如电影好不好看,菜好不好吃,这些都是瞬时的【3】。虽然本文的主要关注点是情感计算,本来想使用 emotion classification 这个名词,但是由于 sentiment analysis 使用较广,并且名词是在太多,所以避免语义上的问题,下文仅使用名词“情感分析”。
本人在网络上找到了一些综述性质的文章,并将其中的几篇引用较高的论文拿出来做一项总结【1,4】。本文将总结几篇情感分析的论文。
相关工作
参考资料
- awesome-sentiment-analysis
- 深度学习中的情感分析(sentiment)和情绪分析 (emotion) 的区别是什么?
- 在心理学上,「情绪」与「情感」之间有何异同?
- 「情感分析领域」简单调研