NameError: имя 'gensim' не определено - PullRequest
0 голосов
/ 27 января 2019

Я импортировал все нужные мне пакеты

from gensim import corpora
from gensim import models
from gensim.models import LdaModel
from gensim.models import TfidfModel
from gensim.models import CoherenceModel

и затем мне нужно запустить модель LdaMallet, чтобы я импортировал их вот так

from gensim.models.wrappers import LdaMallet

при запуске кода ниже у меня есть Namerror:

mallet_path = 'mallet-2.0.8/bin/mallet' # update this path

ldamallet = gensim.models.wrappers.LdaMallet(mallet_path,corpus=corpus, num_topics=20, id2word=dictionary)

Произошла ошибка:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-22-1c656d4f8c21> in <module>()
      1 mallet_path = 'mallet-2.0.8/bin/mallet' # update this path
      2 
----> 3 ldamallet = gensim.models.wrappers.LdaMallet(mallet_path,corpus=corpus, num_topics=20, id2word=dictionary)

NameError: name 'gensim' is not defined

Я думал, что импортировал все, что мне нужно, и модель lda работала хорошо, прежде чем я попытался использовать молоток. Так в чем же проблема?

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Потому что у вас есть это import:

from gensim import models

Вы должны ссылаться на wrappers в своем коде как models.wrappers и т. Д., А не gensim.models.wrappers.

Но вы тоже делаете это:

from gensim.models.wrappers import LdaMallet

так что вы можете просто обратиться к LdaMallet напрямую, как в:

ldamallet = LdaMallet(mallet_path,corpus=corpus, num_topics=20, id2word=dictionary)

Обратите внимание, что я пропустил gensim.models.wrappers. здесь; тебе это не нужно.

0 голосов
/ 27 января 2019

Просто используйте LdaMallet(mallet_path,corpus=corpus, num_topics=20, id2word=dictionary) сразу, потому что вы уже импортировали требуемый метод из gensim.models.wrappers

...