2017-05-23 54 views
1

我使用的是運行於https://rare-technologies.com/word2vec-tutorial/#bonus_app的word2vec HTTP服務器中的w2v_server_googlenews代碼。我將加載的文件更改爲使用word2vec的原始C版本訓練的矢量文件。我加載文件與gensim Word2vec作爲HTTP服務'KeyedVectors'的代碼屬性錯誤

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} 

我穿上一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。

回答

2

僅供參考,演示代碼在gensim 0.12.3(從2015年開始,在requirements.txt中列出),需要更新才能使用最新的gensim。

這可能足以線的(只是load_word2vec_format()後)線70在w2v_server.py,迫使需要syn0norm屬性的創建(上載該老年gensims被自動創建),刪除原前值爲syn0。具體做法是:

self.model.init_sims(replace=True) 

(你會離開了replace=True如果你打算做業務比most_similar()等,可能需要原始載體。)

如果這個工程,以解決問題爲你,一個拉到w2v_server_googlenews回購的要求將得到有利收到!

+1

完美謝謝...拉路請求。 – godidier

相關問題