2017-07-11 28 views
1

如何在TextBlob中稍后更新模型结果?

的文档可以参考这里https://github.com/sloria/TextBlob如何为Python TextBlob保存模型?

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

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

尤其我指的是文本分类。我确实觉得自己在这个特定的主题中很愚蠢,因为我总是很难知道这些培训课程在任何AI示例中都持续存在。

你不想再次运行整个事情吗?你想从你离开的地方开始,并不断改进它。

我想这样做:

  1. 如果过去的训练成果存在,它们加载到模型
  2. 更新或在以后的时间运行新的训练
  3. 保存训练
  4. 重复根据需要
+1

我不知道答案,但在tensorflow中有:'tf.train.Saver.restore()',它恢复了以前保存的变量。 – user1767754

+0

Yah,我几乎想要使用它,但是这个库很容易。 –

回答

1

该模型和培训可以坚持使用酸洗取出

>>> 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] 
+1

谢谢@DhruvPathak!你的代表是有保证的。 –

+0

你认为这个图书馆足够分类超过2个分类吗? –

+0

@JasonSebring它使用NaiveBayes,所以如果你想使用NaiveBayes分类器,它对任何数量的标签都是足够的。用于其他分类器,包括NaiveBayes。或者更好地控制文本的处理方式,会推荐scikit-learn。 – DhruvPathak