sample_texts()方法本应返回样本文档,但如果某个实现从TextCorpus派生并覆盖了get_texts(),那么这将被完全忽略,因为sample_texts()的实现仅使用getstream()。这适用于最近的开发(58d560b)和主要(885430d)分支。
sample_texts()
TextCorpus
get_texts()
getstream()
pnwntuvh1#
你好@johann-petrak
sample_texts
getstream
vaj7vani2#
提交只是标识了我之前查看的仓库的版本。基本上,这意味着我谈论的是今天的版本。正如我在原始报告中所说的问题是,文档声称为了使事情正常工作,需要实现 get_texts() 。那么一个合理的人可能会期望通过这样做,使用该实现的方法 sample_texts() 也能正确工作,但实际上并非如此。这就是继承的关键点。我无法看到为什么 sample_texts() 不应该使用 get_texts() ,尤其是子类还可以选择不使用 preprocess_text 方法或以不同的方式使用它。如果 get_texts() 的实现控制了行为,那么所有方法都应该基于它,而不是基于一些任意或默认的行为,这些行为可能需要改变整个工作分配的方式。
preprocess_text
wecizke33#
@johann-petrak 我部分同意你的观点,get_texts 和 getstream 在预处理步骤(子类应该重写它,用户不想使用它)之间的主要区别。不幸的是,如果我们现在尝试修复它,我们将破坏向后兼容性。另一方面,我不认为当前实现有任何严重问题(但看起来有点奇怪,我同意)。CC: @piskvorky@vlejd 关于这个问题有什么看法?
get_texts
nr9pn0ug4#
让 sample_texts() 使用被覆盖的 text_texts() 是正确且预期的方式使之工作,但如果破坏向后兼容性的风险太高,那么至少有必要记录这一点并建议在必要时覆盖/重新实现 sample_texts()。我并不真正需要 sample_texts(),我只是在测试代码时使用它,当它返回一些意外的结果时,我认为我的代码出了问题,需要一些时间来弄清楚发生了什么。
text_texts()
2lpgd9685#
看起来像个bug。@menshikh-iv ,你认为这里有什么向后兼容性风险?
omtl5h9j6#
@piskvorky,我仔细阅读了代码,发现sample_text和get_texts(如预处理)重复了相同的工作,需要进行测试和比较。但可能这样就可以了(不会破坏其他功能),但我现在还不是百分之百确定。只有一件事:这会变慢(因为在当前实现中,sample_text仅在文档被yield时使用preprocess_text,但如果我们切换到get_texts,我们将始终对文档进行预处理,这在处理大型数据集时可能会严重影响性能)。
sample_text
mfpqipee7#
我也遇到了这个问题。for text in wiki.get_texts(): AttributeError: 'tuple' object has no attribute 'get_texts'希望你能解决它,感谢你的辛勤工作。
for text in wiki.get_texts(): AttributeError: 'tuple' object has no attribute 'get_texts'
7条答案
按热度按时间pnwntuvh1#
你好@johann-petrak
sample_texts
只使用getstream
,但是定义getstream
有什么问题吗?vaj7vani2#
提交只是标识了我之前查看的仓库的版本。基本上,这意味着我谈论的是今天的版本。
正如我在原始报告中所说的问题是,文档声称为了使事情正常工作,需要实现
get_texts()
。那么一个合理的人可能会期望通过这样做,使用该实现的方法sample_texts()
也能正确工作,但实际上并非如此。这就是继承的关键点。我无法看到为什么
sample_texts()
不应该使用get_texts()
,尤其是子类还可以选择不使用preprocess_text
方法或以不同的方式使用它。如果get_texts()
的实现控制了行为,那么所有方法都应该基于它,而不是基于一些任意或默认的行为,这些行为可能需要改变整个工作分配的方式。wecizke33#
@johann-petrak 我部分同意你的观点,
get_texts
和getstream
在预处理步骤(子类应该重写它,用户不想使用它)之间的主要区别。不幸的是,如果我们现在尝试修复它,我们将破坏向后兼容性。另一方面,我不认为当前实现有任何严重问题(但看起来有点奇怪,我同意)。
CC: @piskvorky@vlejd 关于这个问题有什么看法?
nr9pn0ug4#
让
sample_texts()
使用被覆盖的text_texts()
是正确且预期的方式使之工作,但如果破坏向后兼容性的风险太高,那么至少有必要记录这一点并建议在必要时覆盖/重新实现sample_texts()
。我并不真正需要
sample_texts()
,我只是在测试代码时使用它,当它返回一些意外的结果时,我认为我的代码出了问题,需要一些时间来弄清楚发生了什么。2lpgd9685#
看起来像个bug。
@menshikh-iv ,你认为这里有什么向后兼容性风险?
omtl5h9j6#
@piskvorky,我仔细阅读了代码,发现
sample_text
和get_texts
(如预处理)重复了相同的工作,需要进行测试和比较。但可能这样就可以了(不会破坏其他功能),但我现在还不是百分之百确定。只有一件事:这会变慢(因为在当前实现中,
sample_text
仅在文档被yield时使用preprocess_text
,但如果我们切换到get_texts
,我们将始终对文档进行预处理,这在处理大型数据集时可能会严重影响性能)。mfpqipee7#
我也遇到了这个问题。
for text in wiki.get_texts(): AttributeError: 'tuple' object has no attribute 'get_texts'
希望你能解决它,感谢你的辛勤工作。