Как правило, только векторы слов, которые были обучены вместе, являются значимо сопоставимыми. (Это чередующийся перетягивание каната во время обучения, которое перемещает их в значимые относительные ориентации, и в этом процессе достаточно случайности, чтобы даже модели, обученные в одном корпусе, различались в том, где они размещают отдельные слова.)
Используя слова из обоих корпусов в качестве ориентира, можно выучить преобразование из одного пространства 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
(Всякий раз, когда практично, полное обучение на смешанном корпусе со всеми примерами слов, вероятно, будет лучше.)