2

我正在使用 word2vec 来计算两个单词之间的相似度。所以对于我使用 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 回答