Как преобразовать предварительно обученные векторы fastText в модель gensim - PullRequest
0 голосов
/ 21 декабря 2018

Как преобразовать предварительно обученные векторы fastText в модель gensim?Мне нужен метод expt_output_word.

импорт gensim из gensim.models импорт Word2Vec из gensim.models.wrappers import FastText

model_wiki = gensim.models.KeyedVectors.load_word2vec_format ("wiki.ru.vec") model3 = Word2Vec (предложения = model_wiki)

TypeError Traceback (последний вызов был последним) в ----> 1 model3 = Word2Vec (предложения = model_wiki) # обучать модель из корпуса

~ / anaconda3 / envs / pym / lib / python3.6 / site-packages / gensim / models / word2vec.py в init (self, предложения, corpus_file, размер, альфа, окно,min_count, max_vocab_size, образец, начальное число, рабочие, min_alpha, sg, hs, отрицательный, ns_exponent, cbow_mean, hashfxn, iter, null_word, trim_rule, sorted_vocab, пакетные слова, compute_loss, обратные вызовы, max_final_vatch = batch = batch = boc))= trim_rule, sg = sg, альфа = альфа, окно = окно, 766 seed = seed, hs = hs, негатив = отрицательный, cbow_mean = cbow_mean, min_alpha = min_alpha, compute_loss = compute_loss, ->767 fast_version = FAST_VERSION) 768 769 def _do_train_epoch (self, corpus_file, thread_id, offset, cython_vocab, thread_private_mem, cur_epoch,

~ / anaconda3 / envs / pym / lib / python3.6 / gim-пакеты / lib / python3.6 / gim-пакеты / lib / python3.6 / gim-lib / python3.6 / gimmodels / base_any2vec.py в init (собственно, предложения, corpus_file, рабочие, vector_size, эпохи, обратные вызовы, batch_words, trim_rule, sg, alpha, окно, начальное число, hs, минус, ns_exponent, cbow_mean, min_alpha,compute_loss, fast_version, ** kwargs) 757 поднять TypeError («Вы не можете передать генератор в качестве аргумента предложения.Попробуйте итератор. ") 758 -> 759 self.build_vocab (предложения = предложения, corpus_file = corpus_file, trim_rule = trim_rule) 760 self.train (761 предложения = предложения, corpus_file = corpus_file, total_examples = self.corpus_count,

~ / anaconda3 / envs / pym / lib / python3.6 / site-packages / gensim / models / base_any2vec.py в build_vocab (self, предложения, corpus_file, update, progress_per, keep_raw_vocab, trim_rule, ** kwargs) 934"" "935 total_words, corpus_count = self.vocabulary.scan_vocab (-> 936 предложений = предложения, corpus_file = corpus_file, progress_per = progress_per, trim_rule = trim_rule) 937 self.corpus_count = corpus_count 938 self.corp1019 * ~ / anaconda3 / envs / pym / lib / python3.6 / site-packages / gensim / models / word2vec.py в scan_vocab (self, предложения, corpus_file, progress_per, работники, trim_rule) 1569 предложений = LineSentence (corpus_file)
1570 -> 1571 total_words, corpus_count = self._scan_vocab (предложения, progress_per, trim_rule) 1572 1573 logger.info (

~ / anaconda3 / envs / pym / lib / python3.6 / site-packages / gensim / models / word2vec.py в _scan_vocab (собственно, предложения, progress_per, trim_rule) 1538
vocab = defaultdict (int) 1539 checked_string_types= 0 -> 1540 для имя-предложения, предложение в перечислении (предложения): 1541, если не проверено_строки_типы: 1542
, если isinstance (предложение, тип_строки):

~ / anaconda3 / envs / pym / lib / python3.6 / site-packages / gensim / models / keyedvectors.py в getitem (self, entity) 337 return self.get_vector (entity) 338 -> 339 return vstack ([self.get_vector (entity) длясущность в сущностях]) 340 341 def содержит (собственная личность, сущность):

TypeError: объект int не является итеративным

1 Ответ

0 голосов
/ 21 декабря 2018

Согласно документации Gensim, вы можете использовать функцию gensim.models.wrappers, чтобы:

Загружать скрытую входную матрицу весов из родных быстрых текстовых файлов .bin и .vec Facebook.

Вот пример:

from gensim.models.wrappers import FastText

model = FastText.load_fasttext_format('wiki.vec')
...