Skip to content

yanjiachu/SarcasmDetection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

中文讽刺识别

项目内容

设计并实现了一种基于BERT的动态融合CNN和LSTM的讽刺计算模型Convolution-Sequence-Hybrid-Network,简称CSH-Net。用于解决以下问题:

1. 讽刺识别:

基于微博上下文和评论,判断目标语句是否为讽刺。

2. 讽刺类别识别:

结合句法特征和上下文语义信息,完成讽刺语句的类别分类任务。类别包括嘲笑、反语、讽刺文学等。

3. 细粒度讽刺目标识别:

采用序列标注算法,从目标语句中准确识别讽刺目标实体。

项目结构

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讽刺计算数据集

train.json

包含超过一万条微博评论,每条微博评论有相关联的原帖话题。

字段名 描述 详细说明
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": ["医学生"]
}

train_topic.json

包含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

About

中文讽刺识别、分类与讽刺对象识别

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages