我的代码如下。任何人都可以帮助我理解为什么我会收到这个错误:
“TypeError:'int'对象不可迭代”关于我的“for i,crp”行?
from collections import defaultdict
import numpy
from gensim import corpora, models
dictionary = corpora.Dictionary(sws_removed)
corpus = [dictionary.doc2bow(text) for text in sws_removed]
document_topic = defaultdict(list)
for i, crp in enumerate(corpus):
probs = ldamodel.get_document_topics(crp)
max_topic = probs.argsort()[-1]
document_topic[max_topic].append(i)
答案 0 :(得分:0)
是type(corpus)
一个int?
它需要是一个可迭代的: https://docs.python.org/3/library/functions.html#enumerate
答案 1 :(得分:0)
我认为错误不在for语句中,而是在行
中corpus = [dictionary.doc2bow(text) for text in sws_removed]
Sws_removed必须是unicode字符列表。如果它不是一个列表,而是一个int,它可能会给你这个错误。实际上,这段代码给出了这个错误
from collections import defaultdict
import gensim
from gensim import corpora
lofs = 13
dictionary = corpora.Dictionary(lofs)
corpus = [dictionary.doc2bow(text) for text in lofs]
ldamodel = gensim.models.LdaModel(corpus=corpus)
document_topic = defaultdict(list)
for i, crp in enumerate(corpus):
probs = ldamodel.get_document_topics(crp)
这就是堆栈跟踪(对帖子来说总是很有用)
追踪(最近一次通话): 文件“D:/python/stackoverflow/numpcorpora/numcorpora.py”,第9行,in dictionary = corpora.Dictionary(lofs) 文件“C:\ Users \ Admin \ Anaconda3 \ lib \ site-packages \ gensim \ corpora \ dictionary.py”,第58行, init self.add_documents(documents,prune_at = prune_at) 在add_documents中的文件“C:\ Users \ Admin \ Anaconda3 \ lib \ site-packages \ gensim \ corpora \ dictionary.py”,第111行 对于docno,枚举文档(文档): TypeError:'int'对象不可迭代
现在将lofs = 13
替换为lofs = ['list of words'.split()]
,它会正常运行,并提供以下输出:
[[(0, 1), (1, 1), (2, 1)]]
[(50, 0.75250000000000183)]
请检查你的sws_removed。它是一个int,而不是unicode字符列表,应该是它。