Как совместить две модели GloVe в text2vec?

Допустим, я обучил две отдельные модели векторного пространства GloVe (используя text2vec в R) на основе двух разных корпусов. Для этого могут быть разные причины: например, две базовые корпуса могут быть двух разных периодов времени или двух очень разных жанров. Мне было бы интересно сравнить использование / значение слов между этими двумя корпусами. Если бы я просто объединил две корпорации и их словари, это не сработало бы (расположение в векторном пространстве для пар слов с различным использованием было бы просто где-то посередине).

Моя первоначальная идея состояла в том, чтобы обучить только одну модель, но при подготовке текстов добавьте суффикс (_x, _y) к каждому слову (где x и y означают использование слова A в корпусе x/y), а также сохраните отдельная копия каждого корпуса без суффиксов, так что словарь окончательного составного учебного корпуса будет состоять из: A, A_x, A_y, B, B_x, B_y ... и т. д., например:

this is an example of corpus X
this be corpus Y yo
this_x is_x an_x example_x of_x corpus_x X_x
this_y be_y corpus_y Y_y yo_y

Я полагал, что "среднее" использование A и B послужит своего рода "координатами" пространства, и я мог измерить расстояние между A_x и A_y в одном и том же пространстве. Но потом я понял, что A_x и A_y никогда не встречаются в одном и том же контексте (из-за суффикса всех слов, включая окружающие их слова), это, вероятно, исказит пространство и не сработает. Я также знаю, что существует проблема ортогональных отростков, которая связана с выравниванием матриц, но я не знаю, как реализовать это в моем случае.

Что было бы разумным способом совместить две модели GloVe (желательно в R и чтобы они работали с text2vec ) в общее векторное пространство, если моя конечная цель состоит в том, чтобы измерить косинусное сходство пар слов, которые являются орфографически идентичными, но встречаются в двух разных корпусах?

1 ответ

Я вижу 2 возможных решения:

  1. попытаться инициализировать вторую модель перчатки с решением от первого и надеяться, что система координат не изменится слишком сильно во время подгонки второй модели
  2. подберите две модели и получите матрицы слов векторов A, B. Затем найдите матрицу вращения, которая минимизирует сумму углов между рядами A и B (пока не знаю, как это сделать)

Также проверьте http://nlp.stanford.edu/projects/histwords/, mb это поможет с методологией.

Кажется, это хороший вопрос для https://math.stackexchange.com/

Другие вопросы по тегам