我使用word2vec来计算两个单词之间的相似度。因此对于模型我正在使用GoogleNews。 这个模型非常庞大,因此需要花费大量的时间来加载。
model = Word2Vec.load_word2vec_format('D:/Userfiles/vsachidananda/Downloads/GoogleNews-vectors negative300.bin.gz', binary=True)
我想加载它并保存在变量/对象中,这样每当我运行python程序时,我应该只能调用
model.similarity('word1','word2')
如何实现这一目标?有什么想法吗?
答案 0 :(得分:1)
我知道在Python进程之间共享复杂对象的唯一方法是使用multiprocessing.Manager
。
但是每次需要与子流程共享时,model
都会腌制和 unxled 。我想这会和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')
...