2016-07-20 8 views
3

私はPython2でdoc2vecモデルを訓練しました。私はPython3で使用したいと思います。Doc2VecモデルPython 3との互換性

私は、Python 3でそれをロードしようとすると、私が手:

Doc2Vec.load('my_doc2vec.pkl') 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 0: ordinal not in range(128) 

私が行うことによって解決しようとしたピクルスの互換性の問題に関連しているように見える:

with open('my_doc2vec.pkl', 'rb') as inf: 
    data = pickle.load(inf) 
data.save('my_doc2vec_python3.pkl') 

Gensimは名前を変更した他のファイルも保存しましたので、呼び出し時に見つけることができます

de = Doc2Vec.load('my_doc2vec_python3.pkl') 

load()do UnicodeDecodeErrorでは失敗しませんが、推論の結果が無意味な結果が得られたら。

私はこのモデルを使ってPython 3のGensimを使って簡単に再訓練することはできません。長いパイプラインと複雑なパイプラインを再実行する必要があります。

doc2vecモデルをPython 3と互換にするにはどうすればよいですか?

答えて

2

私自身の質問に答えると、answerが私のために働いた。

  1. ダウンロードgensimのソースコード、gensim/utils.pyで
  2. レポ

  3. から例えばクローン、符号化パラメータを追加する方法を化したりunpickle化したり編集:ここでは

    は、もう少し詳細手順です

    de = Doc2Vec.load('my_doc2vec.pkl') 
    
    :パイソン3および修飾gensimを用い
    return _pickle.loads(f.read(), encoding='latin1') 
    
  4. 、モデルをロードそれ保存

  5. de.save('my_doc2vec_python3.pkl') 
    

このモデルは変更されていないgensimではPython 3にロード可能になりましたする必要があります。