我将两个相同的句子与 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 算法如何改进它?