RHS*_*Man 2 python amazon-s3 gensim serverless
我已将 Word2Vec 模型保存到二进制文件中。我正在尝试将其加载到改编自此博客的无服务器 API 中,并以此为基础。
这在本地工作正常:
self.model = KeyedVectors.load_word2vec_format('./models/models.bin', binary=True)
Run Code Online (Sandbox Code Playgroud)
但是当从 S3 调用文件时,它会出错:
'IOError: [Errno 2] 没有那个文件或目录:'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
Run Code Online (Sandbox Code Playgroud)
小智 6
一种更简洁、更快捷的方法是直接从 S3 加载模型,通过smart_open它被gensim.models.KeyedVectors.load()和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)
Run Code Online (Sandbox Code Playgroud)
请参阅smart_open自述文件中的示例:https : //github.com/RaRe-Technologies/smart_open