什么是CoNLL数据格式?

时间:2014-12-11 05:45:51

标签: nlp text-parsing text-mining information-extraction

我是文本挖掘的新手。我正在使用一个开源jar(Mate Parser),它在依赖解析后以CoNLL 2009格式给出输出。我想使用依赖解析结果进行信息提取。但我能够理解一些输出但不能理解CoNLL数据格式。任何人都可以帮助我理解CoNLL数据格式吗?任何类型的指针将不胜感激。

2 个答案:

答案 0 :(得分:55)

由于CoNLL每年都是不同的共享任务,因此有许多不同的CoNLL格式。 CoNLL 2009的格式描述为here。每行代表一个单词,带有一系列制表符分隔的字段。 _表示空值。 Mate-Parser's manual表示它使用了CoNLL 2009的前12列:

ID FORM LEMMA PLEMMA POS PPOS FEAT PFEAT HEAD PHEAD DEPREL PDEPREL

其中一些列的定义来自早期的共享任务(2006年和2007年使用的CoNLL-X format):

  • ID(句子中的索引,从1开始)
  • FORM(单词形式本身)
  • LEMMA(单词的引理或词干)
  • POS(演讲的一部分)
  • FEAT(由|分隔的形态特征列表)
  • HEAD(语法父级索引,ROOT为0)
  • DEPRELHEAD与此词之间的句法关系)

这些列的变体(例如,PPOS但不是POS)以P开头,表示该值是自动预测而非黄金标准值。

更新:现在还有CoNLL-U数据格式,它扩展了CoNLL-X格式。

答案 1 :(得分:1)

更新@dmcc 的回答:

  • CoNLL 是 NLP 中 TSV 格式的常规名称(TSV - 制表符分隔值,即带有分隔符的 CSV)
  • 它源于在自然语言学习会议上组织的一系列共享任务(因此得名)
  • 并非所有这些任务都使用“CoNLL”格式,有些任务使用 JSON 或 XML 格式
  • 有独立于 CoNLL 开发的“CoNLL”格式,最著名的是 CoNLL-U
  • CoNLL 格式在列的选择和顺序方面有所不同

在 CoNLL 格式中,

  • 每个单词(标记)都在一行中表示。
  • 每个句子与下一个句子之间用空行分隔
  • 每一列代表一个注释
  • 句子中的每个单词都有相同的列数(在某些格式中:语料库中的每个单词都有相同的列数)
  • 注释是关于特定单词的字符串值
  • 跨越多个单词的注释有时会使用特殊符号,例如圆括号(表示短语的开头和结尾)或 IOBES 注释(例如,B-NP:NP 的开头,I-NP:在中间of NP, E-NP: NP 结尾, S-NP: NP 从当前词开始和结束, O: 无 NP 注释)
  • 一些 CoNLL 格式将一列或多列数字标识符作为第一列,这些之后的下一列(如果没有 ID,则为第一列)通常包含 WORD
  • 句子中第一个单词的 ID 为 1。如果未提供 ID 列,则 ID 为句子中前面的单词数加 1。
  • 在依存句法中,单词之间存在语法关系,从属被标记为 HEAD(= 父词的 ID)和 EDGE/DEP[endency](= 语法关系),两者都在单独的列中
  • 如果依赖语法中的单词没有父级(即它是句法根),则将其 HEAD 设置为 0

使用声称支持(某些)“CoNLL 格式”的工具或库时要小心。不同的 CoNLL 格式具有不同的列顺序,开发人员可能没有意识到这一点。因此,如果它们从另一种(或未指定的)CoNLL 格式获取数据,它们很可能无法按预期工作。

对于不同的 CoNLL 格式之间的转换,您可以考虑使用 CoNLL-RDF (https://github.com/acoli-repo/conll-rdf),resp., CoNLL-Transform (https://github.com/acoli-repo/conll-transform)(免责声明:由我的实验室开发。)