2009-11-23 86 views
20

现在我要报告名称实体识别的结果。我发现有一点让我感到困惑的是,我对精确度和回忆的理解是,我们只是简单地总结出所有类别的真正的积极,真正的消极,假的肯定和错误的消极。命名实体识别的计算精度和召回率

但是,现在我认为这是不合理的,因为每个错误分类会同时产生一个假阳性和一个假阴性(例如,应该被标记为“A”但标记为“B”的标记是“A”的假阴性和“B”的假阳性)。因此,所有类别的假阳性和假阴性的数量将是相同的,这意味着精度(总是)等于回想。这根本不可能是真的,所以我的推理出现错误,我想知道它在哪里。这当然是非常明显和直截了当的事情,但它现在逃脱了我。

回答

32

通常计算方式的精确度和召回率(这是我在论文中使用的)是衡量实体对方。假设基础事实具有以下(没有任何differentiaton因为他们是什么类型的实体)

[Microsoft Corp.] CEO [Steve Ballmer] announced the release of [Windows 7] today

这有3个实体。

假设您的实际提取具有CEOtoday,为Windows 7假阴性和Steve

子字符串匹配以下

[Microsoft Corp.] [CEO] [Steve] Ballmer announced the release of Windows 7 [today]

你必须精确匹配为Microsoft Corp,误报我们通过首先定义匹配标准来计算精度和召回率。例如,他们是否必须完全匹配?如果它们重叠,它是否匹配?实体类型是否重要?通常我们想为这些标准中的几个提供精确度和召回率。

完全匹配:真阳性= 1(Microsoft Corp.,唯一的精确匹配),假阳性= 3(CEOtoday,和Steve,这是不完全匹配),假阴性= 2(Steve BallmerWindows 7

Precision = True Positives/(True Positives + False Positives) = 1/(1+3) = 0.25 
Recall = True Positives/(True Positives + False Negatives) = 1/(1+2) = 0.33 

任何重叠OK:真阳性= 2(Microsoft Corp.,和Steve重叠Steve Ballmer),假阳性= 2(CEO,并且today),假阴性= 1(Windows 7

Precision = True Positives/(True Positives + False Positives) = 2/(2+2) = 0.55 
Recall = True Positives/(True Positives + False Negatives) = 2/(2+1) = 0.66 

读者然后离开来推断“真实性能”(精确度和记得,当允许使用人的无偏人类检查会给判断哪些重叠差异是重要的,哪些不重要)是在两者之间的某处。

通常报告测量是精确度和召回率的调和平均值,并且当您必须在精确度与回想率之间进行权衡时,会提供一些“性能”的概念。

+0

+1全面! – KillBill 2012-08-22 15:56:59

+0

很棒的回答。问题:在这种情况下,“真正的否定”是什么意思?我相信,需要计算准确性。 – 2016-01-19 19:42:32

+0

假设我根据第二个策略评估(重叠是OK)。如何处理[史蒂夫] [鲍尔默]等情况?两个(部分)匹配都是正确的,真正的正数是如何计算的? – 2017-11-21 11:44:33

2

这个问题没有简单的正确答案。有多种不同的方法来计算错误。 MUC竞赛使用了一个,其他人使用了其他人。

但是,以帮助您与您的直接困惑:

你有一组标签,不是吗?像无人,人,动物,蔬菜?

如果一个令牌应该是人,并且您将其标记为NONE,那么这对NONE是一个误报,对PERSON是一个误报。如果令牌应该是NONE,并且您将其标记为PERSON,则相反。

所以你得到每个实体类型的分数。

您也可以汇总这些分数。

2

只是要清楚,这些都是定义:

精密= TP /(TP + FP)=什么部分,你发现了什么研磨真相?

回想一下= TP /(TP + FN)=你恢复了什么部分的基本事实?

不一定总是相等的,因为假阴性的数量不一定等于假阳性的数量。

如果我理解您的问题是正确的,那么您将为每个标记分配两个以上可能标记中的一个。为了使精确度和召回有意义,您需要有一个binary classifier。所以你可以使用精度和召回,如果你说分类器是一个令牌是否在组“A”,然后重复每个组。在这种情况下,错过的分类会计为两次为一个组的假阴性和另一个组的假阳性。

如果你正在做一个这样的分类,它不是二进制的(把每个标记分配给一个组),它可能是有用的,而不是看成对的标记。将您的问题解释为“是否在相同分类组中标记X和Y?”。这使您可以计算所有节点对的精确度和召回率。如果您的分类群组被标记或具有相关含义,则这不合适。例如,如果您的分类组是“水果”和“蔬菜”,并且将“苹果”和“橙子”分类为“蔬菜”,那么即使分配了错误组,该算法也会将其评分为真正的正数。但是,如果你的团体是非标记的,例如“A”和“B”,那么如果苹果和橘子都被分类为“A”,则可以说“A”对应于“水果”。

6

CoNLL-2003 NER task中,评估是基于正确标记的实体,而不是标记,如文章'Introduction to the CoNLL-2003 Shared Task: Language-Independent Named Entity Recognition'中所述。如果系统用文档中的正确起始点和终点标识具有正确类型的实体,则会正确标记实体。我更喜欢这种评估方法,因为它更接近实际任务的性能指标; NER系统的用户关心实体,而不是单个令牌。

但是,您描述的问题仍然存在。如果您将类型为ORG的实体标记为LOC,则会导致LOC的误报和ORG的误报。在这个blog post有一个有趣的讨论。

+0

您的链接不再有效。这里是工作的。 CoNLL-2003 NER任务:https://www.clips.uantwerpen.be/conll2003/ner/ 纸:https://www.clips.uantwerpen.be/conll2003/pdf/14247tjo.pdf – Martin 2018-01-15 12:16:13

+0

@马丁我修复了这些链接,感谢您的反馈。 – Stompchicken 2018-01-15 17:15:38