斯坦福大学NER自定义模型准确性测试

时间:2019-01-13 04:12:52

标签: stanford-nlp ner

我正在使用自定义模型进行实体提取。我在大型数据集上对基于CRF的模型进行了训练,

  

java -Xmx16g stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop ner.prop

使用这些功能

属性文件(ner.prop)

 trainFile = training_data_IOB.tsv
 #serializeTo = ner-model.ser.gz
 map = word=0,answer=1

 useClassFeature=true
 useWord=true
 qnSize=10
 entitySubclassification=IOB1
 retainEntitySubclassification=true
 mergeTags=true
 useNGrams=true
 noMidNGrams=true
 maxNGramLeng=6
 usePrev=true
 useNext=true
 useSequences=true
 usePrevSequences=true
 maxLeft=1
 useTypeSeqs=true
 useTypeSeqs2=true
 useTypeySequences=true
 wordShape=chris2useLC
 useDisjunctive=true
 useGazettes=true
 gazette=gazetter.txt
 sloppyGazette=true

培训文件(training_data_IOB.tsv)

Thousands   O
of  O
demonstrators   O
have    O
marched O
through O
London  B-LOC
to  O
protest O
the O
war O
in  O
Iraq    B-LOC
...     ...

宪报文件(gazetter.txt)

B-LOC   Iraq
B-LOC   Afghanistan
B-ORG   Congressional
B-LOC   Bangladesh
B-LOC   Canada
B-ORG   ...

新模型创建为 ner-model.ser.gz ,并且运行良好。

  

现在我的问题是,如何在不进行任何手动计数和计算的情况下如何对任何看不见的(新)数据计算其百分比准确性?

我是该领域的新手,请发表详细的描述性答案。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

如果使用测试集的金色标签创建一个conll文件,则可以使用此命令,它将输出分数(此示例运行我们的模型,替换为您的自定义模型):

java -Xmx2g edu.stanford.nlp.ie.crf.CRFClassifier -loadclassifier edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz -testFile testData.conll