设计并实现了一种基于BERT的动态融合CNN和LSTM的讽刺计算模型Convolution-Sequence-Hybrid-Network,简称CSH-Net。用于解决以下问题:
基于微博上下文和评论,判断目标语句是否为讽刺。
结合句法特征和上下文语义信息,完成讽刺语句的类别分类任务。类别包括嘲笑、反语、讽刺文学等。
采用序列标注算法,从目标语句中准确识别讽刺目标实体。
SarcasmDetection/
|
├── code/
| ├── detect/
| | ├── baseline.py
| | ├── Bi-LSTM.py
| | ├── CNN.py
| | └── CSH-Net.py
| |
| ├── classify/
| | ├── baseline.py
| | ├── Bi-LSTM.py
| | ├── CNN.py
| | └── CSH-Net.py
| |
| └── identify/
| ├── baseline.py
| ├── Bi-LSTM.py
| ├── CNN.py
| └── CSH-Net.py
|
├── data/
| ├── train.json
| └── train_topic.json
|
├── ROC/
| └── ...
|
└── ConfusionMatrix/
└── ...
数据集详见CCAC2024讽刺计算数据集
包含超过一万条微博评论,每条微博评论有相关联的原帖话题。
| 字段名 | 描述 | 详细说明 |
|---|---|---|
| topicId | 评论关联的话题id | 相关话题内容存放于train_topic.json |
| review | 评论内容 | 清洗过的中文评论 |
| isSarcasm | 该评论是否为讽刺 | 1代表讽刺,0代表非讽刺 |
| sarcasmType | 该评论的讽刺类型 | 若isSarcasm字段为0,则该字段为null;否则1~6表示六种讽刺类型 |
| dataId | 评论id | 每一个评论对象的唯一标识 |
| sarcasmTarget | 该评论的讽刺目标实体列表 | 目标实体可能有多个 |
示例:
{
"topicId": 13,
"review": "被扎的那个得是过命的交情",
"isSarcasm": 1,
"sarcasmType": 3,
"dataId": 8485,
"sarcasmTarget": ["医学生"]
}包含40个微博话题,每条都包含话题的标题和内容。
| 字段名 | 描述 | 详细说明 |
|---|---|---|
| topicId | 话题id | 话题的唯一标识 |
| topicTitle | 话题标题 | 一般较短,为话题内容的总结 |
| topicContent | 话题内容 | 一般较长,描述事件的详细背景与过程 |
示例:
{
"topicId": 13,
"topicTitle": "医学生第一次给人打针,眼睛一闭",
"topicContent": "#医学生第一次给人打针#哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈“眼睛一闭”可还行。"
}| 模型 | Precision | Recall | F1 Score | AUC |
|---|---|---|---|---|
| BERT(baseline) | 0.8080 | 0.8392 | 0.8233 | 0.8139 |
| BERT+CNN | 0.8420 | 0.8228 | 0.8323 | 0.8293 |
| BERT+Bi-LSTM | 0.8002 | 0.9000 | 0.8472 | 0.8398 |
| CSH-Net | 0.8439 | 0.8589 | 0.8513 | 0.8576 |
| static-CSH-Net | 0.8250 | 0.8684 | 0.8461 | 0.8512 |
标记为讽刺的评论分为6种类型,详细描述如下表所示:
| 标签 | 类型 | 解释 | 示例 |
|---|---|---|---|
| 1 | Sarcasm | 与事态相矛盾并持批评态度的评论 | “想涨价就直说” |
| 2 | Irony | 与事态相矛盾但没有明显批评态度的评论 | “我再涨涨你就知道现在有多便宜了” |
| 3 | Satire | 看似支持但包含潜在分歧和嘲讽的评论 | “支持啊!公交车能不能也加入啊” |
| 4 | Understatement | 降低或破坏事态重要性的评论 | “把人都枪毙了岂不更省事儿?” |
| 5 | Overstatement | 用明显夸张的措辞描述事态的评论 | “好嘛,上学的活不起了” |
| 6 | Rhetorical question | 用反问语句引导读者推理出与实际情况明显相悖的含义的评论 | “目的是错峰?给涨价找个借口罢了!” |
其中,标签1有9754条评论,标签2有1460条评论,标签3有1064条评论,标签4有55条评论,标签5有175条评论,标签6有3135条评论。共计11209条评论。
| 模型 | Weighted-F1 | Macro-F1 | Micro-F1 |
|---|---|---|---|
| BERT(baseline) | 0.7493 | 0.5001 | 0.7783 |
| BERT+CNN | 0.7618 | 0.4916 | 0.7840 |
| BERT+Bi-LSTM | 0.7597 | 0.5184 | 0.7827 |
| CSH-Net | 0.7642 | 0.5501 | 0.7853 |
| 模型 | Exact Match Precision | Exact Match Recall | Exact Match F1 | Dice |
|---|---|---|---|---|
| BERT(baseline) | 0.6447 | 0.6005 | 0.6218 | 0.6558 |
| LERT | 0.6503 | 0.6106 | 0.6298 | 0.6664 |
| BERT+CNN | 0.6676 | 0.5967 | 0.6302 | 0.6613 |
| BERT+Bi-LSTM | 0.6252 | 0.6176 | 0.6214 | 0.6552 |
| CSH-Net | 0.6195 | 0.6571 | 0.6377 | 0.6717 |
| CSH-Net(LERT) | 0.6494 | 0.6449 | 0.6472 | 0.6812 |