2016-04-20 2 views
0

Я пытаюсь запустить pycorenlp на длинный текст. Во избежание получения сообщения об ошибке CoreNLP request timed out. Your document may be too long, я увеличил Stanford CoreNLP, указав таймаут.Когда тайм-аут более 10 000 в pycorenlp, я получаю «java.net.UnknownHostException: server: server: unknown error» в Linux (отлично работает на OS X). Зачем?

Вот код, я использую (это упрощенная версия pycorenlp-х example.py):

from pycorenlp import StanfordCoreNLP 

if __name__ == '__main__': 
    nlp = StanfordCoreNLP('http://localhost:9000') 
    text = (
     'Pusheen and Smitha walked along the beach. Pusheen wanted to surf,' 
     'but fell off the surfboard.') 
    output = nlp.annotate(text, properties={ 
     'timeout': '10001' # Setting the timeout to 10000 or below "fixes" the issue. 
     'annotators': 'tokenize,ssplit,pos,depparse,parse', 
     'outputFormat': 'json' 
    }) 
    print(output) 

Он выводит server: unknown error. Журнал сервера содержит:

java.net.UnknownHostException: server: server: unknown error 
    at java.net.InetAddress.getLocalHost(InetAddress.java:1505) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLPServer$CoreNLPHandler.handle(StanfordCoreNLPServer.java:393) 
    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:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.net.UnknownHostException: server: unknown error 
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) 
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) 
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) 
    at java.net.InetAddress.getLocalHost(InetAddress.java:1500) 
    ... 10 more 

Stanford Ядро NLP Сервер был запущен с помощью:

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

Я не хочу, чтобы сегментировать текст на небольшие тексты.

Есть ли способ установить тайм-аут выше 10000? (то есть более 10 секунд)

Он отлично работает в Mac OS X 10.10 (версия java «1.8.0_60»): проблема возникает в Ubuntu 14.04 (версия java «1.8.0_77»). Оба имеют Python 2.7 pycorenlp 0.2.0 и Stanford CoreNLP версии 3.6.0.

ответ

0

Чтобы быть понятным, вы не видите эту проблему, если вы запускаете сервер на Macbook?

Тогда это, похоже, проблема с машиной, на которой запущен сервер. Код сервера пытается позвонить:

InetAddress.getLocalHost().getHostName() 

и получить исключение.

Вот нить, я нашел место, где кто-то был подобный вопрос:

InetAddress.getLocalHost() throws UnknownHostException

Что в файле/и т.д./хост файл на компьютере, где вы пытаетесь запустить сервер?