www with stopwords spanish pos part org ner corpora book python nltk

with - part of speech python



Cómo entrenar incrementalmente un clasificador nltk (3)

Como dijo Jacob, el segundo método es el correcto. Y, con suerte, alguien escriba un código.

Mira

https://baali.wordpress.com/2012/01/25/incrementally-training-nltk-classifier/

Estoy trabajando en un proyecto para clasificar fragmentos de texto usando el módulo nltk de python y el clasificador de naivebayes. Soy capaz de entrenarme en datos de corpus y clasificar otro conjunto de datos, pero me gustaría ingresar información de entrenamiento adicional al clasificador después del entrenamiento inicial.

Si no me equivoco, no parece haber una manera de hacer esto, ya que el método NaiveBayesClassifier.train toma un conjunto completo de datos de entrenamiento. ¿Hay alguna manera de agregar datos de entrenamiento sin incluir el conjunto de características original?

Estoy abierto a sugerencias, incluidos otros clasificadores que pueden aceptar nuevos datos de capacitación a lo largo del tiempo.


Estoy aprendiendo NLTK, así que corríjame si me equivoco. Esto está utilizando la rama Python 3 de NLTK, que podría ser incompatible.

Hay un método update() para la instancia de NaiveBayesClassifier , que parece agregarse a los datos de entrenamiento:

from textblob.classifiers import NaiveBayesClassifier train = [ (''training test totally tubular'', ''t''), ] cl = NaiveBayesClassifier(train) cl.update([(''super speeding special sport'', ''s'')]) print(''t'', cl.classify(''tubular test'')) print(''s'', cl.classify(''super special''))

Esto imprime:

t t s s


Hay 2 opciones que conozco:

1) Volver a entrenar periódicamente el clasificador en los nuevos datos. Usted acumularía nuevos datos de entrenamiento en un corpus (que ya contiene los datos de entrenamiento originales), y luego, cada pocas horas, volver a entrenar y recargar el clasificador. Esta es probablemente la solución más simple.

2) Externalice el modelo interno, luego actualícelo manualmente. El NaiveBayesClassifier se puede crear directamente dándole un label_prodist y un feature_probdist . Puede crearlos por separado, pasarlos a un NaiveBayesClassifier y luego actualizarlos cada vez que NaiveBayesClassifier nuevos datos. El clasificador usará estos nuevos datos inmediatamente. Tendría que mirar el método del train para obtener detalles sobre cómo actualizar las distribuciones de probabilidad.