Cómo mejorar la velocidad con Stanford NLP Tagger y NLTK

¿Hay alguna manera de usar el Standford Tagger de una manera más eficaz?

Cada llamada al envoltorio de NLTK inicia una nueva instancia de java por cadena analizada que es muy lenta, especialmente cuando se usa un modelo de idioma extranjero más grande …

http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford

Encontré la solución. Es posible ejecutar el POS Tagger en modo servlet y luego conectarlo a través de HTTP. Perfecto.

http://nlp.stanford.edu/software/pos-tagger-faq.shtml#d

ejemplo

iniciar servidor en segundo plano

nohup java -mx1000m -cp /var/stanford-postagger-full-2014-01-04/stanford-postagger.jar edu.stanford.nlp.tagger.maxent.MaxentTaggerServer -model /var/stanford-postagger-full-2014-01-04/models/german-dewac.tagger -port 2020 >& /dev/null & 

ajuste el firewall para limitar el acceso al puerto 2020 solo desde localhost

 iptables -A INPUT -p tcp -s localhost --dport 2020 -j ACCEPT iptables -A INPUT -p tcp --dport 2020 -j DROP 

probarlo con wget

 wget http://localhost:2020/?die welt ist schön 

servidor de apagado

 pkill -f stanford 

restaurar la configuración de iptable

 iptables -D INPUT -p tcp -s localhost --dport 2020 -j ACCEPT iptables -D INPUT -p tcp --dport 2020 -j DROP 

Usando nltk.tag.stanford.POSTagger.tag_sents() para etiquetar múltiples oraciones.

Los tag_sents han reemplazado la antigua función batch_tag , consulte https://github.com/nltk/nltk/blob/develop/nltk/tag/stanford.py#L61


OBSOLETO:

batch_tag las oraciones utilizando batch_tag lugar de tag , consulte http://www.nltk.org/_modules/nltk/tag/stanford.html#StanfordTagger.batch_tag