2017-05-09 15 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にプルリクエストを提出して、これを説明するドキュメントを追加するべきです。 – cjrieds

+1

'' id2token [ix] ''の目的が何であるか知っていますか?期待されるトークンを返すことが保証されておらず、 '' dictionary [ix] ''もうまく動作します。 –

+1

これにはいくつかの目的があると思いますが、手がかりはありません。あなたはgensimチームから誰かに直接質問しようとするかもしれません。 –

関連する問題