0

我的系统从一组句子中生成问题。根据句子的质量,可以为单个句子生成多个问题。人类也被赋予相同的句子来产生问题。如何计算产生问题的系统的精度和召回率?

例如:

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

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

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

问题2:什么是莫斯科?

============#人类产生的问题#=============

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

问题2:什么是莫斯科?

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

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

数据

  1. 注释一套系统生成的问题(接受,不接受)
  2. 人类产生的问题(同组的句子)

鉴于这一数据,怎么办我计算这些措施?

+0

注释过的系统生成的问题集是否包含_all_可能的问题? – gudok

+0

系统为特定的WH-词生成问题。它遵循以下策略:在句子中查找_answers_,然后为每个_answer_生成_question_。 – dryleaf

+0

你能假设人为问题包含该句子的所有可能问题吗? – NBartley

回答

1

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

如果您试图计算精度,召回率和准确性(我想知道是否有更合适的性能指标,但除此之外),我们需要定义什么是真正的积极的,假的积极的,真正的消极,而且是负面的。我们知道你的系统产生的任何问题都是一个问题,如果你的系统正在产生问题,并且你有一组由人类产生的基本真实问题(我们假设人类已经为每个句子产生了每个可接受的问题)正面(T/F):

真正的正面:系统产生的问题匹配该句子的人为问题。

错误正面:系统生成的问题不符合该句子的人为问题。

真的负面:我不认为这很容易计算,因为你的系统只会产生它认为是问题的东西。我认为这将是你的系统没有产生的每一个不可接受的问题,这在人为问题中也没有。

False Negative:一个人为生成的问题,它不是由您的系统生成的。

它然后直接地插入到这些方程用于计算精确度和召回:

精密= TP/TP + FP

召回= TP/TP + FN

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

+0

如果一个问题被注释为** Unacceptable **,这是因为在注释_system-generated_问题时,注释者发现问题中存在不足(如_ungrammatical_,_vagueness_,_does_ _not_ _make_ _sense_,_etc _...)。否则,如果没有缺陷(表示由系统生成的问题是正确的),则注释器标记为**可接受**。 – dryleaf

+0

我对** Unacceptable **方案有点怀疑。 – dryleaf

+0

好吧,我误解了一些东西。我会更新我的答案。 – NBartley

相关问题