2016-10-25 10 views
8

私はkerasにword2vecアルゴリズムを実装したいと思いますが、これは可能ですか? モデルをどのようにフィットさせることができますか?カスタム損失機能を使用すべきですか?Kerasでword2vecを実装

+2

私は尋ねる前にこれを見つけましたが、それは古すぎ、乱雑です。新しい実装があります:https://github.com/SimonPavlik/word2vec-keras-in-gensim/blob/keras106/word2veckeras/word2veckeras.py –

答えて

1

これは可能ですか?

あなたは既に自分自身に答えています:はい。 gensimを使用するword2veckerasに加えて、余分な依存関係を持たない別のCBOW implementationがあります(この場合、私はこのレポと提携していません)。例として使用できます。

どのようにモデルに適合させることができますか?

トレーニングデータが文章の大規模コーパスであるので、最も便利な方法は、「Pythonのジェネレータによってバッチでバッチ生成されたデータにモデルをフィット」され、model.fit_generatorです。ジェネレータは無期限に(word, context, target) CBOW(またはSG)タプルを生成しますが、トレーニングを制限するために手動でsample_per_epochnb_epochを指定します。このようにして文解析(トークン化、単語インデックステーブル、スライディングウィンドウなど)と実際のケラスモデルとを組み合わせて、save a lot of resourcesを作成します。

カスタムロス機能を使用する必要がありますか?

CBOWは、中心単語の予測された分布と真の分布の間の距離を最小にするので、最も単純な形式ではcategorical_crossentropyがそれを行います。 negative samplingを実装すると、少し複雑ですが効率はさらに向上しますが、損失関数はbinary_crossentropyに変わります。カスタムロスト機能は不要です。

数学と確率モデルの詳細に興味のある方は、スタンフォード大学のCS224Dクラスを強くお勧めします。 word2vec、CBOW、Skip-GramについてはHere is the lecture notesです。

word2vec implementationが純粋なnumpyおよびcである。

+0

これは古い質問でしたが、詳細な回答に感謝します。 –

関連する問題