Использование веса из модели Gensim Word2Vec в качестве отправной точки для другой модели
У меня есть два корпуса из одной области, но с временным сдвигом, скажем, на одно десятилетие. Я хочу обучить на них модели Word2vec, а затем исследовать различные факторы, влияющие на семантический сдвиг.
Интересно, как мне инициализировать вторую модель с вложениями первой модели, чтобы в максимально возможной степени избежать эффекта дисперсии в оценках совместной встречаемости.
1 ответ
На наивном и простом уровне вы можете просто загрузить одну существующую модель и
.train()
по новым данным. Но обратите внимание, если вы это сделаете:
- Любые слова, еще не известные модели, будут проигнорированы, а частоты слов, которые используются для алгоритмических шагов, будут взяты только из первоначального опроса.
- В то время как все слова в текущем корпусе получат столько обучающих обновлений, сколько их появления (и ваше
epochs
setting) диктуют, и, таким образом, могут быть перемещены произвольно - далеко от их местоположений исходной модели, другие слова из исходной модели останутся там, где они были. Но только чередование перетягивания каната между словами на одном и том же учебном занятии делает их полезными сопоставимыми. Таким образом, выполнение этого последовательного обучения - обновление только некоторых слов в новом учебном сеансе - может ухудшить значимость дословных сравнений трудными для измерения способами.
Другой подход, который можно было бы попробовать, может заключаться в обучении единой модели над объединенным корпусом, но при этом преобразовывать / повторять специфические для эпохи тексты / слова определенным образом, чтобы иметь возможность отличать более ранние употребления от более поздних. Более подробная информация об этом предложении в контексте векторов слов, различающихся в зависимости от эпохи использования, содержится в нескольких предыдущих ответах:
/questions/51267395/kak-rasschitat-rasstoyanie-mezhdu-dvumya-modelyami-node2vec/51267406#51267406