слишком много значений для распаковки (ожидается 2) lda - PullRequest
0 голосов
/ 14 апреля 2020

Я получил ошибку: слишком много значений для распаковки (ожидается 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)))

1 Ответ

0 голосов
/ 14 апреля 2020

Фокусировка на l oop, поскольку именно здесь возникает ошибка. Давайте рассмотрим одну итерацию за раз.

>>> 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 элемента, однако это многослойная матрица без простого логического способа ее распаковки. Лично у меня нет достаточного опыта работы с этим предметом, чтобы можно было понять, что вы могли бы иметь в виду делать, я могу только показать вам , откуда ваша проблема. Надеюсь, это поможет!

...