gpt4 book ai didi

python - 为什么 NLTK 中的 FreqDist 比较不​​对称?即 '>' 和 '<' 表现不同

转载 作者:行者123 更新时间:2023-11-28 17:26:48 25 4
gpt4 key购买 nike

nltk.FreqDist('abc') > nltk.FreqDist('abd')

返回 True

nltk.FreqDist('abd') < nltk.FreqDist('abc') 

返回False

这背后的原因是什么?我觉得有点奇怪。

最佳答案

查看了FreqDist类的比较方法,发现都是基于一个方法:__le__。只是为了说明这意味着什么,给定这个设置:

>>> abc = nltk.FreqDist('abc')
>>> abd = nltk.FreqDist('abd')

这两个语句是等价的:

>>> abc < abd
False
>>> abc.__le__(abd)
False

现在,此方法做的第一件事是检查第一个 FreqDist 的键是否是第二个键的子集。在您的示例中,这将始终为 False,这就是此方法返回的内容。

但是, 运算符触发了 __gt__ 方法运行,该方法被编写为返回 __le__ 的否定。因此,结果是 True

老实说,我根本不知道为什么要在 FreqDist 中添加比较方法。它的父 Counter 不支持比较,我怀疑这恰恰是因为想出一个好的解决方案并不简单(至少可以说)。我有一种预感,这段代码是 FreqDist 没有从 Counter 继承的时代遗留下来的,一些狂热的 OOP 粉丝决定该类需要支持比较。我个人很难想出一个有用的情况。

如果我是你,我会在 NLTK's issue tracker 中打开错误报告.或者,如果您有时间,只需打开一个 PR 并删除这些内容即可。

关于python - 为什么 NLTK 中的 FreqDist 比较不​​对称?即 '>' 和 '<' 表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com