fastNLP/reproduction/coreference_resolution
2019-07-10 20:14:00 +08:00
..
data_load 将DataInfo修改为DataBundle 2019-07-10 20:14:00 +08:00
model 指代消解源码 2019-07-06 18:28:46 +08:00
test 指代消解源码 2019-07-06 18:28:46 +08:00
__init__.py 指代消解源码 2019-07-06 18:28:46 +08:00
README.md 大幅度更新:1、更新requirements;2、将modules.aggregator的内容移至modules.encoder;3、将SQuADMetric重命名为ExtractiveQAMetric;4、更新reproduction的README;5、将reproduction/text_classification的dataloader移动到fastNLP.io.data_loader并做适配性修改 2019-07-09 01:01:47 +08:00
train.py 指代消解源码 2019-07-06 18:28:46 +08:00
valid.py 指代消解源码 2019-07-06 18:28:46 +08:00

共指消解复现

介绍

Coreference resolution是查找文本中指向同一现实实体的所有表达式的任务。 对于涉及自然语言理解的许多更高级别的NLP任务来说 这是一个重要的步骤,例如文档摘要,问题回答和信息提取。 代码的实现主要基于 End-to-End Coreference Resolution (Lee et al, 2017).

数据获取与预处理

论文在OntoNote5.0数据集上取得了当时的sota结果。 由于版权问题,本文无法提供数据集的下载,请自行下载。 原始数据集的格式为conll格式详细介绍参考数据集给出的官方介绍页面。

代码实现采用了论文作者Lee的预处理方法具体细节参见链接。 处理之后的数据集为json格式例子

{
  "clusters": [],
  "doc_key": "nw",
  "sentences": [["This", "is", "the", "first", "sentence", "."], ["This", "is", "the", "second", "."]],
  "speakers": [["spk1", "spk1", "spk1", "spk1", "spk1", "spk1"], ["spk2", "spk2", "spk2", "spk2", "spk2"]]
}

embedding 数据集下载

turian emdedding

glove embedding

运行

# 训练代码
CUDA_VISIBLE_DEVICES=0 python train.py
# 测试代码
CUDA_VISIBLE_DEVICES=0 python valid.py

结果

原论文作者在测试集上取得了67.2%的结果AllenNLP复现的结果为 63.0%。 其中AllenNLP训练时没有加入speaker信息没有variational dropout以及只使用了100的antecedents而不是250。

在与AllenNLP使用同样的超参和配置时本代码复现取得了63.6%的F1值。

问题

如果您有什么问题或者反馈请提issue或者邮件联系我 yexu_i@qq.com