Project Icon

conv-emotion

会话情感识别技术及最新数据集与模型更新

本页面介绍了会话情感识别技术,包括用于识别会话情感的多种基于PyTorch和TensorFlow的模型,如COSMIC、TL-ERC和DialogueGCN。还提供了最新的多模态多方对话数据集和相关基准数据集,并介绍了识别会话情感原因和对话生成的技术。这些技术通过建模对方状态和跨人际依赖关系来实现情感识别。最新更新包括M2H2数据集和相关基线模型,并链接至其他重要项目和研究。

对话中的情感识别

注意

对于询问如何提取视觉和音频特征的人,请查看以下链接:https://github.com/soujanyaporia/MUStARD

更新 🔥 🔥 🔥

日期公告
2024年3月10日如果您对测试大语言模型的IQ感兴趣,请查看我们的新工作:AlgoPuzzleVQA
2021年8月3日🎆 🎆 我们发布了一个新的数据集M2H2:用于对话中幽默识别的多模态多方印地语数据集。请查看:M2H2。M2H2数据集的基线是基于DialogueRNN和bcLSTM创建的。
2021年5月18日🎆 🎆 我们发布了一个新的代码库,其中包含用于解决对话中情感原因识别问题的模型。请查看:emotion-cause-extraction。感谢Pengfei Hong整理这些内容。
2020年12月24日🎆 🎆 对识别对话中的情感原因感兴趣吗?我们刚刚为此发布了一个数据集。请前往https://github.com/declare-lab/RECCON
2020年10月6日🎆 🎆 对话中情感识别的新论文和最先进成果。请参考目录COSMIC中的代码。阅读论文 -- COSMIC: COmmonSense knowledge for eMotion Identification in Conversations
2020年9月30日发布了句级对话理解的新论文和基线。请阅读我们的论文Utterance-level Dialogue Understanding: An Empirical Study。Fork代码
2020年7月26日发布了新的DialogueGCN代码。请访问https://github.com/declare-lab/conv-emotion/tree/master/DialogueGCN-mianzhang。所有功劳归功于Mian Zhang(https://github.com/mianzhang/)
2020年7月11日对阅读ERC或相关任务(如对话中的讽刺检测)的论文感兴趣吗?我们汇编了一份全面的论文阅读清单。请访问https://github.com/declare-lab/awesome-emotion-recognition-in-conversations
2020年6月7日:ERC任务的新的最先进结果将很快发布。
2020年6月7日:conv-emotion 仓库将在 https://github.com/declare-lab/ 上维护
2019年12月22日:DialogueGCN的代码已发布。
2019年10月11日:新论文:用于情感识别的对话迁移学习。
2019年8月9日:关于对话中情感识别(ERC)的新论文。
2019年3月6日:在MELD数据集上训练DialogueRNN的特征和代码已发布。
2018年11月20日:ICON和DialogueRNN的端到端版本已发布。

COSMIC是该仓库中表现最好的模型,请访问以下链接比较不同ERC数据集上的模型。

PWC

PWC

PWC

PWC

该仓库包含几种对话中情感识别方法的实现,以及识别对话中情感原因的算法:

与其他情感检测模型不同,这些技术考虑了参与方状态和参与方间依赖关系,以建模与情感识别相关的对话上下文。所有这些技术的主要目的是为同理心对话生成预训练情感检测模型。

Controlling variables in conversation

X和Y之间的二元对话中不同控制变量之间的交互。灰色和白色圆圈分别代表隐藏和观察到的变量。P代表个性,U代表话语,S代表对话者状态,I代表对话者意图,B代表背景知识,Q代表外部和感官输入,E代表情感,Topic代表对话主题。这可以很容易地扩展到多方对话。

情感识别对于同理心和情感对话生成非常有用 -

Affective dialogue generation

数据格式

这些网络需要对话中每个话语的情感/情绪标签和说话者信息,如

参与者1:我讨厌我的女朋友 (愤怒)
参与者2:你有女朋友?! (惊讶)
参与者1:是的 (愤怒)

然而,该代码可以适应只有前面的话语作为上下文可用的任务,而没有相应的标签,目标是只标记当前/目标话语。例如,上下文

参与者1:我讨厌我的女朋友
参与者2:你有女朋友?!

目标

参与者1:是的 (愤怒)

其中目标情感是_愤怒_。 此外,该代码还可以被改造成端到端的方式训练网络。我们很快会推出这些有用的更改。

当前SOTA结果

方法IEMOCAPDailyDialogMELDEmoryNLP
加权平均F1宏F1微F1加权平均F1 (3类)加权平均F1 (7类)加权平均F1 (3类)加权平均F1 (7类)
RoBERTa54.5548.2055.1672.1262.0255.2837.29
RoBERTa DialogueRNN64.7649.6557.3272.1463.6155.3637.44
RoBERTa COSMIC65.2851.0558.4873.2065.2156.5138.11

COSMIC:用于识别对话中情感的常识知识

COSMIC解决了使用常识知识进行对话级情感识别的任务。这是一个新的框架,它结合了不同的常识元素,如心理状态、事件和因果关系,并在此基础上学习参与对话的对话者之间的互动。目前最先进的方法往往在上下文传播、情感转移检测和区分相关情感类别方面遇到困难。通过学习不同的常识表示,COSMIC解决了这些挑战,并在四个不同的基准对话数据集上实现了情感识别的新的最先进结果。

Alt text

执行

首先在这里下载RoBERTa和COMET特征,并将它们保存在COSMIC/erc-training中的适当目录中。然后按如下方式对四个数据集进行训练和评估:

  1. IEMOCAP: python train_iemocap.py --active-listener
  2. DailyDialog: python train_dailydialog.py --active-listener --class-weight --residual
  3. MELD Emotion: python train_meld.py --active-listener --attention simple --dropout 0.5 --rec_dropout 0.3 --lr 0.0001 --mode1 2 --classify emotion --mu 0 --l2 0.00003 --epochs 60
  4. MELD Sentiment: python train_meld.py --active-listener --class-weight --residual --classify sentiment
  5. EmoryNLP Emotion: python train_emorynlp.py --active-listener --class-weight --residual
  6. EmoryNLP Sentiment: python train_emorynlp.py --active-listener --class-weight --residual --classify sentiment

引用

如果您在工作中发现此代码有用,请引用以下论文

COSMIC: COmmonSense knowledge for eMotion Identification in Conversations. D. Ghosal, N. Majumder, A. Gelbukh, R
<p align="center">
  <img src="https://yellow-cdn.veclightyear.com/2b54e442/f9661561-2556-404b-8d11-04d6859c0872.jpg" alt="TL-ERC框架" width="600"/>
</p>

### 设置

1. 使用Conda设置环境:

    ```bash
    conda env create -f environment.yml
    conda activate TL_ERC
    cd TL_ERC
    python setup.py
    ```
2. 下载数据集文件[IEMOCAP](https://drive.google.com/file/d/1nufbrBJ-LtcROv1MviCHFI7tQE3JnqQR/view?usp=sharing)、[DailyDialog](https://drive.google.com/file/d/13rHLtAMmDsiCP1hZwWqMNcrtkmZF_hK3/view?usp=sharing)并将它们存储在`./datasets/`中。

3. 下载HRED在[Cornell](https://drive.google.com/file/d/1OXtnyJ5nDMmK75L9kEQvKPIyO0xzyeVC/view?usp=sharing)和[Ubuntu](https://drive.google.com/file/d/1T2HLfSvWr7CSrhBuE193XRRXwfLkO_aK/view?usp=sharing)数据集上的预训练权重,并将它们存储在`./generative_weights/`中

4. [可选]:要从对话模型训练新的生成权重,请参考https://github.com/ctr4si/A-Hierarchical-Latent-Structure-for-Variational-Conversation-Modeling。


### 使用预训练权重运行ERC分类器

1. `cd bert_model`
2. `python train.py --load_checkpoint=../generative_weights/cornell_weights.pkl --data=iemocap`。   
    - 将`cornell`更改为`ubuntu`,将`iemocap`更改为`dailydialog`以用于其他数据集组合。
    - 删除`load_checkpoint`以避免初始化上下文权重。
    - 要修改超参数,请查看`configs.py`

### [可选]创建ERC数据集分割

1. 在预处理文件中设置[glove](http://nlp.stanford.edu/data/glove.840B.300d.zip)路径。
2. `python iemocap_preprocess.py`。同样适用于`dailydialog`。

### 引用

如果您在工作中发现此代码有用,请引用以下论文。

```bash
Conversational transfer learning for emotion recognition. Hazarika, D., Poria, S., Zimmermann, R., & Mihalcea, R. (2020). Information Fusion.

DialogueGCN: 用于对话情感识别的图卷积神经网络

DialogueGCN(对话图卷积网络)是一种基于图神经网络的ERC方法。我们利用对话者的自身和对话者间依赖关系来为情感识别建模对话上下文。通过图网络,DialogueGCN解决了当前基于RNN方法中存在的上下文传播问题。DialogueGCN天然适用于多方对话。

Alt text

要求

  • Python 3
  • PyTorch 1.0
  • PyTorch Geometric 1.3
  • Pandas 0.23
  • Scikit-Learn 0.20
  • TensorFlow (可选;tensorboard需要)
  • tensorboardX (可选;tensorboard需要)

执行

注意:PyTorch Geometric大量使用CUDA原子操作,是非确定性的来源。为了重现论文中报告的结果,我们建议使用以下执行命令。请注意,此脚本将在CPU上执行。使用以下命令,我们在我们的机器上获得了64.67的加权平均F1分数,在Google Colaboratory上获得了64.44的IEMOCAP数据集加权平均F1分数。

  1. _IEMOCAP_数据集:python train_IEMOCAP.py --base-model 'LSTM' --graph-model --nodal-attention --dropout 0.4 --lr 0.0003 --batch-size 32 --class-weight --l2 0.0 --no-cuda

引用

如果您在工作中发现此代码有用,请引用以下论文。

DialogueGCN: A Graph Convolutional Neural Network for Emotion Recognition in Conversation. D. Ghosal, N. Majumder, S. Poria, N. Chhaya, & A. Gelbukh. EMNLP-IJCNLP (2019), Hong Kong, China.

DialogueGCN-mianzhang: Mian Zhang实现的DialogueGCN

论文"DialogueGCN:用于对话情感识别的图卷积神经网络"的Pytorch实现。

运行

您可以非常轻松地运行整个过程。以IEMOCAP语料库为例:

第1步:预处理。

./scripts/iemocap.sh preprocess

第2步:训练。

./scripts/iemocap.sh train

要求

  • Python 3
  • PyTorch 1.0
  • PyTorch Geometric 1.4.3
  • Pandas 0.23
  • Scikit-Learn 0.20

性能比较

-数据集加权F1
原始IEMOCAP64.18%
本实现IEMOCAP64.10%

致谢

Mian Zhang (Github: mianzhang)

引用

如果您在工作中发现此代码有用,请引用以下论文。

DialogueGCN: A Graph Convolutional Neural Network for Emotion Recognition in Conversation. D. Ghosal, N. Majumder, S. Poria, N. Chhaya, & A. Gelbukh. EMNLP-IJCNLP (2019), Hong Kong, China.

DialogueRNN:用于对话情感检测的注意力RNN

DialogueRNN基本上是一个定制的循环神经网络(RNN),它在对话/对话中即时描述每个说话者的特征,同时建模对话的上下文。该模型可以轻松扩展到多方场景。此外,它还可以用作同理心对话生成的预训练模型。

注意:代码中的默认设置(超参数和命令行参数)适用于BiDialogueRNN+Att。用户需要为其他变体和更改优化设置。 Alt text

要求

  • Python 3
  • PyTorch 1.0
  • Pandas 0.23
  • Scikit-Learn 0.20
  • TensorFlow (可选;tensorboard需要)
  • tensorboardX (可选;tensorboard需要)

数据集特征

请提取DialogueRNN_features.zip的内容。

执行

  1. _IEMOCAP_数据集:python train_IEMOCAP.py <命令行参数>
  2. _AVEC_数据集:python train_AVEC.py <命令行参数>

命令行参数

  • --no-cuda:不使用GPU
  • --lr:学习率
  • --l2:L2正则化权重
  • --rec-dropout:循环dropout
  • --dropout:Dropout
  • --batch-size:批量大小
  • --epochs:训练轮数
  • --class-weight:类别权重(不适用于AVEC)
  • --active-listener:显式听者模式
  • --attention:注意力类型
  • --tensorboard:启用tensorboard日志
  • --attribute:属性1到4(仅适用于AVEC;1 = 效价, 2 = 激活/唤醒, 3 = 预期/期望, 4 = 力量)

引用

如果您在工作中发现此代码有用,请引用以下论文。

DialogueRNN: An Attentive RNN for Emotion Detection in Conversations. N. Majumder, S. Poria, D. Hazarika, R. Mihalcea, E. Cambria, and G. Alexander. AAAI (2019), Honolulu, Hawaii, USA

ICON

交互式对话记忆网络(ICON)是一个多模态情感检测框架,它从对话视频中提取多模态特征,并将自身和说话者间的情感影响分层建模到全局记忆中。这些记忆生成上下文摘要,有助于预测话语视频的情感倾向。

ICON框架

要求

  • python 3.6.5
  • pandas==0.23.3
  • tensorflow==1.9.0
  • numpy==1.15.0
  • scikit_learn==0.20.0

执行

  1. cd ICON

  2. 解压数据如下:

    • 使用此链接下载IEMOCAP的特征。
    • 解压文件夹并将其放在位置:/ICON/IEMOCAP/data/。实现此目的的示例命令:unzip {zip文件路径} -d ./IEMOCAP/
  3. 训练ICON模型:

    • python train_iemocap.py用于IEMOCAP

引用

ICON: Interactive Conversational Memory Networkfor Multimodal Emotion Detection. D. Hazarika, S. Poria, R. Mihalcea, E. Cambria, and R. Zimmermann. EMNLP (2018), Brussels, Belgium

CMN

CMN是一个用于双人对话情感检测的神经框架。它利用文本、音频和视觉模态的多模态信号。它特别将说话者特定的依赖关系纳入其架构中进行上下文建模。然后使用多跳记忆网络从这个上下文生成摘要。 Alt text

要求

  • python 3.6.5
  • pandas==0.23.3
  • tensorflow==1.9.0
  • numpy==1.15.0
  • scikit_learn==0.20.0

执行

  1. cd CMN

  2. 解压数据如下:

    • 使用此链接下载IEMOCAP的特征。
    • 解压文件夹并将其放在位置:/CMN/IEMOCAP/data/。实现此目的的示例命令:unzip {zip文件路径} -d ./IEMOCAP/
  3. 训练ICON模型:

    • python train_iemocap.py用于IEMOCAP

引用

如果您在工作中发现此代码有用,请引用以下论文。

Hazarika, D., Poria, S., Zadeh, A., Cambria, E., Morency, L.P. and Zimmermann, R., 2018. Conversational Memory Network for Emotion Recognition in Dyadic Dialogue Videos. In Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers) (Vol. 1, pp. 2122-2132).

bc-LSTM-pytorch

bc-LSTM-pytorch是一个使用上下文检测对话中话语情感的网络。该模型简单但高效,仅使用LSTM来建模话语之间的时间关系。在此repo中,我们提供了Semeval 2019 Task 3的数据。我们使用并提供了由Semeval 2019 Task 3 - "上下文中的情感识别"组织者发布的数据。在这个任务中,只提供了3个话语 - 话语1(用户1)、话语2(用户2)、话语3(用户1)。任务是预测话语3的情感标签。每个话语的情感标签没有提供。但是,如果您的数据包含每个话语的情感标签,您仍然可以使用此代码并相应地进行调整。因此,此代码仍适用于MOSI、MOSEI、IEMOCAP、AVEC、DailyDialogue等数据集。与CMN、ICON和DialogueRNN不同,bc-LSTM不使用说话者信息。

bc-LSTM框架

要求

  • python 3.6.5
  • pandas==0.23.3
  • PyTorch 1.0
  • numpy==1.15.0
  • scikit_learn==0.20.0

执行

  1. cd bc-LSTM-pytorch

  2. 训练bc-LSTM模型:

    • python train_IEMOCAP.py用于IEMOCAP
  • python 3.6.5
  • pandas==0.23.3
  • tensorflow==1.9.0
  • numpy==1.15.0
  • scikit_learn==0.20.0
  • keras==2.1

执行

  1. cd bc-LSTM

  2. 训练bc-LSTM模型:

    • python baseline.py -config testBaseline.config 用于IEMOCAP

引用

如果您在研究中使用了此代码,请引用以下论文:

Poria, S., Cambria, E., Hazarika, D., Majumder, N., Zadeh, A. and Morency, L.P., 2017. Context-dependent sentiment analysis in user-generated videos. In Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) (Vol. 1, pp. 873-883).

识别对话中的情绪原因

本仓库还包含了用于检测对话中情绪原因的不同架构实现。

对话中的情绪原因类型

(a) 无上下文。(b) 未提及的潜在原因。(c) 区分情绪原因和情绪表达。

对话中的情绪原因类型

(a) 自我感染。(b) 情绪的原因主要是由说话者在前几轮对话中产生的稳定情绪导致的; (c) 人际情绪影响和自我感染的混合类型。

RECCON数据集(DailyDialog折)的基线结果

模型emo_f1pos_f1neg_f1macro_avg
ECPE-2d cross_road
(0 转换层)
52.7652.3995.8673.62
ECPE-2d window_constrained
(1 转换层)
70.4848.8093.8571.32
ECPE-2d cross_road
(2 转换层)
52.7655.5094.9675.23
ECPE-MLL-48.4894.6871.58
Rank Emotion Cause-33.0097.3065.15
RoBERTa-base-64.2888.7476.51
RoBERTa-large-66.2387.8977.06

RECCON数据集上的ECPE-2D

ECPE-2D

引用: 如果您使用此代码,请引用以下论文。

  • Recognizing Emotion Cause in Conversations. Soujanya Poria, Navonil Majumder, Devamanyu Hazarika, Deepanway Ghosal, Rishabh Bhardwaj, Samson Yu Bai Jian, Romila Ghosh, Niyati Chhaya, Alexander Gelbukh, Rada Mihalcea. Arxiv (2020). [pdf]
  • Zixiang Ding, Rui Xia, Jianfei Yu. ECPE-2D: Emotion-Cause Pair Extraction based on Joint Two-Dimensional Representation, Interaction and Prediction. ACL 2020. [pdf]

RECCON数据集上的Rank-Emotion-Cause

ECPE-2D

引用: 如果您使用此代码,请引用以下论文。

  • Recognizing Emotion Cause in Conversations. Soujanya Poria, Navonil Majumder, Devamanyu Hazarika, Deepanway Ghosal, Rishabh Bhardwaj, Samson Yu Bai Jian, Romila Ghosh, Niyati Chhaya, Alexander Gelbukh, Rada Mihalcea. Arxiv (2020). [pdf]
  • Effective Inter-Clause Modeling for End-to-End Emotion-Cause Pair Extraction. In Proc. of ACL 2020: The 58th Annual Meeting of the Association for Computational Linguistics, pages 3171--3181. [pdf]

RECCON数据集上的ECPE-MLL

ECPE-2D

引用: 如果您使用此代码,请引用以下论文。

  • Recognizing Emotion Cause in Conversations. Soujanya Poria, Navonil Majumder, Devamanyu Hazarika, Deepanway Ghosal, Rishabh Bhardwaj, Samson Yu Bai Jian, Romila Ghosh, Niyati Chhaya, Alexander Gelbukh, Rada Mihalcea. Arxiv (2020). [pdf]
  • Zixiang Ding, Rui Xia, Jianfei Yu. End-to-End Emotion-Cause Pair Extraction based on SlidingWindow Multi-Label Learning. EMNLP 2020.[pdf]

RECCON数据集上的RoBERTa和SpanBERT基线

原始RECCON论文中解释的RoBERTa和SpanBERT基线。参考此处

引用: 如果您使用此代码,请引用以下论文。

  • Recognizing Emotion Cause in Conversations. Soujanya Poria, Navonil Majumder, Devamanyu Hazarika, Deepanway Ghosal, Rishabh Bhardwaj, Samson Yu Bai Jian, Romila Ghosh, Niyati Chhaya, Alexander Gelbukh, Rada Mihalcea. Arxiv (2020). [pdf]
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号