Ошибка моделирования темы Python в молотке - PullRequest
0 голосов
/ 07 июня 2018

Привет! Я использовал gensim для моделирования тем, использовал Маллет и выполнял этот код. Я распаковал молоток на диске c, как показано, и также установил команду среды MALLET_HOME.Код, который я выполнял:

mallet_path = r'c:/mallet-2.0.8/bin/mallet'
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, corpus=corpus, 
num_topics=20, id2word=id2word)

, это дает мне такую ​​ошибку

CalledProcessError                        Traceback (most recent call last)
<ipython-input-58-6e0dbb876ee6> in <module>()
----> 1 ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, 
corpus=corpus, 
   num_topics=20, id2word=id2word)

~\AppData\Local\Continuum\anaconda3\lib\site- 
packages\gensim\models\wrappers\ldamallet.py in __init__(self, mallet_path, 
corpus, num_topics, alpha, id2word, workers, prefix, optimize_interval, 
iterations, topic_threshold)
124         self.iterations = iterations
125         if corpus is not None:
--> 126             self.train(corpus)
127 
128     def finferencer(self):

~\AppData\Local\Continuum\anaconda3\lib\site- 
packages\gensim\models\wrappers\ldamallet.py in train(self, corpus)
265 
266         """
--> 267         self.convert_input(corpus, infer=False)
268         cmd = self.mallet_path + ' train-topics --input %s --num-topics 
%s  --alpha %s --optimize-interval %s '\
269             '--num-threads %s --output-state %s --output-doc-topics %s - 
-output-topic-keys %s '\

~\AppData\Local\Continuum\anaconda3\lib\site- 
packages\gensim\models\wrappers\ldamallet.py in convert_input(self, corpus, 
infer, serialize_corpus)
254             cmd = cmd % (self.fcorpustxt(), self.fcorpusmallet())
255         logger.info("converting temporary corpus to MALLET format with 
%s", cmd)
--> 256         check_output(args=cmd, shell=True)
257 
258     def train(self, corpus):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\utils.py in 
check_output(stdout, *popenargs, **kwargs)
1804             error = subprocess.CalledProcessError(retcode, cmd)
1805             error.output = output
-> 1806             raise error
1807         return output
1808     except KeyboardInterrupt:`

CalledProcessError: Command 'c:\mallet-2.0.8\bin\mallet import-file -- 
preserve-case --keep-sequence --remove-stopwords --token-regex "\S+" --input 
C:\Users\apath009\AppData\Local\Temp\d186ea_corpus.txt --output 
C:\Users\apath009\AppData\Local\Temp\d186ea_corpus.mallet' returned non-zero 
exit status 1.

Пожалуйста, помогите !!!

1 Ответ

0 голосов
/ 02 сентября 2018

У меня тоже была эта ошибка, но теперь она работает.Я не уверен точно, что я сделал, чтобы это начало работать, но я подробно опишу все, что я сделал.

Сначала я следовал за всем по этой ссылке, ответ с 3 шагами (вставлен ниже): Ошибка при реализации gensim.LdaMallet

  1. Убедитесь, чточто MALLET_HOME установлено

  2. Избегать косые черты при установке mallet_path в Python

    mallet_path = 'c:\\mallet-2.0.8\\bin\\mallet'
    LDA_model = gensim.models.LdaMallet(mallet_path, ...
    
  3. Также может быть полезно изменить строку 142в Python\Lib\site-packages\gensim\models\ldamallet.py: изменить --token-regex '\S+' to --token-regex \"\S+\"

Но я все еще получал ошибку.Затем мой компьютер имеет двойную загрузку, поэтому я загрузил lubuntu, установил java, python3, gensim и скопировал папку mallet в раздел lubuntu.Я запустил тестовый файл Python, используя тот же код, что и в Windows, но с новым каталогом mallet /home/Desktop/mallet-2.0.8/bin/mallet из терминала lubuntu.Это сработало.Затем я загрузился обратно в Windows, и неожиданно это сработало и в Windows.

...