NameError:名称“ gensim”未定义

时间:2019-01-27 07:05:35

标签: python gensim lda mallet

我已经导入了我需要的所有包

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 :(得分:1)

直接使用LdaMallet(mallet_path,corpus=corpus, num_topics=20, id2word=dictionary),因为您已经从gensim.models.wrappers导入了所需的方法

答案 1 :(得分:1)

因为您有这个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.;您不需要它。