2016-02-09 5 views
5

Я пытаюсь настроить локальный сервер в Windows со Stanford CoreNLP, чтобы рассчитать оценки настроений для более 1 млн статей и видеотекстов. Я не знаю Java, поэтому мне нужна помощь.Как настроить сервер Stanford CoreNLP на Windows, чтобы вернуть настроение для текста

я успешно установил Stanford CoreNLP 3.6.0, и у меня есть сервер работает с:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer 

Запуск этого HTTP POST от других моих компьютерных работ, и я получаю ожидаемый ответ (xxx.xxx.xxx .xxx - это IP-адрес сервера):

wget --post-data 'the quick brown fox jumped over the lazy dog' 'xxx.xxx.xxx.xxx:9000/?properties={"tokenize.whitespace": "true", "annotators": "tokenize,ssplit,pos,lemma,parse", "outputFormat": "json"}' -O - 

Однако ответ не содержит настроений. Очевидным решением было бы добавить аннотатор:

wget --post-data 'the quick brown fox jumped over the lazy dog' 'xxx.xxx.xxx.xxx:9000/?properties={"tokenize.whitespace": "true", "annotators": "tokenize,ssplit,pos,lemma,parse,sentiment", "outputFormat": "json"}' -O - 

Однако на стороне сервера, я получаю эту ошибку:

java.lang.IllegalArgumentException: Unknown annotator: sentiment 
at edu.stanford.nlp.pipeline.StanfordCoreNLP.ensurePrerequisiteAnnotators(StanfordCoreNLP.java:281) 
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer$CoreNLPHandler.getProperties(StanfordCoreNLPServer.java:476) 
at edu.stanford.nlp.pipeline.StanfordCoreNLP$CoreNLPHandler.handle(StanfordCoreNLPServer.java:350) 
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
at sun.net.httpserver.AuthFilter.doFilter(Unknown Source) 
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(Unknown Source) 
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
at sun.net.httpserver.ServerImpl$Exchange.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.thread.run(Unknown Source) 

Следующим очевидным решением было бы добавить параметр для запуска сервера , который работает:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -annotators "tokenize,ssplit,pos,lemma,parse,sentiment" 

Выполнение тех же сообщений HTTP, что и раньше, дает одинаковые точные результаты и ошибки соответственно.

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

В качестве примечания, эта подобная команда запускает консоль, и, кажется, правильно нагрузить настроение:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators "tokenize,ssplit,pos,lemma,parse,sentiment" 

[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator tokenize 
[main] INFO edu.stanford.nlp.pipeline.TokenizerAnnotator - TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer. 
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator ssplit 
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator pos 
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [0.5 sec]. 
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator lemma 
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator parse 
[main] INFO edu.stanford.nlp.parser.common.ParserGrammar - Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [0.4 sec]. 
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator sentiment 

Entering interactive shell. Type q RETURN or EOF to quit. 
NLP> _ 

ответ

5

Попробуйте запустить с GitHub version кодом. Ваше первое решение правильно - тот факт, что он не мог найти настроение аннотаторов это ошибка в коде:

wget --post-data 'the quick brown fox jumped over the lazy dog' 'xxx.xxx.xxx.xxx:9000/?properties={"annotators": "tokenize,ssplit,pos,lemma,parse,sentiment", "outputFormat": "json"}' -O - 

(Побочное примечание: tokenize.whitespace свойства в документации, чтобы показать, что вы можете передать произвольные свойства, но я рекомендую не использовать его в производстве).

+0

Загрузка версии GitHub не очень полезна, так как нет документации по ее использованию. Они просто указывают на документацию для загрузки на их веб-сайте, которая настроена по-разному. Я еще не добился успеха. – Eric

+0

Просто запустите 'ant jar', и он должен сделать файл jar, который вы можете использовать вместо официального релиза. –

+0

Это сработало для меня. (Запуск 'ant' сначала, а затем' ant jar'.) Обратите внимание, что версия github не имеет всех моделей, поэтому вам может потребоваться загрузить их [здесь] (http://nlp.stanford.edu/software/ Стэнфорд-английский-corenlp-модель-current.jar). Кроме того, я не очень хорошо знаком с java, поэтому мне не удалось выяснить, какую команду запустить, чтобы включить файл jar, который сделал муравей, и модельную банку и банки в 'lib'. В случае, если у других есть проблемы, вот что сработало для меня: 'java -mx4g -cp" javanlp-core.jar: stanford-english-corenlmodels-current.jar: lib/* "edu.stanford.nlp.pipeline.StanfordCoreNLPServer' – Erin