2017-01-18 2 views
2

Doc2Vec Figure 2Что такое docvecs от gensim?

Вышеуказанный снимок от Distributed Representations of Sentences and Documents, документ, представляющий Doc2Vec. Я использую реализацию Gensim для Word2Vec и Doc2Vec, которые великолепны, но я ищу ясность по нескольким вопросам.

  1. Для данной модели doc2vec dvm, что dvm.docvecs? Мое впечатление, что это усредненный или конкатенированный вектор, который включает в себя все слова вложения и вектор абзаца, d. Это правильно, или это d?
  2. Предполагается, что dvm.docvecs не является d, может ли один доступ к нему сам? Как?
  3. В качестве бонуса, как рассчитывается d? Бумага только говорит:

В нашем пункте Векторные рамки (см Рисунок 2), каждый пункт отображается уникальный вектор, представленный в столбца в матрице D и каждое слово, также отображается к уникальный вектор, представленный колонкой в ​​матрице W.

Спасибо за любые указания!

ответ

3

docvecs свойство модели Doc2Vec содержит все подготовленные векторы для «тегов документа», которые видны во время обучения. (Они также упоминаются как «doctags» в исходном коде.)

В самом простом случае, аналогичном документу «Векторы абзаца», каждый текстовый пример (параграф) имеет только идентификатор целочисленного номера в виде его тега ', начиная с 0. Это будет индексом в объекте docvecs, а массив numpy model.docvecs.doctag_syn0 по существу является тем же, что и (столица) D в выписке из статьи «Векторы абзацев».

(Gensim также поддерживает использование токенов в качестве тегов документов и несколько тегов на документ и повторяет теги на многих учебных документах. Для строковых тегов, если они есть, они сопоставляются с индексами в конце docvecs by dict model.docvecs.doctags.)

+0

Спасибо за ответ. Если я понимаю ваше первое предложение, 'docvecs' - это уникальный документ документа, соответствующий вектору рядом с« Average/Concatenate »на рисунке выше. Это верно? –

+2

Фактически 'model.docvecs' - это вспомогательный объект, содержащий * все * обучаемые документы-векторы. Это (и, в частности, его массив 'doctag_syn0', который похож на« матрицу абзаца на диаграмме »), для получения отдельного вектора * D * (как на диаграмме оранжевого), для смешивания с word-векторами для одного примера обучения , – gojomo

+0

Интересно. И когда используется 'dm = 0' и, следовательно, используется алгоритм PV-DBOW, этот' model.docvecs' равен 'model.docvecs.doctag_syn0'. Это имеет смысл, я полагаю, потому что нет вложений слов, соединенных с матрицей абзаца. Спасибо за помощь! –

Смежные вопросы