Проблема с порогом при назначении тем текстам с помощью LDA - PullRequest
0 голосов
/ 18 июня 2020

К сожалению, я не знаю, как описать проблему, с которой я столкнулся с LDA, пытаясь назначить темы текстам. Я получаю эту ошибку, когда пытаюсь определить порог для назначения тем:

ValueError Traceback (последний вызов последний) в 32 33 print (scores) ---> 34 threshold = sum ( scores) / len (scores) 35

ValueError: операнды не могут транслироваться вместе с формами (1,2) (0,)

Немного исследовав, я обнаружил, что вывод из

lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus,
                                           id2word=id2word,
                                           num_topics=3, 
                                           random_state=100,
                                           update_every=1,
                                           chunksize=100,
                                           passes=10,
                                           alpha='auto', 
                                           per_word_topics=True,
                                           eta=[0.01]*len(id2word.keys()))

d_lda = lda_model[corpus]

scores = []
for doc in d_lda:
    for topic in doc:
        for topic_id, score in topic:
            scores.append(score)

print(scores)
threshold = sum(scores)/len(scores)

Вывод:

[0.17162731, 0.7584814, 0.069891326, [1], [1], [0], [1], [1], [1], [(1, 0.99998814)], [(1, 0.99999917)], [(0, 0.99994564)], [(1, 0.9999982)], [(1, 0.9999973)], [(1, 0.9999984)], 0.04412621, 0.8588418, 0.09703196, [1], [1], [], [], [1], [(1, 1.9999986)], [(1, 0.99999666)], [], [], [(1, 0.99988884)], 0.05475739, 0.102039, 0.84320354, [2], [2], [2], [(2, 0.9999983)], [(2, 0.99995077)], [(2, 0.999979)], 0.70694596, 0.13442636, 0.15862773, [], [0], [], [0], [], [(0, 0.99998266)], [], [(0, 0.99997467)], 0.07213888, 0.13442898, 0.7934322, [], [], [2], [2], []]

вызывает проблему, так как у меня должен быть список значений, а не список списка. Я сообщаю ниже шаги, чтобы получить модель LDA, просто чтобы увидеть, что я установил что-то не так в моем коде. Надеюсь, вы поможете мне go пройти через это.

data_lemmatized = lemmatization(data_words_bigrams, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV'])

Пример вывода из data_lemmatized:

[['dogs', 'classic', 'pam', 'home', 'market', 'online']]

Создание словаря:

id2word = corpora.Dictionary(data_lemmatized)

texts = data_lemmatized
corpus = [id2word.doc2bow(text) for text in texts]

id2word[0]
[[(id2word[id], freq) for id, freq in cp] for cp in corpus[:1]]

Пример вывода:

[[('dogs', 1),
  ('classic', 1),
  ('pam', 1),
  ('home', 1),
  ('market', 1),
  ('online', 1)]]

Тогда код вверху вопроса. Не могли бы вы рассказать мне, что означает эта ошибка и как я могу ее исправить? Спасибо

...