将 gensim LDA 模型保存到 s3

Save a gensim LDA model to s3

我通过使用gensim得到了一个LDA模型。我可以保存在本地:

ldamodel.save('models/lda/lda.model')

这会在指定位置生成四个文件:

lda.model
lda.model.expElogbeta.npy
lda.model.id2word
lda.model.state

加载它们就像

一样简单
ldamodel =  models.LdaModel.load('models/lda/lda.model')

但是,我希望将此模型保存在 s3 上。我可以弄清楚如何保存单个位,例如:

s3.meta.client.upload_file('models/lda/lda.model', 'bucket-name', 'lda.model')

但我无法弄清楚如何真正有意义地读回它们,以便它们能够像预期的那样作为一个连贯的模型发挥作用。所以我的想法是除了我之外的其他人可以从 s3 中获取文件并将它们用作 Python 中的模型。

有人可以帮忙吗?

你为什么不实现一个 class 来考虑组成模型的单独文件的逻辑关系并将其视为一个文件?

例如

class LdaModel:
   def __init__(self, lda_local_path, s3bucket_name, s3bucket_obj_prefix):
       self.local_path = lda_local_path
       self.s3bucket = s3bucket_name
       self.s3bucket_obj_pre = s3bucket_obj_prefix

    def upload(self):
        for fl in os.listdir(self.local_path):
            fl_local = os.path.join(self.local_path, fl)
            s3.meta.client.upload_file(fl_local, self.s3bucket, self.s3bucket_obj_pre + '__' + fl_local)

    def download(self): 
        ...

(我省略了download方法让你类比upload实现)。

另一种方法是实现一个 zip-wrapper,它将压缩 4 个文件并将它们作为一个文件存储在 S3 中。