nlp - 命名实体识别中的计算精度和召回率

标签 nlp precision-recall

现在我要报告命名实体识别的结果。我觉得有点困惑的一件事是,我对精确率和召回率的理解是简单地总结所有类别的真阳性、真阴性、假阳性和假阴性。

但是现在我认为这似乎难以置信,因为每个错误分类都会同时产生一个误报和一个误报(例如,应该标记为“A”但被标记为“B”的标记是“A”为假阴性,“B”为假阳性)。因此,所有类别的误报和漏报数量都是相同的,这意味着精度(总是!)等于召回率。这根本不可能是真的,所以我的推理有错误,我想知道它在哪里。这当然是非常明显和直接的事情,但我现在却想不起来。

最佳答案

通常计算精度和召回率的方式(这是我在论文中使用的)是衡量实体之间的对比。假设基本事实具有以下内容(对于它们是什么类型的实体没有任何区别)

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

这有 3 个实体。

假设你的实际提取有以下内容

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

您与 Microsoft Corp 完全匹配, CEO 的误报和todayWindows 7 的假阴性以及 Steve 的子字符串匹配

我们通过首先定义匹配标准来计算精度和召回率。例如,它们必须完全匹配吗?如果它们完全重叠,那么它是匹配的吗?实体类型重要吗?通常,我们希望为其中几个标准提供精确度和召回率。

完全匹配: 真阳性 = 1( Microsoft Corp. ,唯一的完全匹配),假阳性 =3( CEOtodaySteve ,这不是完全匹配),假阴性 = 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

任何重叠都可以: 真阳性 = 2( Microsoft Corp.SteveSteve Ballmer 重叠),假阳性 =2( CEOtoday ),假负数 = 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

然后,读者可以推断“真实性能”(当允许使用人类判断来决定哪些重叠差异显着、哪些重叠差异不显着时,无偏见的人类检查员将给出的精确度和召回率)介于两者之间两者。

报告 F1 度量通常也很有用,它是精度和召回率的调和平均值,当您必须权衡精度和召回率时,它可以提供一些“性能”的概念。

关于nlp - 命名实体识别中的计算精度和召回率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783653/

相关文章:

python - Keras ValueError : Error when checking target: expected dense_15 to have 3 dimensions, 但得到了形状为 (301390, 8) 的数组

python - 从格式为 .tex 的 arXiv 文章中仅提取正文

python - sklearn 中的 predict_proba 如何产生两列?它们的意义是什么?

machine-learning - ROC曲线和精确召回曲线

machine-learning - scikit-learn 计算多标签分类中的 F1

python - 检测 spacy 中的日期

python - 如何为 sklearn CountVectorizer 设置自定义停用词?

python - 具有显示标准偏差的 n 重交叉验证的精确召回曲线

Python计算两个文件目录的余弦相似度

matlab - 如何在matlab中添加条形图的三个图例?