Gensim保存的字典没有id2token

cjr*_*eds 12 python nlp gensim

我已将Gensim字典保存到磁盘.当我加载它时,id2token不会填充属性dict.

保存字典的一段简单代码:

dictionary = corpora.Dictionary(tag_docs)
dictionary.save("tag_dictionary_lda.pkl")
Run Code Online (Sandbox Code Playgroud)

现在,当我加载它(我在一个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: []
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Len*_*aná 21

您不需要直接dictionary.id2token[1613]使用dictionary[1613].

请注意,如果您dictionary.id2token之后检查,它将不再为空.这是因为dictionary.id2token它仅在请求保存内存时形成(如在Dictionary类的init期间所述).

  • 我想这背后有一些目的,但我没有线索.您可以尝试直接向gensim团队询问某人. (3认同)
  • 你知道``id2token [ix]``的目的是什么?如果不能保证返回预期的令牌,那么``dictionary [ix]``的效果就像我的意思一样好. (2认同)