【问题标题】:How to persist model for Python TextBlob?如何为 Python TextBlob 持久化模型?
【发布时间】:2017-07-11 14:35:42
【问题描述】:

如何在 TextBlob 中保存模型结果以供以后更新?

文档参考可以在这里找到https://github.com/sloria/TextBlob

我注意到文档指定了如何更新训练数据,但我没有看到保存上次会话数据的方法或方式。

如何更新: https://textblob.readthedocs.io/en/dev/classifiers.html#updating-classifiers-with-new-data

我特别指的是对文本进行分类。我确实觉得我在这个特定的话题上很愚蠢,因为我总是很难知道这些训练课程在任何 AI 示例中持续存在的位置。

你不想再次运行整个事情对吧?您想从中断的地方开始并不断迭代改进。

我想这样做:

  1. 如果过去的训练结果存在,将它们加载到模型中
  2. 更新或运行新的培训课程
  3. 保存培训课程
  4. 稍后根据需要重复

【问题讨论】:

  • 我不知道答案,但在 tensorflow 中有:tf.train.Saver.restore() 恢复以前保存的变量。
  • 是的,我几乎想用它,但这个库很简单。

标签: python textblob


【解决方案1】:

可以使用 picklingunpickling 来保持模型和训练。

>>> from textblob.classifiers import NaiveBayesClassifier
>>> train = [('love the weather','pos'),('love the world','pos'),('horrible place','neg')]
>>> cl = NaiveBayesClassifier(train)
>>> [cl.prob_classify("love food").prob('pos'),cl.prob_classify("love food").prob('neg')]
[0.8590880780051973, 0.14091192199480246]
>>> import cPickle
>>> save_training = open('/tmp/save_training.pickle','wb')
>>> cPickle.dump(cl,save_training)  # SAVE TRAINED CLASSIFIER
>>> save_training.close()
>>> 
>>> load_training = open('/tmp/save_training.pickle','rb')
>>> new_cl = cPickle.load(load_training) # LOAD TRAINED CLASSIFIER
>>> [new_cl.prob_classify("love food").prob('pos'),new_cl.prob_classify("love food").prob('neg')]
[0.8590880780051973, 0.14091192199480246]

【讨论】:

  • 感谢@DhruvPathak!您的代表是有保证的。
  • 你认为这个库是否足以进行超过 2 个分类的分类?
  • @JasonSebring 它使用的是 NaiveBayes,所以如果你想使用 NaiveBayes 分类器,它对于任意数量的标签都足够了。对于其他分类器,包括 NaiveBayes。或更好地控制文本的处理方式,建议使用 scikit-learn。
  • 是的,我在 scikit 上也试过了,但内存一直在杀死我的机器 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 2016-11-19
  • 1970-01-01
  • 2010-10-09
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多