Gensim's Doc2Vec
изучает только свой набор tags
, в то же время он изучает основной словарь уникальных слов - во время первого вызова .build_vocab()
в исходном корпусе.
Когда вы тренируетесь с дополнительными примерами, которые содержат слова или теги, которые еще не известны модели, эти слова или теги просто игнорируются.
(опция .build_vocab(…, update=True)
, доступная на Word2Vec
для расширения словарного запаса никогда не применялся полностью к Doc2Vec
, ни в отношении tags
, ни в отношении давней ошибки сбоя . Поэтому он не поддерживается в Doc2Vec
.)
Обратите внимание, что если ваша цель - создать векторы документов, которые помогают в некоторых задачах последующей классификации, вы можете не захотеть указывать свои известные метки как tags
или, по крайней мере, не как тег документа only .
tags
, которые вы передаете в Doc2Vec
, - это единицы, для которых он изучает векторы. Если у вас есть миллион текстовых примеров, но только 5 разных меток, если вы вводите эти миллионы примеров в обучение, каждый из которых имеет только метку в качестве тега, модель изучает только 5 do c -векторов. По сути, это похоже на то, как будто вы тренируетесь только на 5 мега-документах (передаваемых по частям) - и, таким образом, `` суммируете '' каждую метку до одной точки в векторном пространстве, когда было бы гораздо полезнее подумать о метка, покрывающая «облако точек» неправильной формы.
Таким образом, вы можете вместо меток использовать идентификаторы документов. (Или метки и идентификаторов документов.) Затем используйте множество различных векторов из всех отдельных документов - вместо отдельных векторов на метку - для обучения некоторого нижестоящего классификатора или кластеризатора.
И в этом случае поступление документов с новыми этикетками может не потребовать полной переподготовки Doc2Vec
. Вместо этого, если новые документы по-прежнему получают полезные векторы из логического вывода по старой модели Doc2Vec
, эти векторы per-do c могут достаточно отражать документы новой метки, чтобы последующие классификаторы могли научиться их распознавать.
Однако в конечном итоге, если вы приобретете гораздо больше обучающих данных, отражающих все новые словари и смыслы слов, самый безопасный подход - переобучить модель Doc2Vec
с нуля, используя все данные. Простое инкрементное обучение, даже если оно имеет официальную поддержку, может привести к тому, что те слова / теги, которые появляются в новых данных, будут произвольно несопоставимы со словами / тегами, которые были обучены только в исходном наборе данных. Это совместное обучение с чередованием, наряду с всеми другими примерами в равной степени, которое подталкивает и вытягивает все векторы в модели в полезные относительные расположения.