Próbuję skonfigurować serwer lokalny w systemie Windows przy pomocy Stanford CoreNLP, aby obliczyć wyniki sentencji dla artykułów i tekstów wideo powyżej 1M. Nie znam Javy, więc potrzebuję pomocy.Jak skonfigurować serwer Stanford CoreNLP w systemie Windows, aby zwrócić sentyment do tekstu?
pomyślnie zainstalowany Stanford CoreNLP 3.6.0 i mam serwer działa z:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
Uruchomienie tego HTTP POST z innych moich prac komputerowych i uzyskać oczekiwaną odpowiedź (xxx.xxx.xxx .xxx to adres IP serwera):
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 -
Jednak odpowiedź nie zawiera sentymentów. Oczywistym rozwiązaniem byłoby, aby dodać Annotator:
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 -
Jednak po stronie serwera, otrzymuję ten błąd:
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)
Kolejnym oczywistym rozwiązaniem byłoby, aby dodać parametr do uruchamiania serwera , który działa:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -annotators "tokenize,ssplit,pos,lemma,parse,sentiment"
Uruchamianie tych samych postów http z wcześniej, daje dokładnie ten sam wynik i błąd, odpowiednio.
Czy robię coś nie tak, czy jest jakiś modyfikacja podstawowego kodu, który musi działać? Nie znam języka Java, więc nie mogę wprowadzić tych zmian.
Na marginesie, to podobna komenda uruchamia konsolę, i wydaje się załadować nastroje poprawnie:
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> _
Pobieranie wersji GitHub nie jest bardzo pomocne, ponieważ nie ma dokumentacji, jak z niej korzystać. Wskazują tylko dokumentację do pobrania na swojej stronie internetowej, która jest skonfigurowana inaczej. Jeszcze mi się nie udało. – Eric
Po prostu uruchom 'ant jar' i powinien utworzyć plik jar, którego możesz użyć zamiast oficjalnej wersji. –
To zadziałało dla mnie. (Uruchamianie 'ant' najpierw a następnie' ant jar'.) Zwróć uwagę, że wersja github nie ma wszystkich modeli, więc możesz je pobrać [tutaj] (http://nlp.stanford.edu/software/ stanford-english-corenlp-models-current.jar). Poza tym nie jestem zaznajomiony z Javą, więc miałem kłopot z ustaleniem polecenia uruchomienia pliku jar, który został utworzony przez mrówkę, oraz słoja modelu i słoiki w bibliotece 'lib'. W przypadku innych problemów, oto, co działało dla mnie: 'java -mx4g -cp" javanlp-core.jar: stanford-english-corenlmodels-current.jar: lib/* "edu.stanford.nlp.pipeline.StanfordCoreNLPServer' – Erin