如何计算生成问题的系统的精度和召回率?

时间:2016-05-24 14:11:30

标签: machine-learning nlp information-retrieval question-answering

我的系统从一组句子中生成问题。根据句子的质量,可以为单个句子生成多个问题。人类也被赋予相同的句子来产生问题。

例如:

句子:俄罗斯的首都是莫斯科。

============#系统生成的问题#=============

问题1:俄罗斯的首都是什么?

问题2:什么是莫斯科?

============#Human-Generated Questions#=============

问题1:俄罗斯的首都是什么?

问题2:什么是莫斯科?

问题3:俄罗斯是莫斯科的首都吗?

我想评估系统的精确度,召回率和准确度。但我不知道如何为问题生成系统案例计算这些措施。

数据

  1. 系统生成的一组注释问题(可接受,不可接受)
  2. 人为问题(针对同一组句子)
  3. 根据这些数据,我该如何计算这些指标?

1 个答案:

答案 0 :(得分:1)

我想了解你的情况,但如果我错了,请纠正我。

如果您正在尝试计算精确度,回忆率和准确度(我想知道是否可能有更合适的性能指标,但除此之外),我们需要定义真正的正面,误报,真正的负面,而假阴性则是。

如果你的系统产生了问题,并且你有一套由人类产生的基本事实问题(我们假设人类已经为每个句子产生了每个可接受的问题),我们知道你的系统产生的任何问题都是积极的(T / F):

真正肯定:系统生成的问题匹配该句子的人为问题。

误报:系统生成的问题与该句子的人为问题不匹配

真的否定:我认为计算起来并不容易,因为你的系统只生成它认为是问题的东西。我认为这将是你的系统没有产生的每一个不可接受的问题,这在人类生成的问题中也找不到。

False Negative:由您的系统生成的人为生成的问题。

然后可以直接将这些插入计算精度和召回的公式:

精度= TP / TP + FP

召回= TP / TP + FN

因为考虑TN并不容易,所以我认为计算准确度并不合理。您可以改为计算错误发现率(1 - 精度)。