2017-10-10 72 views
0

我試圖理解doc2vec,我可以用它來解決我的情況。我想使用TaggedSentences([words],[tags])爲一個或多個標籤標註句子,但不確定如果我的理解是正確的。Gensim doc2vec句子標記

所以基本上,我需要這樣的事情發生(或我完全沒譜)

我創建2個TaggedDocuments

TaggedDocument(words=["the", "bird", "flew", "over", "the", "coocoos", "nest", labels=["animal","tree"]) 
TaggedDocument(words=["this", "car", "is", "over", "one", "million", "dollars", labels=["motor","money"]) 

我建立我的模型

model = gensim.models.Doc2Vec(documents, dm=0, alpha=0.025, size=20, min_alpha=0.025, min_count=0) 

然後我訓練我的模特

model.train(documents, total_examples=len(documents), epochs=1) 

所以,當我已經全部完成,我的期望是,當我執行

model.most_similar(positive=["bird", "flew", "over", "nest]) 

爲[動物,樹],但我得到

[('the', 0.4732949137687683), 
('million', 0.34103643894195557), 
('dollars', 0.26223617792129517), 
('one', 0.16558100283145905), 
('this', 0.07230066508054733), 
('is', 0.012532509863376617), 
('cocos', -0.1093338280916214), 
('car', -0.13764989376068115)] 

UPDATE: 當我推斷

vec_model = model.Word2Vec.load(os.path.join("save","vec.w2v")) 
infer = vec_model.infer_vector(["bird", "flew", "over", "nest"]) 
print(vec_model.most_similar(positive=[infer], topn=10)) 

我得到

[('bird', 0.5196993350982666), 
('car', 0.3320297598838806), 
('the', 0.1573483943939209), 
('one', 0.1546170711517334), 
('million', 0.05099521577358246), 
('over', -0.0021460093557834625), 
('is', -0.02949431538581848), 
('dollars', -0.03168443590402603), 
('flew', -0.08121247589588165), 
('nest', -0.30139490962028503)] 

所以在房間裏的大象,是doc2vec什麼,我需要完成上面的場景,或者我應該回去睡覺,有什麼我試着在生活:)

任何幫助非常感謝

實現適當的思考

回答

1

目前尚不清楚你的目標是什麼。

你的代碼示例有點混亂;正如目前所顯示的那樣,TaggedDocument結構不會產生良好的文本示例。 (words需要是單詞列表,而不是帶有一串逗號分隔標記的字符串。)

如果您要求model有相似之處,您會收到詞語 - 如果您需要doc-tags,必須詢問該模型的docvecs子屬性。 (即model.docvecs.most_similar()。)

關於你的訓練參數,沒有很好的理由將默認的min_alpha更改爲等於開始-α。保留所有單詞的min_count=0通常會使word2vec/doc2vec矢量變差。算法通常需要很多數據通過 - 通常是10個或更多 - 而不是一個。

但是,word2vec/doc2vec確實需要批量數據才能實現其結果 - 玩具大小的測試很少顯示與較大數據集相同的有益特性。

+1

非常感謝回覆gojomo :),因此iv修復了上述代碼片段(字符串列表)中的錯別字,Iv也試圖理解min_count和min_alpha更好一些。 :)我使用docvecs.most_similar()重新運行代碼,並且確實找回了我期望的正確排名標籤。我很新的ML,真的很感激反饋。不是我必須得到一個更大的數據集和一些好的數據來玩。我的旅程繼續:) – rogger2016

+0

目前尚不清楚你的目標是什麼。>我試圖用類似句子的標籤標記句子 – rogger2016

+0

我也有點困惑,如果我有100個帶有獨特句子和標籤的文檔,如果我運行的查詢與我期望得到的句子完全匹配一個特定的標籤......每次它給我不同的標籤......應該發生這種事情嗎? – rogger2016

相關問題