类似于上一个问题How to calculate the overall accuracy of custom trained spacy ner model with confusion matrix?
spaCy在写出训练好的NER模型时,在meta.json
文件中提供Precision,Recall和F1分数。当运行评估命令python -m spacy evaluate
时,这些值也可用。但是,是否有可能获得用于计算这些值的TP,FP,FN的计数?
还能输出导致误报或误报的实际文本/令牌吗?
答案 0 :(得分:2)
我认为您可以在使用
评估所有实体类型时获得 TP、FP、FN 的计数scorer = nlp.evaluate(testset)
TP = scorer.ner.tp
FP = scorer.ner.fp
FN = scorer.ner.fn
并且在评估每个实体类型时使用
scorer = nlp.evaluate(testset)
for ent_type, scorer_ent_type in scorer.ner_per_ents.items():
TP = scorer_ent_type.tp
FP = scorer_ent_type.fp
FN = scorer_ent_type.fn
print('Ent_type:', ent_type, 'TP:', TP, 'FP:', FP, 'FN:', FN)
在训练和评估您的 spacy NER 模型时,据我所知,所有实体的分数都在 spacy 代码中的 this line 中计算。每个实体的分数在 this line 中计算。在这两种情况下,都会调用 score_set 函数。它更新记录器中的 TP、FP 和 FN。如果在这些行设置断点并进行调试,则可以查看变量 doc
、cand_ents
和 gold_ents
,并使用
print(doc)
print(cand_ents-gold_ents) #FP
print(gold_ents-cand_ents) #FN
迟到的答案,但我希望它有所帮助。