2016-08-16 28 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クラスの適切な使用例があります。あなたがそのパターンに従えば、あなたはうまくいくでしょう。

さらに、LabeledSentenceTaggedDocumentに置き換えられ、そのtags引数がタグのリストでなければならないことに注意してください。文字列を指定すると、それを(あなたが意図する1つのタグの代わりに)1文字のタグのリストとして表示します。

+0

あなたの答えに感謝します。この場合、TaggedDocumentの代わりに "LabeledSentence"を使用すると違いはありません。私の問題はどこでどのようにdoc2vecでフレーズを使用するのですか? –

+0

Doc2Vecでフレーズを使用することについて特別なことは何もありません。いくつかの単語対を 'word_pairs'を組み合わせて変更するだけの前処理です。ですから、Doc2Vecの面を無視し、既存のコードで指摘した特定のエラーを避け、gensimのドキュメントの例で行われているようにしてください。 – gojomo

+0

私はあなたが言ったエラーを解決しますが、主な問題は 'LabeledSententces'の出力は' Phrases'の入力としては機能しません。だから、私は 'LabeledSentenses'でフレーズを構築することはできません。 'LabeledSentences'がフレーズにタグを付けることができないので、このプロセスの逆もできません! –

関連する問題