如何在Stanford NER中使用IOB标签?

时间:2014-01-30 22:48:22

标签: stanford-nlp named-entity-recognition

似乎有一些不同的设置:

iobtags
iobTags
entitySubclassification (IOB1 or IOB2?)
evaluateIOB

我使用哪种设置,以及如何正确使用?

我试着像这样标记:

1997    B-DATE
volvo   B-BRAND
wia64t  B-MODEL
highway B-TYPE
tractor I-TYPE

但是在训练输出上,似乎认为B-TYPE和I-TYPE是不同的类别。

我正在使用2013-11-12版本。

1 个答案:

答案 0 :(得分:13)

如何做到这一点目前(2013年发布)有点乱,因为两个不同的DocumentReaderAndWriter实现有两组不同的标志。遗憾。

CoNLLDocumentReaderAndWriter中提供了对不同IOB样式的最灵活支持。您可以将任何IOB / IOE / ...注释映射到您的示例(B-BRAND)之类的带连字符的前缀,以及在读取带有该标志的文件时的任何其他内容:

-entitySubclassification IOB2

然后将得到的标签集用于训练和分类。这些选项记录在entitySubclassify()的{​​{1}}方法中:IOB1,IOB2,IOE1,IOE2,SBIEO,IO。您可以在Tjong Kim Sang and Veenstra 1999中找到有关IOB1与IOB2的讨论。默认情况下,表示在输出时映射回IOB1,因为这是CoNLL CoNLLDocumentReaderAndWriter程序中使用的默认值,但您可以将其保存为您使用标志映射到它的内容:

conlleval

要使用此-retainEntitySubclassification ,您可以提供以下培训命令:

DocumentReaderAndWriter

或者,java8 -mx6g edu.stanford.nlp.ie.crf.CRFClassifier -prop conll.crf.chris2009.prop -readerAndWriter edu.stanford.nlp.sequences.CoNLLDocumentReaderAndWriter -entitySubclassification iob2 是我们在分布式模型中使用的默认ColumnDocumentReaderAndWriter。你得到的选项是不同的,略有限制。你有这两个标志:

  • DocumentReaderAndWriter将采用普通(“BRAND”)或类似CoNLL(“I-BRAND”)标签,并将其映射到无前缀的IO标签(“BRAND”)并将其用于培训和分类。
  • -mergeTags可以使用普通(“BRAND”)或类似CoNLL(“I-BRAND”)标签,并将它们映射到IOB2。

在序列模型中,对于任何标记方案(如IOB2),标签不同的类。这就是这些标签计划的工作方式。 “I-”,“B-”等的特殊解释留给人类观察者和实体级评估软件。附带的评估软件仅适用于IOB1,IOB2或无前缀IO编码。