Как совместить две модели 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 возможных решения:
- попытаться инициализировать вторую модель перчатки с решением от первого и надеяться, что система координат не изменится слишком сильно во время подгонки второй модели
- подберите две модели и получите матрицы слов векторов A, B. Затем найдите матрицу вращения, которая минимизирует сумму углов между рядами A и B (пока не знаю, как это сделать)
Также проверьте http://nlp.stanford.edu/projects/histwords/, mb это поможет с методологией.
Кажется, это хороший вопрос для https://math.stackexchange.com/