如何自动计算NER的准确度(精度,召回率,F1)?

问题描述 投票:0回答:2

我正在使用一个NER系统,它为输出提供一个文本文件,其中包含一个命名实体列表,这些实体是概念Speaker的实例。我正在寻找一种工具,可以计算系统的精度,召回率和F1,将此列表作为输入,并使用标签<Speaker>正确注释实例的黄金标准。

我有两个txt文件:Instances.txt和GoldStandard.txt。我需要将提取的实例与黄金标准进行比较,以便计算这些指标。例如,根据第二个文件,第一个文件中的前三个句子是True Positive,最后一个句子是False Positive。

instances.txt包含:

is sponsoring a lecture by <speaker> Antal Bejczy from
announces a talk by <speaker> Julia Hirschberg
His name is <speaker> Toshiaki Tsuboi He will
to produce a schedule by <speaker> 50% for problems

Gold Standard.text包含:

METC is sponsoring a lecture by <speaker> Antal Bejczy from Stanford university
METC announces a talk by <speaker> Julia Hirschberg
The speaker is from USA His name is <speaker> Toshiaki Tsuboi He will              
propose a solution to these problems
It led to produce a schedule by 50% for problems
metrics information-extraction ner
2个回答
2
投票

对于NER结果,人们通常测量精确度,召回率和F1分数而不是准确度,而且可能是计算这些指标的最常见方式:https://github.com/spyysalo/conlleval.py。它还报告了准确性。

conlleval脚本将conll格式文件作为输入。以你的第一句为例:

METC    O   O
is  O   O
sponsoring  O   O
a   O   O
lecture O   O
by  O   O
Antal   B-speaker   B-speaker
Bejczy  I-speaker   I-speaker
from    O   O
Stanford    O   O
university  O   O

第一列是单词,第二列是系统输出,第三列是金标。 O表示令牌不属于任何块。后缀B-I-意味着一个块的开头,内部/结尾。句子用空行分隔。


0
投票

这完全取决于您的用例,以及您在清理/消除NER输出方面所做的工作量。还有weighted-F1 score;你可能更关心缺失的参考文献(即想要更高的召回率)而不是假阳性(更高的精确度)。除了可能用于其他类型的用例(发出传票或权证,禁止用户滥用聊天)。

sklearn.metrics.f1_score()实施加权F1。

告诉我们你的应用程序的更多信息:如果你误解,误识别或混淆说话者姓名(假阳性),错过有效的(假阴性),会有多糟糕?

© www.soinside.com 2019 - 2024. All rights reserved.