2016-08-16 26 views
0

我想在doc2vec中使用短語,並使用gensim.phrases。在doc2vec中,我們需要標記文檔來訓練模型,並且我不能標記這些短語。我怎麼能做到這一點?如何在短語中使用doc2vec?

這裏是我的代碼

text = phrases.Phrases(text) 
for i in range(len(text)): 
    string1 = "SENT_" + str(i) 

    sentence = doc2vec.LabeledSentence(tags=string1, words=text[i]) 
    text[i]=sentence 

print "Training model..." 
model = Doc2Vec(text, workers=num_workers, \ 
      size=num_features, min_count = min_word_count, \ 
      window = context, sample = downsampling) 

回答

0

Phrases()調用列車詞組創造模型。您稍後在文本上使用該模型來取回短語組合文本。

不要用您的代碼的第一行替換您的原版text與訓練有素的模型。此外,不要嘗試分配到短語模型,就像當前循環中發生的一樣,也不要使用整數訪問短語模型。

gensim docs for the Phrases class有正確使用Phrases類的例子;如果你遵循這種模式,你會做得很好。

此外,請注意LabeledSentence已被替換爲TaggedDocument,其tags參數應該是一個標籤列表。如果你提供一個字符串,它會將它看作一個一個字符的標籤(而不是你想要的一個標籤)。

+0

感謝您的回答。在這種情況下,使用「LabeledSentence」而不是TaggedDocument沒有任何區別。我的問題是在doc2vec中使用短語的地方和方式? –

+0

關於在Doc2Vec中使用短語沒有什麼特別之處;這只是一個預處理步驟,可以將某些單詞對變爲組合的「word_pairs」。因此,我建議您忽略Doc2Vec方面,避免我在現有代碼中指出的特定錯誤,並且與gensim文檔中的示例中的方式相匹配。 – gojomo

+0

我解決了你說的錯誤,但主要問題是'LabeledSententces'的輸出不能用作'Phrases'的輸入。所以我不能用'LabeledSentenses'構造短語。由於'LabeledSentences'不能標記短語,所以這個過程的反向也不能完成。 –

相關問題