web-dev-qa-db-ja.com

Gensimに保存された辞書にはid2tokenがありません

Gensim辞書をディスクに保存しました。ロードすると、id2token属性dictは入力されていません。

辞書を保存するコードの簡単な部分:

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

これで、ロードするとき(jupyterノートブックにロードするとき)、トークンを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: []

何かご意見は?

13
cjrieds

dictionary.id2token[1613]を直接使用できるため、dictionary[1613]は必要ありません。

後でdictionary.id2tokenをチェックすると、それ以上空にならないことに注意してください。これは、dictionary.id2tokenがメモリを節約するための要求に対してのみ形成されるためです(Dictionaryクラスの初期化中に述べられているように)。

21
Lenka Vraná