斯坦福NER:如何在现有的NER模型中添加我们自己的标签?

时间:2015-02-06 17:17:28

标签: stanford-nlp named-entity-recognition

我正在尝试用自己的标签制作我自己的NER分类器。我尝试使用http://nlp.stanford.edu/software/crf-faq.shtml#j中的指导来训练我的模型。但问题是我没有太多的训练数据。所以我在想是否有一种方法可以在现有的分类器中添加我们自己的标签,如english.all.3class.distsim.crf.ser,english.all.7class.distsim.crf.ser等。我可以训练分类器我自己的标签。

请在这方面帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以通过替换.tsv文件中的默认标记(例如:PERS)来拥有任何标记(例如:PERSON)。分类器通过tsv文件学习您提供的标签,然后使用您提供基于自定义标签的模型时提供的标签进行标记。

参与jane-austen-emma-ch1.tsv(来自http://nlp.stanford.edu/software/ner-example/jane-austen-emma-ch1.tsv)文件的一部分,并将我们自己的自定义标签用于培训,如下所示。我有两个标签 - PERSON和ADJECTIVE

CHAPTER O
I   O
Emma    PERSON
Woodhouse   PERSON
,   O
handsome    ADJECTIVE
,   O
clever  ADJECTIVE
,   O
and O
rich    ADJECTIVE
,   O
with    O
a   O
comfortable ADJECTIVE

现在您可以将此tsv文件提供给分类器(将此tsv文件名放在.prop文件中)并生成如下所示的模型 -

java -cp "stanford-ner.jar:slf4j-api.jar" edu.stanford.nlp.ie.crf.CRFClassifier -prop ner.prop

现在,让我们测试任何文本文件的模型,看看它是如何注释的。我们采用以下文本文件(toBeAnnotated.txt)

CHAPTER O
I Emma Woodhouse, handsome, clever and rich, with a comfortable home and happy disposition, seemed to unite some of the best blessings

运行以下命令可注释上述文本文件 -

java -mx600m -cp "stanford-ner.jar:slf4j-api.jar" edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier ner-model.ser.gz -textFile toBeAnnotated.txt -outputFormat inlineXML 2> /dev/null

我得到的输出是(为了清晰起见,我添加了换行符) -

    I <PERSON>Emma Woodhouse</PERSON>, 
<ADJECTIVE>handsome</ADJECTIVE>, <ADJECTIVE>clever</ADJECTIVE>
     and <ADJECTIVE>rich</ADJECTIVE>, with a <ADJECTIVE>comfortable</ADJECTIVE>
 home and happy <ADJECTIVE>disposition</ADJECTIVE>, 
seemed to unite some of the best blessings