2

word2vec を使用して、2 つの単語の類似度を計算しています。そのため、モデルには GoogleNews を使用しています。このモデルは非常に大きいため、読み込みに時間がかかります。

model = Word2Vec.load_word2vec_format('D:/Userfiles/vsachidananda/Downloads/GoogleNews-vectors negative300.bin.gz', binary=True)

これをロードして変数/オブジェクトに保持したいので、Pythonプログラムを実行するたびに呼び出すことができます

model.similarity('word1','word2')

これはどのように達成できますか?何か案が?

4

1 に答える 1

1

Python プロセス間で複雑なオブジェクトを共有する唯一の方法は、multiprocessing.Manager. ただし、サブプロセスと共有する必要があるたびmodelに、ピクルス化およびアンピクルス化されます。と同じくらい遅いと思いますload_word2vec_format

model代わりに、一度ロードして待機し、オンデマンドで別の Python スクリプトを実行するランチャーを実行することもできます。非常に単純なランチャーは次のようになります。

import Word2Vec
model = Word2Vec.load_word2vec_format(...)

try:
    import traceback
    import script

    while True:
        raw_input()

        try:
            reload(script)
            script.main(model)
        except:
            print traceback.print_exc()

except KeyboardInterrupt:
    print 'exit launcher'

この基本的なランチャーでscript.pyは、同じフォルダーにある必要があり、次を定義する必要がありますmain()

def main(model):
    model.similarity('word1','word2')
    ...
于 2014-09-11T13:52:20.550 に答える