Как улучшить скорость с Stanford NLP Tagger и NLTK

Есть ли способ использовать Standford Tagger более производительным способом?

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

http://www.nltk.org/api/nltk.tag.html

2 ответа

Решение

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

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

пример

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

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

С помощью nltk.tag.stanford.POSTagger.tag_sents() for tagging multiple sentences.

tag_sents has replaced the old batch_tag function, see https://github.com/nltk/nltk/blob/develop/nltk/tag/stanford.py


DEPRECATED:

Tag the sentences using batch_tag вместо tag, see http://www.nltk.org/_modules/nltk/tag/stanford.html

Другие вопросы по тегам