🚀 對話情感識別 (ERC)
對話情感識別(ERC)項目旨在利用文本模態對對話中的情感進行準確分類。本項目在MELD和IEMOCAP兩個數據集上進行了實驗,具有較高的實用價值和研究意義。
🚀 快速開始
請查看此處獲取詳細信息。
觀看演示視頻!
✨ 主要特性
- 目前僅使用文本模態對對話中的情感進行分類。
- 在MELD和IEMOCAP兩個數據集上進行實驗,取得了較好的效果。
- 提供了EmoBERTa模型的訓練和部署方法。
📦 安裝指南
前提條件
- 一臺x86 - 64的Unix或類Unix機器。
- Python 3.8或更高版本。
- 強烈建議在虛擬環境(如conda、virtualenv等)中運行,以免影響系統Python。
- 克隆[
multimodal - datasets
倉庫](https://github.com/tae898/multimodal - datasets)(子模塊)。
- 執行
pip install -r requirements.txt
安裝依賴。
EmoBERTa訓練
首先在train - erc - text.yaml
中配置超參數和數據集,然後在該目錄下運行以下命令。建議在虛擬環境中運行。
python train-erc-text.py
此命令將依次調用train - erc - text - hp.py
和train - erc - text - full.py
。
💻 使用示例
訓練結果
模型 |
配置 |
MELD加權f1分數 |
IEMOCAP加權f1分數 |
EmoBERTa |
無前後對話 |
63.46 |
56.09 |
|
僅含過去對話 |
64.55 |
68.57 |
|
僅含未來對話 |
64.23 |
66.56 |
|
含前後對話 |
65.61 |
67.42 |
|
→ 無說話者姓名 |
65.07 |
64.02 |
以上數值是五次隨機種子運行的平均值。
如果您想查看更多訓練測試細節,請查看./results/
。
如果您想下載訓練好的檢查點等文件,可以從這裡下載,這是一個較大的壓縮文件。
部署
Huggingface
我們已在Huggingface上發佈了模型:
- [emoberta - base](https://huggingface.co/tae898/emoberta - base)
- [emoberta - large](https://huggingface.co/tae898/emoberta - large)
它們分別基於[RoBERTa - base](https://huggingface.co/roberta - base)和[RoBERTa - large](https://huggingface.co/roberta - large),在[MELD和IEMOCAP兩個數據集](utterance - ordered - MELD_IEMOCAP.json)上進行訓練。我們部署的模型既不考慮說話者信息,也不考慮前後對話,即每次僅對單個語句(如 "I love you")進行分類。
Flask應用
您可以將Flask RESTful服務器應用作為Docker容器運行,也可以作為Python腳本運行。
- 作為Docker容器運行(推薦)
有四個鏡像可供選擇:
docker run -it --rm -p 10006:10006 tae898/emoberta - base
docker run -it --rm -p 10006:10006 --gpus all tae898/emoberta - base - cuda
docker run -it --rm -p 10006:10006 tae898/emoberta - large
docker run -it --rm -p 10006:10006 --gpus all tae898/emoberta - large - cuda
- 在Python環境中運行
此方法不如Docker方法推薦。
首先運行
pip install -r requirements - deploy.txt
,然後運行app.py
,這是一個Flask RESTful服務器,用法如下:
app.py [-h] [--host HOST] [--port PORT] [--device DEVICE] [--model - type MODEL_TYPE]
例如:
python app.py --host 0.0.0.0 --port 10006 --device cpu --model - type emoberta - base
客戶端
應用運行後,您可以向服務器發送文本。首先安裝必要的包:pip install -r requirements - client.txt
,然後運行client.py,用法如下:
client.py [-h] [--url - emoberta URL_EMOBERTA] --text TEXT
例如:
python client.py --text "Emotion recognition is so cool!"
將輸出:
{
"neutral": 0.0049800905,
"joy": 0.96399665,
"surprise": 0.018937444,
"anger": 0.0071516023,
"sadness": 0.002021492,
"disgust": 0.001495996,
"fear": 0.0014167271
}
📚 詳細文檔
故障排除
查找和解決問題的最佳方法是查看GitHub的問題標籤。如果您找不到所需內容,請隨時提出問題,我們會及時響應。
貢獻
貢獻使開源社區成為一個學習、啟發和創造的絕佳場所。您的任何貢獻都非常感謝。
- 分叉項目。
- 創建您的功能分支(
git checkout -b feature/AmazingFeature
)。
- 在根倉庫目錄下運行
make style && quality
,確保代碼質量。
- 提交更改(
git commit -m 'Add some AmazingFeature'
)。
- 推送到分支(
git push origin feature/AmazingFeature
)。
- 打開拉取請求。
引用我們的工作
請查看論文。
@misc{kim2021emoberta,
title={EmoBERTa: Speaker-Aware Emotion Recognition in Conversation with RoBERTa},
author={Taewoon Kim and Piek Vossen},
year={2021},
eprint={2108.12009},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
📄 許可證
本項目採用MIT許可證。
作者