我将两个相同的句子与 RIBES NLTK 进行比较并得到一个错误。为啥?

Posted

技术标签:

【中文标题】我将两个相同的句子与 RIBES NLTK 进行比较并得到一个错误。为啥?【英文标题】:I compare two identical sentences with RIBES NLTK and get an error. Why?我将两个相同的句子与 RIBES NLTK 进行比较并得到一个错误。为什么? 【发布时间】:2021-10-25 21:10:34 【问题描述】:

我正在尝试使用 NLTK 的 RIBES 分数来评估机器翻译的质量。我想用两个相同的句子检查这段代码。但是当我运行我的代码时,我得到了错误。

我的代码:

from nltk.translate.ribes_score import sentence_ribes

hyp1 = ['It', 'is', 'a', 'guide', 'to', 'action', 'which', 'ensures', 'that', 'the', 'military', 'always', 'obeys', 'the', 'commands', 'of', 'the', 'party']

ref1a = ['It', 'is', 'a', 'guide', 'to', 'action', 'which', 'ensures', 'that', 'the', 'military', 'always', 'obeys', 'the', 'commands', 'of', 'the', 'party']

ribes_score = sentence_ribes(ref1a, hyp1)

print(ribes_score)
 

错误:

Traceback (most recent call last):

  File "D:/Users/anastasia.emelyanova/PycharmProjects/Metrics_NLTK/ribes_test.py", line 4, in <module>

    ribes_score = sentence_ribes(ref1a, hyp1)

  File "D:\Users\anastasia.emelyanova\AppData\Local\Programs\Python\Python38\lib\site-packages\nltk\translate\ribes_score.py", line 55, in sentence_ribes

    nkt = kendall_tau(worder)

  File "D:\Users\anastasia.emelyanova\AppData\Local\Programs\Python\Python38\lib\site-packages\nltk\translate\ribes_score.py", line 290, in kendall_tau

    tau = 2 * num_increasing_pairs / num_possible_pairs - 1

ZeroDivisionError: division by zero


Process finished with exit code 1

为什么会出现这些错误?我弄错了吗?我只取了两个相同的句子,不应该被零除,因为可能的对数应该大于 1。两个相同的句子应该得到 1.0 分。我正在 PyCharm 中使用 Python 3、Windows 7 进行编码。请帮忙!

【问题讨论】:

【参考方案1】:

你在这一行上被零除:

tau = 2 * num_increasing_pairs / num_possible_pairs - 1

这是因为num_possible_pairs 为 0 而len(worder) 为 1。所有这一切都是因为您使用两个列表调用 sentence_ribes,而第一个参数应该是列表列表(句子列表,其中每个句子都是一个单词列表)。

试着这样称呼它:

ribes_score = sentence_ribes([ref1a], hyp1)

【讨论】:

非常感谢它的工作,我有 1.0!

以上是关于我将两个相同的句子与 RIBES NLTK 进行比较并得到一个错误。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

nltk.org 使用朴素贝叶斯分类器进行句子分割的示例:.sent 如何分隔句子以及 ML 算法如何改进它?

NLTK:语料库级别的 BLEU 与句子级别的 BLEU 分数

NLTK 将标记化的句子转换为同义词集格式

12.朴素贝叶斯-垃圾邮件分类

使用 NLTK 从自己的文本数据中进行情感分类

nltk如何给出多个分隔的句子