【问题标题】:Stanford NER custom model accuracy testing斯坦福 NER 自定义模型精度测试
【发布时间】:2019-01-13 16:06:09
【问题描述】:

我正在使用自定义模型进行实体提取。我在一个大型数据集上训练了基于 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 并且运行良好。

现在我的问题是,如何在没有任何手动计数和计算的情况下计算任何未见(新)数据的百分比准确度??

我是这个领域的新手,所以请发布详细的描述性答案。谢谢你的时间。

【问题讨论】:

    标签: stanford-nlp named-entity-recognition


    【解决方案1】:

    如果您为测试集创建带有黄金标签的 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
    

    【讨论】:

    • testData.conll的格式应该是什么??单词 \t 原始标签或空格分隔或其他什么?
    • conll 格式,和训练数据一样...word + "\t" + gold
    • 这适用于上述问题,但是当我在 NER 模型训练中使用 POS 标签作为特征时,此命令在新模型上不起作用?训练文件类似于 word+"\t"+NER+"\t"+POS 和属性文件更改映射 = word=0,answer=1,tag=2。
    • 您是否将 useTags 添加到您的属性文件中? nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/ie/…
    猜你喜欢
    • 1970-01-01
    • 2020-08-30
    • 2017-06-06
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多