似乎有一些不同的设置:
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版本。
答案 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编码。