Объединение / добавление векторов из разных моделей word2vec - PullRequest
0 голосов
/ 17 января 2019

Я использую gensim для создания моделей Word2Vec, обученных на больших текстовых корпусах. У меня есть некоторые модели, основанные на дампах данных StackExchange. У меня также есть модель, обученная на корпусе из английской Википедии.

Предположим, что словарный термин присутствует в обеих моделях и что модели были созданы с теми же параметрами, что и в Word2Vec. Есть ли способ объединить или добавить векторы из двух отдельных моделей, чтобы создать единую новую модель, имеющую те же векторы слов, которые могли бы возникнуть, если бы я изначально объединил обе корпуса и обучился этим данным?

Причина, по которой я хочу это сделать, заключается в том, что я хочу иметь возможность генерировать модель с конкретным корпусом, а затем, если позже я обработаю новый корпус, я хочу иметь возможность скорее добавить эту информацию в существующую модель. чем объединение корпусов и переобучение всего с нуля (т.е. я хочу избежать повторной обработки каждого корпуса каждый раз, когда хочу добавить информацию в модель).

Существуют ли встроенные функции в gensim или где-либо еще, которые позволят мне комбинировать подобные модели, добавляя информацию к существующим моделям вместо переподготовки?

1 Ответ

0 голосов
/ 18 января 2019

Как правило, только векторы слов, которые были обучены вместе, являются значимо сопоставимыми. (Это чередующийся перетягивание каната во время обучения, которое перемещает их в значимые относительные ориентации, и в этом процессе достаточно случайности, чтобы даже модели, обученные в одном корпусе, различались в том, где они размещают отдельные слова.)

Используя слова из обоих корпусов в качестве ориентира, можно выучить преобразование из одного пространства A в другое B, которое пытается переместить эти известные общие слова в их соответствующие позиции в другом пространстве. Затем, применяя такое же преобразование к словам в A, которые не являются в B, вы можете найти координаты B для этих слов, делая их сопоставимыми с другими словами native-B.

Этот метод с некоторым успехом использовался в переводе языка на основе word2vec (где пары указательных столбов - известные переводы) или в качестве средства выращивания ограниченного набора слов-векторов из векторов слов из других источников. Будет ли это работать достаточно хорошо для ваших целей, я не знаю. Я предполагаю, что это может сбиться с пути, особенно когда два тренировочных корпуса используют общие жетоны в совершенно разных смыслах.

Существует класс TranslationMatrix, который может сделать это для вас в библиотеке gensim. См:

https://radimrehurek.com/gensim/models/translation_matrix.html

Демонстрационная тетрадь по его использованию находится по адресу:

https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/translation_matrix.ipynb

(Всякий раз, когда практично, полное обучение на смешанном корпусе со всеми примерами слов, вероятно, будет лучше.)

...