我刚刚对43K文件进行了文本预处理(停止单词删除/标记化等)。在python中,结果是已处理的文本文档(字符串)列表。现在我要将这些处理过的字符串转换为单词特征向量。
我需要帮助两件事。
1)。我的系统花了45分钟来预处理这些43K文档文本。如果我稍后重启系统,我不想再做同样的事情。如何保存那些预处理字符串列表?我应该简单地将它保存到txt文件还是应该使用pickle或json?就更快地读入存储器而没有问题而言,这是更优选的。我想对一个单词矩阵(numpy矩阵)做同样的事情。
2)。我将在稍后运行LDA或k意味着聚集在这些单词矩阵上。坚持我的模型的最佳解决方案是什么,以便我不必再次重新运行模型?酸洗?
在这两种情况下,有人会建议正确的语法来腌制吗?如果酸洗是解决方案,可以回读吗?
答案 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")
我不知道你的模型会是什么样子,所以我在这个例子中使用了一个简单的权重向量。只需存储您想要的任何对象。