Как я могу восстановить время ожидания CoreNLP и продолжить обработку запросов? - PullRequest
0 голосов
/ 18 мая 2018

Я запустил свой сервер Standford NLP (CoreNLP v 3.91 , stanford-corenlp-full-2018-02-27.zip) в Ubuntu 16.04 с помощью этой команды:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000

И через некоторое время, если я добавлю в него слишком большое предложение, оно взорвется.

java.util.concurrent.TimeoutException
        at java.util.concurrent.FutureTask.get(FutureTask.java:205)
        at edu.stanford.nlp.pipeline.StanfordCoreNLPServer$CoreNLPHandler.handle (StanfordCoreNLPServer.java:866)

[pool-1-thread-6] INFO CoreNLP - [/127.0.0.1:34048] API call w/annotators tokenize,ssplit,pos,parse,depparse
But if you ask any feminist directly (and I have, one of my best friends is a woman's studies major and we have had MANY heated passionate arguments; i've spoken to her friends too), they will fully say that modern feminism is about having the choice, and while they completely disagree with women who take this choice, it is still their choice to make.
java.util.concurrent.TimeoutException
        at java.util.concurrent.FutureTask.get(FutureTask.java:205)
        at edu.stanford.nlp.pipeline.StanfordCoreNLPServer$CoreNLPHandler.handle(StanfordCoreNLPServer.java:866)
        at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
        at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
        at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
        at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
        at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
        at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
[Thread-0] INFO CoreNLP - CoreNLP Server is shutting down.

К сожалению, это убивает мой сервер.Мой скрипт Python перехватывает исключение, вызванное тайм-аутом сервера, но как я могу его пропустить и продолжить использовать сервер.В настоящее время я использую eval() для перезапуска сервера с помощью вышеуказанной команды.

Есть ли лучший способ пропустить эти сбои?

РЕДАКТИРОВАТЬ: Вот пример, где CoreNLP v 3.91 дает сбой, когда я выбрасываю слишком большое предложение: Timeout Exception Обратите внимание, что очень длинное предложение вызовет исключение тайм-аута и приведет к сбою сервера.

1 Ответ

0 голосов
/ 22 мая 2018

Вы должны попробовать получить последний код.Когда я отправляю очень длинное предложение на сервер, я получаю исключение тайм-аута, но оно не приводит к сбою сервера.

Последний код можно найти на GitHub: https://github.com/stanfordnlp/CoreNLP Последний стабильный выпуск (3.9.1) здесь: https://stanfordnlp.github.io/CoreNLP/

Вы также можете попробовать установить "parse.maxlen = 100" (или что-то меньшее), чтобы запретить аннотировать действительно длинные предложения.У других аннотаторов есть варианты не обрабатывать очень длинные предложения, что обычно является основной причиной.

...