我已经导入了我需要的所有包
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模型在尝试使用槌子之前运行良好。那怎么了?
答案 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.
;您不需要它。