【发布时间】:2016-03-13 23:48:10
【问题描述】:
我有一个生成器(一个产生东西的函数),但是当试图将它传递给 gensim.Word2Vec 时,我收到以下错误:
TypeError:您不能将生成器作为语句参数传递。试试迭代器。
生成器不是一种迭代器吗?如果没有,我如何从中制作迭代器?
查看库代码,它似乎只是简单地迭代像for x in enumerate(sentences) 这样的句子,这与我的生成器配合得很好。那么是什么导致了错误呢?
【问题讨论】:
-
嗯...他们费了很多力气阻止你使用生成器:github.com/piskvorky/gensim/blob/…
-
这毫无意义。
-
@user2357112 -- 也许输入需要多次迭代。文档说列表是一个好的输入。 (当然,在这种情况下,
iterator绝对是 错误 放入错误消息的术语)。 -
@riv 然后您可以将您的生成器更改为列表综合。
-
I found the issue the check was supposed to address. 看来评论链里的人当时对词汇的理解不是很清楚。这个错误消息肯定应该改变(也许他们应该添加
or iter(sentences) is iter(sentences)来捕获其他迭代器类型)。