太多值无法解包(预期2)lda

问题描述 投票:0回答:1

我收到错误:运行以下代码时,太多值无法解包(预期2)。有人可以帮助我吗?我添加了更多详细信息。


import gensim
import gensim.corpora as corpora

dictionary = corpora.Dictionary(doc_clean)

doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean]


Lda = gensim.models.ldamodel.LdaModel

ldamodel = Lda(doc_term_matrix, num_topics=3, id2word = dictionary, passes=50, per_word_topics = True, eval_every = 1)


print(ldamodel.print_topics(num_topics=3, num_words=20)) 

for i in range (0,46):
    for index, score in sorted(ldamodel[doc_term_matrix[i]], key=lambda tup: -1*tup[1]):
        print("subject", i)
        print("\n")
        print("Score: {}\t \nTopic: {}".format(score, ldamodel.print_topic(index, 6)))

lda
1个回答
0
投票

关注循环,因为这是引发错误的地方。让我们一次进行一次迭代。

>>> import numpy as np   # just so we can use np.shape()
>>> i = 0   # value in first loop
>>> x = sorted( ldamodel[doc_term_matrix[i]], key=lambda tup: -1*tup[1] )
>>> np.shape(x)
(3, 3, 2)
>>> for index, score in x:
...     pass
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

这里是您的错误出处。您期望这个返回的矩阵有2个元素,但是它是一个多层矩阵,没有简单的可推断的解包方法。我个人对此主题材料没有足够的经验,无法推断您可能会做的事情,我只能向您显示问题的出处。希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.