2017-01-18 92 views
2

Doc2Vec Figure 2什麼是gensim的'docvecs'?

以上圖片來自Distributed Representations of Sentences and Documents,論文介紹Doc2Vec。我正在使用Gensim的Word2Vec和Doc2Vec實現,這很好,但我正在尋找幾個問題的清晰度。

  1. 對於給定的doc2vec模型dvm,什麼是dvm.docvecs?我的印象是,它是包含嵌入段落矢量d的所有單詞的平均或級聯向量。這是正確的,還是d?
  2. 假設dvm.docvecsd,可以自己一個接入d?怎麼樣?
  3. 作爲獎勵,d是如何計算的?本文只是說:

在我們的第矢量框架(參見圖2),每 段被映射到一個唯一的向量,表示通過在基體d和字字 柱也被映射到一個 獨特的矢量,由矩陣W中的列表示。

感謝您的任何線索!

回答

3

的Doc2Vec模型的docvecs屬性保存所有的培訓向量訓練中看到的「文件標籤」。 (這些在源代碼中也被稱爲'doctags'。)

在最簡單的情況下,類似於Paragraph Vectors文件,每個文本示例(段落)都只有一個序列號整數ID作爲其'標記」,從0開始。這將是一個指數到docvecs對象 - 與model.docvecs.doctag_syn0 numpy的陣列是基本上在摘自段落載體紙上的同樣的事情(大寫)d。 (Gensim還支持使用字符串標記作爲文檔標記,併爲每個文檔創建多個標記,並在許多培訓文檔中重複使用標記。對於字符串標記,如果有的話,它們映射到docvecs末尾附近的索引由字典model.docvecs.doctags。)

+0

感謝您的答覆。如果我理解你的第一句話,'docvecs'是與上圖中的'Average/Concatenate'旁邊的矢量對應的唯一文檔向量。那是對的嗎? –

+2

實際上'model.docvecs'是一個幫助對象,它持有*所有被訓練的文檔向量。它(特別是它的'doctag_syn0'數組就像圖中的'段落矩陣')被用來獲得一個單獨的向量* D *(如圖中的橙色),與單個向量混合進行單個訓練樣例。 – gojomo

+0

有趣。當'dm = 0',因此使用PV-DBOW算法時,'model.docvecs'等於'model.docvecs.doctag_syn0'。這是有道理的,我猜想是因爲沒有將字嵌入與段落矩陣結合在一起。謝謝您的幫助! –