Skip to main content
 首页 » 编程设计

python之将 Word2Vec 二进制模型从 S3 加载到 Gensim 失败

2025年05月04日15jiqing9006

我已将 Word2Vec 模型保存到二进制文件中。我正在尝试将其加载到改编自此 blog 的无服务器 API 中并使用 this作为基础。

这在本地运行良好:

self.model = KeyedVectors.load_word2vec_format('./models/models.bin', binary=True) 

但是当从 S3 调用文件时出现错误:

'IOError: [Errno 2] No such file or directory: '46659 100\n,|PUNCT \xec>\xd8>\xaf\xa8\x95'

def load_model(key): 
response = S3.get_object(Bucket=BUCKET_NAME, Key=key) 
model_str = response['Body'].read() 
 
model = KeyedVectors.load_word2vec_format(model_str, binary=True) 
return model 

请您参考如下方法:

一种更干净、更快的方法是通过 gensim.models.KeyedVectors.load() 和 使用的 smart_open 直接从 S3 加载模型>gensim.models.KeyedVectors.load_word2vec_format()。

AWS_ACCESS_KEY_ID = 'abc' 
AWS_SECRET_ACCESS_KEY = 'abc' 
url = 's3://' + AWS_ACCESS_KEY_ID + ":" + AWS_SECRET_ACCESS_KEY + "@bucket/file.model" 
wv = gensim.models.KeyedVectors.load(url) 

请参阅自述文件中有关 smart_open 的示例:https://github.com/RaRe-Technologies/smart_open