2

Я изучаю word2vec, но когда я использую word2vec для обучения текстовым данным, используйте OverFlowError с помощью Numpy.Python34 word2vec.Word2Vec OverFlowError

сообщение является,

model.vocab[w].sample_int > model.random.randint(2**32)] 
Warning (from warnings module): 
    File "C:\Python34\lib\site-packages\gensim\models\word2vec.py", line 636 
    warnings.warn("C extension not loaded for Word2Vec, training will be slow. " 
UserWarning: C extension not loaded for Word2Vec, training will be slow. Install a C compiler and reinstall gensim for fast training. 
Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "C:\Python34\lib\threading.py", line 920, in _bootstrap_inner 
    self.run() 
    File "C:\Python34\lib\threading.py", line 868, in run 
    self._target(*self._args, **self._kwargs) 
    File "C:\Python34\lib\site-packages\gensim\models\word2vec.py", line 675, in worker_loop 
    if not worker_one_job(job, init): 
    File "C:\Python34\lib\site-packages\gensim\models\word2vec.py", line 666, in worker_one_job 
    job_words = self._do_train_job(items, alpha, inits) 
    File "C:\Python34\lib\site-packages\gensim\models\word2vec.py", line 623, in _do_train_job 
    tally += train_sentence_sg(self, sentence, alpha, work) 
    File "C:\Python34\lib\site-packages\gensim\models\word2vec.py", line 112, in train_sentence_sg 
    word_vocabs = [model.vocab[w] for w in sentence if w in model.vocab and 
    File "C:\Python34\lib\site-packages\gensim\models\word2vec.py", line 113, in <listcomp> 
    model.vocab[w].sample_int > model.random.randint(2**32)] 
    File "mtrand.pyx", line 935, in mtrand.RandomState.randint (numpy\random\mtrand\mtrand.c:9520) 
OverflowError: Python int too large to convert to C long 

Можете ли вы сказать мне дела?

Моя машина x64, а ОС - это окна 7, но python34 - 32 бит. numpy и scipy также 32 бит.

ответ

0

Я получаю это также. Похоже, у gensim есть потенциальное обходное решение в ветке dev.

https://github.com/piskvorky/gensim/commit/726102df66000f2afcea82d95634b055e6521dc8

Это не решает основной вопрос навигации между различными аппаратными средствами и установить ИНТ размеров, но я думаю, что это должно облегчить проблемы с этой конкретной линией.

Необходимое изменение включает в себя переключение из

model.vocab[w].sample_int > model.random.randint(2**32)

для

model.vocab[w].sample_int > model.random.rand() * 2**32

Это позволяет избежать 64 бит/32 битный INT вопрос, созданный в randint.

UPDATE: Я вручную включил это изменение в мою установку gensim и предотвращает ошибку.

Смежные вопросы