使用nltk的meteor_score模块评估模型时,如何实现流星得分?

问题描述

我目前有2个文件,reference.txt和model.txt。这两个文本文件包含原始标题和训练后生成标题
我可以简单地执行以下操作以获得流星得分吗?

score = nltk.translate.meteor_score.meteor_score(reference,model)
print(np.mean(meteor_score))

我也曾看过https://github.com/tylin/coco-caption,但我不知道如何实现这一点。

解决方法

让我们先定义术语

参考:实际的文字/背景事实。如果有多个人为同一个数据点生成基本事实,那么您将有多个参考,并且都假设它们是正确的

假设:候选者/预测者。

让我们说两个人看着一张图片,然后为他们加上字幕

  • 这是一个苹果
  • 那是苹果

现在,您的模型会查看图像并进行预测

  • 这棵树上的苹果

您可以计算预测使用效果的流星得​​分

print (nltk.translate.meteor_score.meteor_score(
    ["this is an apple","that is an apple"],"an apple on this tree"))
print (nltk.translate.meteor_score.meteor_score(
    ["this is an apple","a red color fruit"))

输出:

0.6233062330623306
0.0

在您的情况下,您必须将reference.txt读入列表,并类似地将谓词建模为另一个。现在,您必须为第一个列表中的每一行和第二个列表中的每一行都获取meteor_score,最后取一个平均值。