¿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