我如何仍然在 Python 中使用这个可能已弃用?包/模块的 'wv' 属性?

问题描述

我是 Gensim 软件包的新手,我正在努力熟悉它。我现在正在尝试导入一个现有的、训练有素的模型。我完全遵循 this video 中的示例(本节从 5:30 开始)。当我运行该视频中的代码时,出现错误

代码

from gensim.models import Word2Vec,KeyedVectors
import pandas as pd
import nltk

model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz',binary=True,limit=100000)

model.wv.most_similar('man')

错误

Traceback (most recent call last):
  File "C:....",line 7,in <module>
    model.wv.most_similar('man')
AttributeError: 'KeyedVectors' object has no attribute 'wv'

在前面的例子中,我在训练自己的模型时也遇到了类似的问题(即带有 size 参数的名称,结果改为 vector_size,因为包是已弃用,我读过)。这可能只是最近才发生的,因为在 YouTube 视频的评论中,我还没有读到这些问题。而关于重命名size 参数的修复也来自仅 2 周前的 a post here on stackoverflow

有谁知道我如何仍然可以使用此 wv 属性,以便我可以继续视频中的示例?

解决方法

用户~BoobyTrap 的评论是正确的。您的 KeyedVectors 实例已经支持 .most_similar()。无需请求其 .wv 属性。你应该这样做:

model.wv.most_similar('man')

正如您在视频中看到的那样,当它准备好时,已经有一个弃用警告,即 .wv 将消失。 (因此,该视频的创建者当时本可以将其排除在外 - 没有必要,它已经生成了一条警告消息,它很快就会中断,并且使用它表明对各种对象类型的角色的理解不完整。 )

现在唯一具有 .wv 属性的对象是那些包含成分 KeyedVectors 的对象,例如完整的 Word2Vec 模型。也就是说,当你有一个有很多额外状态的对象,但它有一组词向量作为它的重要部分之一时,它们很可能会在该对象的 .wv 属性中找到。