Как повысить скорость работы с помощью Stanford NLP Tagger и NLTK

Можно ли использовать Standford Tagger более эффектно?

Каждый вызов обертки NLTK запускает новый экземпляр java для проанализированной строки, который очень медленный, особенно когда используется более крупная модель иностранного языка...

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

Ответ 1

Нашел решение. Можно запустить POS Tagger в режиме сервлета, а затем подключиться к нему через HTTP. Совершенная.

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

Пример

запустить сервер в фоновом режиме

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 &

настроить брандмауэр для ограничения доступа к порту 2020 только с локального хоста

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

проверить его с помощью wget

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

сервер выключения

pkill -f stanford

восстановить параметры iptable

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