我已将 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
