Gensim 无法加载 word2vec 模型

Gensim unable to load word2vec models

我在本地机器上使用 gensim 训练了一个 word2vec 模型,并将所有文件上传到 AWS。我可以在我的本地机器上加载模型,但在 AWS 上加载会得到

FileNotFoundError: [Errno 2] No such file or directory: 's3://saltsagemaker/models/bilstm_models/word2vec/word2vec_model.wv.vectors.npy'

这个有效

# LOCAL MACHINE
from gensim.models import Phrases, Word2Vec
WV_MODEL = 'model_train_script/models/bilstm_models/word2vec/word2vec_model'
wv_model = Word2Vec.load(WV_MODEL)

这不起作用

# AWS CODE
from gensim.models import Phrases, Word2Vec
WV_MODEL = 's3://saltsagemaker/models/bilstm_models/word2vec/word2vec_model'
wv_model = Word2Vec.load(WV_MODEL)

以上代码给出以下内容

FileNotFoundError: [Errno 2] No such file or directory: 's3://saltsagemaker/models/bilstm_models/word2vec/word2vec_model.wv.vectors.npy'

上传到本地机器的文件

上传到 AWS 的文件

Gensim 依赖于加载附属文件的 numpy 代码(如您的 word2vec_model.wv.vectors.npy)不支持 's3://saltsagemaker/models/bilstm_models/word2vec/word2vec_model.wv.vectors.npy' 等远程 S3 路径。因此,它将其解释为就好像它是本地路径一样 – 并且什么也找不到。

你可以:

  • 在使用前手动下载文件到本地临时文件 space;或
  • 完全避免使用 Gensim 对象的自定义 .save().load() 方法,而是使用 Python 的 pickle 功能将模型对象写入单个文件,然后在该单个文件上使用 unpickle 从单个 S3 路径
  • 读回