如何保存Python字符串列表以供将来使用

时间:2015-10-01 23:44:10

标签: python numpy

我刚刚对43K文件进行了文本预处理(停止单词删除/标记化等)。在python中,结果是已处理的文本文档(字符串)列表。现在我要将这些处理过的字符串转换为单词特征向量。

我需要帮助两件事。

1)。我的系统花了45分钟来预处理这些43K文档文本。如果我稍后重启系统,我不想再做同样的事情。如何保存那些预处理字符串列表?我应该简单地将它保存到txt文件还是应该使用pickle或json?就更快地读入存储器而没有问题而言,这是更优选的。我想对一个单词矩阵(numpy矩阵)做同样的事情。

2)。我将在稍后运行LDA或k意味着聚集在这些单词矩阵上。坚持我的模型的最佳解决方案是什么,以便我不必再次重新运行模型?酸洗?

在这两种情况下,有人会建议正确的语法来腌制吗?如果酸洗是解决方案,可以回读吗?

2 个答案:

答案 0 :(得分:4)

我使用sklearn joblib,它比使用cPickle和gzip的其他答案更快(170ms vs 430ms for my test)。代码简单而酷。 :)

使用joblib.load保存, 和from sklearn.externals import joblib joblib.dump(clf, 'filename.pkl') clf = joblib.load('filename.pkl') 阅读

file://

详情请见:http://scikit-learn.org/stable/modules/model_persistence.html

答案 1 :(得分:2)

我舔它,优点是你可以将列表存储为对象。但是很难预测文件会有多大。

我也会对模特做同样的事情。

使用这些功能进行保存和加载:

import cPickle
import gzip

def load(file_name):
    # load the model
    stream = gzip.open(file_name, "rb")
    model = cPickle.load(stream)
    stream.close()
    return model


def save(file_name, model):
    # save the model
    stream = gzip.open(file_name, "wb")
    cPickle.dump(model, stream)
    stream.close()

然后只是做某事。像:

model = [0.5, 0.1, 0.3, -0.2, 1.5]
save("/path/to/model_1", model]
model = load("/path/to/model_1")

我不知道你的模型会是什么样子,所以我在这个例子中使用了一个简单的权重向量。只需存储您想要的任何对象。