将gensim LDA模型保存到s3

2024-06-26 00:11:40 发布

您现在位置:Python中文网/ 问答频道 /正文

通过使用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中的模型

有人能帮忙吗


Tags: 文件模型models3modelssavestatelda
1条回答
网友
1楼 · 发布于 2024-06-26 00:11:40

为什么不实现一个类,考虑组成模型的各个文件之间的逻辑关系,并将其视为一个类

例如

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包装器,它将压缩4个文件并将它们作为一个文件存储在S3中

相关问题 更多 >