描述
链接到邮件列表中原始帖子的链接
在这里重述:
当在Doc2VecKeyedVectors模型上调用作为基类BasedKeyedVectors一部分的函数时(它们似乎将entity1和entity2用作它们的变量名),它会抛出一个KeyError,表示它无法识别doc标签。但是,在Doc2VecKeyedVectors类内的函数(如distance)上使用相同的doc标签,则返回预期的结果。
步骤/代码/语料库以重现问题
相关代码已在描述中链接,如果您更喜欢,请告诉我是否将其复制到这里。
预期结果
希望函数能够识别doc标签并执行相关的计算。
实际结果
抛出了一个KeyError。
Traceback (most recent call last):
File "C:/Users/cmiramontes/Documents/Projects/PyCharm/otb-ml-integration/Server/OTB_ML_Services.py", line 192, in <module>
main()
File "C:/Users/cmiramontes/Documents/Projects/PyCharm/otb-ml-integration/Server/OTB_ML_Services.py", line 188, in main
d2v.rank(sens, e1, e2)
File "C:\Users\cmiramontes\Documents\Projects\PyCharm\otb-ml-integration\Server\doc2vec_services.py", line 70, in rank
return model.docvecs.rank(entity1, entity2)
File "C:\Users\cmiramontes\Documents\Projects\PyCharm\otb-ml-integration\venv\lib\site-packages\gensim\models\keyedvectors.py", line 190, in rank
return len(self.closer_than(entity1, entity2)) + 1
File "C:\Users\cmiramontes\Documents\Projects\PyCharm\otb-ml-integration\venv\lib\site-packages\gensim\models\keyedvectors.py", line 183, in closer_than
e1_index = self.vocab[entity1].index
KeyError: '00359a92-f243-4b59-b998-33ad0d23b0cd'
3条答案
按热度按时间lsmepo6l1#
快速修复的方法是重写Doc2VecKeyedVectors中的一些额外方法以匹配其操作方式。但这种方法有点丑陋,因为超类初始化了空属性(词汇表、向量、索引到实体),然后这些属性被子类未使用,因为它使用了与其高度相似的(文档标签、向量文档、偏移量到文档标签) - 这里尝试统一相似类的努力最多只是完成了一半。对每个超类方法进行测试覆盖,但针对每个子类的示例,本可以捕获到这个问题。
xe55xuns2#
CC @manneshiva
ovfsdjhp3#
感谢cmiram的报告,我添加了一个示例来重现问题:
预期 :整数值
实际 :