gpt4 book ai didi

python - gensim Word2vec作为HTTP服务的代码 'KeyedVectors' 属性错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:02 25 4
gpt4 key购买 nike

我正在使用 w2v_server_googlenews来自运行在 https://rare-technologies.com/word2vec-tutorial/#bonus_app 的 word2vec HTTP 服务器的代码.我将加载的文件更改为使用原始 C 版本的 word2vec 训练的向量文件。我用

加载文件
gensim.models.KeyedVectors.load_word2vec_format(fname, binary=True)

加载似乎没有问题。但是当我用

测试 HTTP 服务时
curl 'http://127.0.0.1/most_similar?positive%5B%5D=woman&positive%5B%5D=king&negative%5B%5D=man' 

我得到一个只有执行时间的空结果。

{"taken": 0.0003361701965332031, "similars": [], "success": 1}

我在相关方法的 except 部分放了一个 traceback.print_exc(),在本例中是 def most_similar(self, *args, **kwargs): 我得到了:

Traceback (most recent call last):
File "./w2v_server.py", line 114, in most_similar
topn=5)
File "/usr/local/lib/python2.7/dist-packages/gensim/models/keyedvectors.py", line 304, in most_similar
self.init_sims()
File "/usr/local/lib/python2.7/dist-packages/gensim/models/keyedvectors.py", line 817, in init_sims
self.syn0norm = (self.syn0 / sqrt((self.syn0 ** 2).sum(-1))[..., newaxis]).astype(REAL)
AttributeError: 'KeyedVectors' object has no attribute 'syn0'

知道为什么会发生这种情况吗?

注意:我使用 python 2.7 并使用 pip 安装了 gensim,这给了我 gensim 2.1.0。

最佳答案

仅供引用,演示代码基于 gensim 0.12.3(从 2015 年开始,如其 requirements.txt 中所列),需要更新才能使用最新的 gensim。

w2v_server.py 的第 70 行(紧接在 load_word2vec_format() 之后)添加一行可能就足够了,以强制创建所需的 syn0norm 属性(在旧的 gensims 中是在加载时自动创建的),在删除原始 syn0 值之前。具体来说:

self.model.init_sims(replace=True)

(如果您要执行 most_similar() 以外的操作,您将省略 replace=True,这可能需要原始向量。)

如果这可以为​​您解决问题,请向 w2v_server_googlenews 发出拉取请求 repo 协议(protocol)将受到好评!

关于python - gensim Word2vec作为HTTP服务的代码 'KeyedVectors' 属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com