2017-05-09 1 views
2

디스크에 Gensim 사전을 저장했습니다. 로드 할 때 id2token 속성 dict가 채워지지 않습니다.Gensim 저장된 사전에 id2token이 없습니다.

사전 저장 코드의 간단한 조각 : 나는 (내가 jupyter 노트북에 넣기 해요)을로드 할 때 지금

dictionary = corpora.Dictionary(tag_docs) 
dictionary.save("tag_dictionary_lda.pkl") 

, 그것은 여전히 ​​ID를 매핑 토큰 잘 작동하지만, id2token이 작동하지 않습니다 (ID를 토큰에 매핑 할 수 없음). 실제로는 id2token이 채워지지 않습니다.

> dictionary = corpora.Dictionary.load("../data/tag_dictionary_lda.pkl") 
> dictionary.token2id["love"] 
Out: 1613 

> dictionary.doc2bow(["love"]) 
Out: [(1613, 1)] 

> dictionary.id2token[1613] 
Out: 
--------------------------------------------------------------------------- 
KeyError         Traceback (most recent call last) 
<ipython-input> in <module>() 
----> 1 dictionary.id2token[1613] 

KeyError: 1613 

> list(dictionary.id2token.keys()) 
Out: [] 

의견이 있으십니까?

답변

4

dictionary[1613]을 직접 사용할 수 있으므로 dictionary.id2token[1613]은 필요하지 않습니다.

나중에 dictionary.id2token을 확인하면 더 이상 비어 있지 않습니다. dictionary.id2token은 메모리를 절약하기 위해 요청할 때만 구성되기 때문에 (Dictionary 클래스의 init 중에 명시된 바와 같이) 때문입니다.

+0

감사합니다. 나는 문서에서'id2token'을 찾기가 어려웠다. 어쩌면 나는 이것을 설명하는 문서를 추가하기 위해 gensim에게 pull 요청을 제출해야한다. – cjrieds

+1

''id2token [ix]''의 의도 된 목적을 알고 있습니까? 기대하는 토큰을 돌려주는 것이 보장되지 않는다면,''dictionary [ix]''도 잘 작동합니다. –

+1

나는 이것 뒤에 몇 가지 목적이 있다고 생각하지만 단서가 없습니다. gensim 팀에 직접 물어볼 수도 있습니다. –

관련 문제