You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AllenNLP BERT SRL所需conll-formatted-ontonotes-5.0输入格式问询

BERT SRL自定义数据集训练格式问题

我的目标是在其他数据集上训练BERT SRL,根据官方配置文件要求,训练需要使用conll-formatted-ontonotes-5.0格式的数据。
我的原始数据为CoNLL格式,我已将其转换为GitHub版OntoNotes v.5.0对应的conll-formatted-ontonotes-5.0格式。数据可正常读取,训练流程看似正常,但精度始终为0。我猜测问题原因可能是SRL论元编码(BOI还是短语级?)、列结构(不同版本CoNLL格式OntoNotes此处存在差异)与预期输入不符,也可能是代码中硬编码了角色标签:我参考基准数据使用了长格式标签(如ARGM-TMP),但其他数据集常使用短格式标签(如AM-TMP)。
我想明确此处要求的是哪种数据集和格式,我推测是恢复了WORD列的OntoNotes 5.0的某类CoNLL/Skel格式,但存在以下疑问:

  • LDC版OntoNotes LDC2013T19似乎未附带CoNLL版本数据
  • 其格式也与OntoNotes官方提供的GitHub版OntoNotes v.5.0的conll-formatted-ontonotes-5.0格式不匹配
  • PropBank项目中至少还存在另一版OntoNotes 5.0的CoNLL/Skel格式数据,该格式与前述版本的差异在于少3列、谓词编码方式不同,我的部分原始数据就是该格式。
  • SrlReader文档提及使用BIO(IOBES)编码,该编码确实被其他CoNLL版本PropBank数据使用,但前述OntoNotes语料均未使用该编码,除此之外还有CoNLL-2008、CoNLL-2009等不同格式变体。
    在我开始对SrlReader进行逆向工程前,请问是否有人可提供符合要求的样本数据片段,以便我对应调整自己的数据格式?
    以下是我转换为conll-formatted-ontonotes-5.0格式的EWT语料样本:
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0   0   where   WRB (TOP(S(SBARQ(WHADVP*)   -   -   -   -   *   (ARGM-LOC*) *   *   -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0   1   can MD  (SQ*    -   -   -   -   *   (ARGM-MOD*) *   *   -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0   2   I   PRP (NP*)   -   -   -   -   *   (ARG0*) *   *   -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0   3   get VB  (VP*    get 01  -   -   *   (V*)    *   *   -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0   4   morcillas   NNS (NP*)   -   -   -   -   *   (ARG1*) *   *   -

回答

问题根因

你遇到的精度为0的问题核心是格式不匹配,SrlReader默认读取的是CoNLL-2012 SRL任务格式,和你用的GitHub版conll-formatted-ontonotes-5.0的列结构、论元标注逻辑存在差异,具体调整方法如下:

正确格式要求

  1. 标签规则:SrlReader默认会自动将输入的短语级论元括号标注转换为IOBES编码,不需要手动做编码转换,但是要保证论元标签是长格式的ARGM-*/ARG[0-9],你当前用的长标签是符合要求的,短标签AM-*会被识别为未知标签直接过滤,这是精度为0的核心可能原因之一。
  2. 列结构要求:标准的CoNLL-2012 SRL输入需要12列,按顺序分别是:
    • 文档ID
    • 句子编号
    • 词编号
    • 表层词
    • POS标签
    • 句法成分树标签
    • 谓词lemma
    • 谓词义项编号
    • 2列占位符,无内容可填-
    • 核心语义角色标注
    • 可选的额外谓词语义角色列,有多少个谓词就加多少列
  3. 谓词标注要求:只有作为谓词的行,第7、8列才需要填lemma和义项号,其他行这两列填-,你提供的样本这部分是符合要求的。

符合要求的样本片段

ptb/wsj/00/wsj_0001 0 0 Pierre NNP (NP(NP* - - - - * (ARG0*) *
ptb/wsj/00/wsj_0001 0 1 Vinken NNP * - - - - * * *
ptb/wsj/00/wsj_0001 0 2 , , * - - - - * * *
ptb/wsj/00/wsj_0001 0 3 61 CD (ADJP* - - - - * (ARGM-TMP*) *
ptb/wsj/00/wsj_0001 0 4 years NNS * - - - - * * *
ptb/wsj/00/wsj_0001 0 5 old JJ *) - - - - * * *
ptb/wsj/00/wsj_0001 0 6 , , * - - - - * * *
ptb/wsj/00/wsj_0001 0 7 will MD (VP* - - - - * (ARGM-MOD*) *
ptb/wsj/00/wsj_0001 0 8 join VB * join 01 - - * (V*) *
ptb/wsj/00/wsj_0001 0 9 the DT (NP* - - - - * (ARG1*) *
ptb/wsj/00/wsj_0001 0 10 board NN * - - - - * * *
ptb/wsj/00/wsj_0001 0 11 as IN (PP* - - - - * (ARGM-PRD*) *
ptb/wsj/00/wsj_0001 0 12 a DT (NP* - - - - * * *
ptb/wsj/00/wsj_0001 0 13 nonexecutive JJ * - - - - * * *
ptb/wsj/00/wsj_0001 0 14 director NN * - - - - * * *
ptb/wsj/00/wsj_0001 0 15 Nov. NNP (NP* - - - - * (ARGM-TMP*) *
ptb/wsj/00/wsj_0001 0 16 29 CD * - - - - * * *
ptb/wsj/00/wsj_0001 0 17 . . *))))) - - - - * * *

快速验证方法

你可以直接用内置工具加载你的数据,打印输出的instance字段里的srl_tags,如果所有标签都是O,就说明你的标签/列结构没有被正确识别,优先检查列分隔符是不是制表符,有没有多列/少列的情况。

内容的提问来源于stack exchange,提问作者Chiarcos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:45:02