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

Nei*_*gan 6 named-entity-recognition stanford-nlp

似乎有一些不同的设置:

iobtags
iobTags
entitySubclassification (IOB1 or IOB2?)
evaluateIOB
Run Code Online (Sandbox Code Playgroud)

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

我试着像这样标记:

1997    B-DATE
volvo   B-BRAND
wia64t  B-MODEL
highway B-TYPE
tractor I-TYPE
Run Code Online (Sandbox Code Playgroud)

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

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

Chr*_*ing 13

如何做到这一点目前(2013年发布)有点混乱,因为两种不同的DocumentReaderAndWriter实现有两组不同的标志.抱歉.

对于不同IOB样式的最灵活支持可在以下位置找到CoNLLDocumentReaderAndWriter.您可以将任何IOB/IOE/...注释映射到您的示例(B-BRAND)之类的带连字符的前缀,以及在使用该标志读取文件时:

-entitySubclassification IOB2
Run Code Online (Sandbox Code Playgroud)

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

-retainEntitySubclassification
Run Code Online (Sandbox Code Playgroud)

要使用此功能DocumentReaderAndWriter,您可以提供以下培训命令:

java8 -mx6g edu.stanford.nlp.ie.crf.CRFClassifier -prop conll.crf.chris2009.prop -readerAndWriter edu.stanford.nlp.sequences.CoNLLDocumentReaderAndWriter -entitySubclassification iob2
Run Code Online (Sandbox Code Playgroud)

或者,ColumnDocumentReaderAndWriterDocumentReaderAndWriter我们在分布式模型中使用的默认值.你得到的选项是不同的,略有限制.你有这两个标志:

  • -mergeTags 将采用普通("BRAND")或类似CoNLL("I-BRAND")标签,并将其映射到无前缀的IO标签("BRAND"),并将其用于训练和分类.
  • -iobTags 可以采用普通("BRAND")或类似CoNLL("I-BRAND")标签,并将它们映射到IOB2.

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