将gensim LDA模型保存到s3

时间:2020-05-06 15:22:45

标签: python amazon-s3 gensim

我已经通过使用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模型。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

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

例如

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中。