2017-03-27 104 views
1

我有一組用戶和他們的內容(每個包含用戶的用戶鳴叫1個文件)。我打算爲每個用戶使用一個大小爲N的分佈式向量表示。一種方法是採取在Twitter上的數據預先訓練的wordvectors並取它們的平均值得到一個用戶的分佈矢量。我打算使用doc2vec更好results.But我不太清楚,如果我理解Distributed Representations of Sentences and Documents給出的DM模型。如何獲取新段落的段落向量?

據我所知,我們正在分配每個段落一個載體,同時預測下一個字,我們正在使用,然後backpropagating錯誤更新款向量以及詞彙向量。如何使用它來預測新段落的向量?

編輯:用於gensim計算新文件第矢量任何玩具代碼,將不勝感激。

+0

對於使用doc2vec模型進行培訓和預測的問題,有一個很好的解釋:https://www.quora.com/How-does-doc2vec-represent-feature-vector-of-a-document- Cananone -explain-數學知識 - 的 - 過程 - 是 - 做 –

回答

1

以下代碼基於gensim的doc2vec tutorial。我們可以實例和訓練doc2vec模型生成尺寸300的嵌入與大小爲10的情況下如下窗口:

from gensim.models.doc2vec import Doc2Vec 
model = Doc2Vec(size=300, window=10, min_count=2, iter=64, workers=16) 
model.train(train_corpus, total_examples=model.corpus_count, epochs=model.iter) 

被訓練我們的模型,我們可以計算一個新的看不見的文檔向量如下:

doc_id = random.randint(0, len(test_corpus)) 
inferred_vector = model.infer_vector(test_corpus[doc_id]) 
sims = model.docvecs.most_simlar([inferred_vector], topn=len(model.docvecs)) 

這將返回我們的測試文檔的300維表示並根據餘弦相似度計算來自訓練集的前N個最相似的文檔。

+0

有誰真的知道如何計算推斷的載體?調用gensim的infer_vector不會回答問題imo。 –