Предсказания Doc2vec - мы усредняем слова или каков идентификатор абзаца для нового абзаца? - PullRequest
0 голосов
/ 26 октября 2018

Я понимаю, что вы рассматриваете идентификатор абзаца как новое слово в doc2vec (подход к DM, оставленный на рисунке) во время обучения.Результат обучения - это контекстное слово.Предположим, что после обучения модели я хочу получить 1 вложение с новым документом.

Я передаю каждое слово в сеть, а затем усредняю ​​его, чтобы получить вложение?Или есть другой способ?

Я могу передать это Генсиму, но я пытаюсь понять, как это работает.

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Я думаю, что использование вышеупомянутых методов, которые замораживают модель, только случайные новые векторы абзацев и переподготовка должны быть более эффективными, но я вижу утверждение, что простое использование среднего значения всех векторов слов в предложении более эффективно в некоторых случаях.

0 голосов
/ 26 октября 2018

Во время массового обучения модели кандидат-вектор постепенно подталкивается, чтобы лучше предсказать слова текста, точно так же, как слово-векторное обучение.Таким образом, в конце обучения у вас есть документы-векторы для всех идентификаторов, которые вы указали вместе с текстами.

Вы можете получить к ним доступ из модели gensim Doc2Vec через индексированный поиск идентификатора в стиле doct (называемый 'doctag' в gensim') you provided during training: model.docvecs [tag] `

После обучения, чтобы получить вектор документа для нового текста, используется процесс вывода. Модель удерживается замороженной, и для текста формируется новый случайный вектор-кандидат (как и те, которые начали массовое обучение для учебных текстов).Затем он постепенно увеличивается, полностью аналогично обучению, чтобы лучше предсказывать слова, но изменяется только один новый вектор-кандидат. (Все внутренние веса модели остаются неизменными.)

Вы можетевычислять такие новые векторы с помощью метода infer_vector(), который принимает токены со списком слов, которые должны были быть предварительно обработаны так же, как тексты, предоставленные во время обучения: model.infer_vector(words).

...