Spacy 如何获得用于计算NER模型指标的混淆矩阵?
与上一个问题类似 spaCy在写出经过训练的NER模型时,在Spacy 如何获得用于计算NER模型指标的混淆矩阵?,spacy,Spacy,与上一个问题类似 spaCy在写出经过训练的NER模型时,在meta.json文件中提供精度、召回率和F1分数。运行求值命令python-m spacy evaluate时,这些值也可用。但是,是否有可能获得用于计算这些值的TP、FP、FN计数 此外,是否可以输出导致假阳性或假阴性的实际文本/标记?我认为在使用 scorer = nlp.evaluate(testset) TP = scorer.ner.tp FP = scorer.ner.fp FN = scorer.ner.fn 以及在使
meta.json
文件中提供精度、召回率和F1分数。运行求值命令python-m spacy evaluate
时,这些值也可用。但是,是否有可能获得用于计算这些值的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代码中计算的。每个实体的分数以单位计算。在这两种情况下,都会调用该函数。它更新记分器中的TP、FP和FN。如果在这些行上设置断点并进行调试,则可以查看变量doc
、cand\ents
和gold\ents
,并使用
print(doc)
print(cand_ents-gold_ents) #FP
print(gold_ents-cand_ents) #FN
迟交的答案,但我希望它有帮助