Загрузить предварительные векторы Gensim

Я использую пакет Gensim Python для изучения модели нейронного языка, и я знаю, что вы можете предоставить учебный корпус для изучения модели. Однако в текстовом формате уже существует много предварительно вычисленных векторов слов (например, http://www-nlp.stanford.edu/projects/glove/). Есть ли способ инициализировать модель Gensim Word2Vec, которая просто использует некоторые предварительно вычислимые векторы, вместо того, чтобы изучать векторы с нуля?

Спасибо!

Ответ 1

Вы можете скачать предварительно подготовленные словарные векторы отсюда (получить файл "GoogleNews-vectors-negative300.bin" ): word2vec

Извлеките файл, а затем вы можете загрузить его в python, например:

model = gensim.models.word2vec.Word2Vec.load_word2vec_format(os.path.join(os.path.dirname(__file__), 'GoogleNews-vectors-negative300.bin'), binary=True)

model.most_similar('dog')

EDIT (май 2017 года): Поскольку вышеупомянутый код теперь устарел, вот как вы теперь загрузите векторы:

model = gensim.models.KeyedVectors.load_word2vec_format(os.path.join(os.path.dirname(__file__), 'GoogleNews-vectors-negative300.bin'), binary=True)

Ответ 2

Дамп GloVe со стэнфордского сайта находится в формате, который немного отличается от формата word2vec. Вы можете преобразовать файл GloVe в формат word2vec, используя:

python -m gensim.scripts.glove2word2vec --input  glove.840B.300d.txt --output glove.840B.300d.w2vformat.txt

Ответ 3

Насколько я знаю, Gensim может загружать два двоичных формата, word2vec и fastText, и общий формат простого текста, который может быть создан большинством инструментов встраивания слов. Общий формат обычного текста выглядит следующим образом (в этом примере 20000 - это размер словаря, а 100 - длина вектора).

20000 100
the 0.476841 -0.620207 -0.002157 0.359706 -0.591816 [98 more numbers...]
and 0.223408  0.231993 -0.231131 -0.900311 -0.225111 [98 more numbers..]
[19998 more lines...]

В своем ответе Чайтанья Шиваде объяснил, как использовать скрипт, предоставленный Gensim, для преобразования формата Glove (каждая строка: слово + вектор) в общий формат.

Загрузка различных форматов проста, но их также легко перепутать:

import gensim
model_file = path/to/model/file

1) Загрузка бинарного word2vec

model = gensim.models.word2vec.Word2Vec.load_word2vec_format(model_file)

2) Загрузка бинарного быстрого текста

model = gensim.models.fasttext.FastText.load_fasttext_format(model_file)

3) Загрузка общего формата обычного текста (который был представлен word2vec)

model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file)

Если вы планируете использовать только встраивание слов, а не продолжать их обучение в Gensim, вы можете использовать класс KeyedVector. Это значительно уменьшит объем памяти, необходимый для загрузки векторов (подробное объяснение).

Следующее загрузит двоичный формат word2vec в качестве ключевых векторов:

model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file, binary=True)