Nlp 命名实体识别中的计算精度和召回率
现在我将报告命名实体识别的结果。我发现有一点让人困惑的是,我对精确性和回忆性的理解是,一个人简单地总结了所有类别的真阳性、真阴性、假阳性和假阴性Nlp 命名实体识别中的计算精度和召回率,nlp,precision-recall,Nlp,Precision Recall,现在我将报告命名实体识别的结果。我发现有一点让人困惑的是,我对精确性和回忆性的理解是,一个人简单地总结了所有类别的真阳性、真阴性、假阳性和假阴性 但现在我认为这似乎是不可信的,因为每次错误分类都会同时产生一个假阳性和一个假阴性(例如,本应标记为“a”但标记为“B”的标记是“a”的假阴性和“B”的假阳性)。因此,所有类别的误报和漏报的数量都是相同的,这意味着精确度(总是!)等于召回率。这根本不可能是真的,所以我的推理有一个错误,我想知道它在哪里。这当然是非常明显和直截了当的事情,但我现在想不起来了
但现在我认为这似乎是不可信的,因为每次错误分类都会同时产生一个假阳性和一个假阴性(例如,本应标记为“a”但标记为“B”的标记是“a”的假阴性和“B”的假阳性)。因此,所有类别的误报和漏报的数量都是相同的,这意味着精确度(总是!)等于召回率。这根本不可能是真的,所以我的推理有一个错误,我想知道它在哪里。这当然是非常明显和直截了当的事情,但我现在想不起来了。这个问题没有简单正确的答案。计算错误的方法有很多种。MUC比赛使用了一个,其他人使用了其他人 但是,为了帮助您解决眼前的困惑: 你有一套标签,不是吗?什么都没有,人,动物,蔬菜 如果一个标记应该是person,并且您将其标记为NONE,那么NONE为假阳性,person为假阴性。如果一个令牌应该是NONE,而您将其标记为PERSON,则相反 因此,您可以获得每个实体类型的分数
您还可以汇总这些分数。为了清楚起见,以下是定义: 精度=TP/(TP+FP)=你发现的部分是基本事实 回忆=TP/(TP+FN)=你恢复了哪部分基本真相 由于误报的数量不一定等于误报的数量,所以错误的数量不一定总是相等的 如果我正确理解您的问题,您将每个令牌分配给两个以上可能标签中的一个。为了让精确性和召回率有意义,你需要有一个。因此,如果将分类器表述为标记是否在组“a”中,然后对每个组重复,则可以使用精度和召回率。在这种情况下,漏诊分类将被视为一组假阴性和另一组假阳性的两倍 如果您正在进行这样一个非二进制的分类(将每个令牌分配给一个组),那么查看令牌对可能会很有用。将您的问题表述为“令牌X和Y是否在同一分类组中?”。这允许您计算所有节点对的精度和召回率。如果您的分类组已标记或具有关联的含义,则这并不合适。例如,如果您的分类组是“水果”和“蔬菜”,并且您将“苹果”和“橙子”都分类为“蔬菜”,那么即使分配了错误的组,该算法也会将其评分为真正。但是,如果你的组没有标记,例如“A”和“B”,那么如果苹果和橙子都被归类为“A”,那么你可以说“A”对应于“水果” 在中,评估基于正确标记的实体,而不是本文中描述的标记。如果系统在文档中标识具有正确起点和终点的正确类型的实体,则该实体被正确标记。我更喜欢这种评估方法,因为它更接近于衡量实际任务的绩效;NER系统的用户关心的是实体,而不是单个令牌
但是,您描述的问题仍然存在。如果您用LOC类型标记一个ORG类型的实体,则LOC为假阳性,ORG为假阴性。关于这个问题有一个有趣的讨论。精确性和召回率的计算方法(这是我在论文中使用的方法)是测量实体之间的相互关系。假设基本事实具有以下特征(不区分它们是什么类型的实体)
[Microsoft Corp.]首席执行官史蒂夫·鲍尔默(Steve Ballmer)今天宣布发布[Windows 7]
这有3个实体
假设您的实际提取具有以下内容
[Microsoft Corp.][CEO][Steve]Ballmer[今天]宣布发布Windows 7
您与Microsoft Corp完全匹配,CEO
和今天的出现误报,Windows 7
出现误报,Steve的子字符串匹配
我们通过首先定义匹配标准来计算精度和召回率。例如,它们必须精确匹配吗?如果它们完全重叠,这是一场比赛吗?实体类型重要吗?通常,我们希望为其中几个标准提供精确性和召回率
精确匹配:真阳性=1(Microsoft Corp.
,唯一的精确匹配),假阳性=3(CEO
,today
,Steve
,这不是精确匹配),假阴性=2(Steve Ballmer
和Windows 7
)
任何重叠确定:真阳性=2(Microsoft Corp.
,和与Steve Ballmer
重叠的Steve
),假阳性=2(CEO
,和today
),假阴性=1(Windows 7
)
然后,让读者推断“真实性能”(当允许使用人类判断来决定哪些重叠差异显著,哪些不显著时,无偏见的人类检查人员将给出的精度和回忆)介于两者之间
报告F1度量值也很有用,它是精确性和召回率的调和平均值,当你不得不在精确性和召回率之间进行权衡时,它给出了一些“性能”的概念。如前所述,有不同的方法来衡量NER性能。是阿宝
Precision = True Positives / (True Positives + False Positives) = 1/(1+3) = 0.25
Recall = True Positives / (True Positives + False Negatives) = 1/(1+2) = 0.33
Precision = True Positives / (True Positives + False Positives) = 2/(2+2) = 0.55
Recall = True Positives / (True Positives + False Negatives) = 2/(2+1) = 0.66
scorer = Scorer()
for input_, annot in examples:
doc_gold_text = ner_model.make_doc(input_)
gold = GoldParse(doc_gold_text, entities=annot)
pred_value = ner_model(input_)
scorer.score(pred_value, gold)
return scorer.scores