2016-07-20 16 views
3

저는 Python2로 doc2vec 모델을 교육했으며 Python3에서 사용하고 싶습니다. 내가 파이썬 3에서로드하려고 할 때Doc2Vec 모델 Python 3 호환성

, 내가 얻을 :

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

:

Doc2Vec.load('my_doc2vec.pkl') 

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

내가 수행하여 해결하려고 피클 호환성 문제에 관련이있는 것으로 보인다 Gensim은 이름을 바꾼 다른 파일도 저장 했으므로 전화 할 때 찾을 수 있습니다.

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

로드 UnicodeDecodeError로 실패하지는 않지만 추론 후에는 의미없는 결과가 나타납니다.

이 모델에서이 모델을 사용하여 파이썬 3에서 Gensim을 사용하여 쉽게 재 훈련 할 수 없으므로 길고 복잡한 파이프 라인을 다시 실행해야합니다.

doc2vec 모델을 Python 3과 호환되게하려면 어떻게해야합니까?

답변

2

내 질문에 답하면이 answer이 나를 위해 일했습니다.

  1. 다운로드 gensim 소스 코드, gensim/utils.py에서
  2. 의 repo

  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 파이썬 3에서로드 가능한해야합니다.