小编cjr*_*eds的帖子

Gensim保存的字典没有id2token

我已将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)

有什么想法吗?

python nlp gensim

12
推荐指数
1
解决办法
4445
查看次数

知道是否在对象上调用了+或__add__

在Python中,我可以重载对象的__add__方法(或其他双下划线又名"dunder"方法).这允许我在使用Python运算符时为我的对象定义自定义行为.

是否可以从dunder方法中了解该方法是通过+还是通过__add__

例如,假设我想创建一个打印的对象,"+"或者"__add__"取决于是否+使用或是否__add__直接调用.

class MyAdder(object):
    def __add__(self, other):
        print method_how_created()
        return 0


MyAdder() + 7
# prints "+", returns 0

MyAdder().__add__(7)
# prints "__add__", returns 0
Run Code Online (Sandbox Code Playgroud)

除非有一些神奇的存在method_how_created,是否有符号与dunder方法的规范映射?我知道有一些列表,例如http://www.python-course.eu/python3_magic_methods.php或基于解析operator模块文档字符串的解决方案,如下所述:按符号访问运算符函数.有没有办法在函数名和符号之间找到一个比解析文档字符串或手动创建列表更少hacky的映射?

python

7
推荐指数
1
解决办法
153
查看次数

标签 统计

python ×2

gensim ×1

nlp ×1