【问题标题】:Gensim saved dictionary has no id2tokenGensim 保存的字典没有 id2token
【发布时间】:2017-05-09 19:26:59
【问题描述】:

我已将 Gensim 字典保存到磁盘。当我加载它时,id2token 属性字典没有被填充。

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

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

现在当我加载它时(我正在将它加载到一个 jupyter 笔记本中),它仍然可以很好地将令牌映射到 ID,但 id2token 不起作用(我无法将 ID 映射到令牌)事实上 @987654324 @ 根本没有填充。

> 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: []

有什么想法吗?

【问题讨论】:

    标签: python nlp gensim


    【解决方案1】:

    您不需要dictionary.id2token[1613],因为您可以直接使用dictionary[1613]

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

    【讨论】:

    • 谢谢,这行得通。我很难在文档中找到id2token。也许我应该向 gensim 提交一个拉取请求,以添加解释这一点的文档。
    • 你知道id2token[ix]的目的是什么吗?如果不能保证返回预期的令牌,并且dictionary[ix] 的工作原理和我的意思一样好。
    • 我想这背后有一些目的,但我不知道。您可以尝试直接询问 gensim 团队的人员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多