Есть ли слушатель в конвейере Stanford CoreNLP, проверяющий на прерывание? - PullRequest
1 голос
/ 04 февраля 2020

Я работаю над реализацией XQuery конвейера Stanford CoreNLP для eXist-db . eXist-db - база данных с открытым исходным кодом XML.

Я написал функциональный модуль для eXist, который написан на Java, который охватывает конвейер CoreNLP.

Вот пример вызова:

xquery version "3.1";

import module namespace nlp="http://exist-db.org/xquery/stanford-nlp";

let $text := "The fate of Lehman Brothers, the beleaguered investment bank, " ||
             "hung in the balance on Sunday as Federal Reserve officials and " ||
             "the leaders of major financial institutions continued to gather in " ||
             "emergency meetings trying to complete a plan to rescue the stricken " ||
             "bank.  Several possible plans emerged from the talks, held at the " ||
             "Federal Reserve Bank of New York and led by Timothy R. Geithner, " ||
             "the president of the New York Fed, and Treasury Secretary Henry M. Paulson Jr."

let $properties := map { 
                     "annotators" : "tokenize, ssplit, pos, lemma, ner, depparse, coref",
                     "tokenize.language" : "en" 
                   }

return nlp:parse($text, $properties)

Функция должна иметь возможность отвечать на вызов, чтобы убить текущий запрос. Вызов: system:kill-running-xquery()

Есть ли в StanfordCoreNLP функция прослушивания или функция обратного вызова, которая позволит чисто завершить конвейер?

1 Ответ

1 голос
/ 08 февраля 2020

Если вы используете сервер Stanford CoreNLP, вы можете отправить команду выключения. В коде Java вы можете создать конвейер, который фактически поддерживается сервером.

// creates a StanfordCoreNLP object with POS tagging, lemmatization, NER, parsing, and coreference resolution
Properties props = new Properties();
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLPClient pipeline = new StanfordCoreNLPClient(props, "http://localhost", 9000, 2);
// read some text in the text variable
String text = ... // Add your text here!
// create an empty Annotation just with the given text
Annotation document = new Annotation(text);
// run all Annotators on this text
pipeline.annotate(document);
pipeline.shutdown();

Дополнительная информация здесь: https://stanfordnlp.github.io/CoreNLP/corenlp-server.html

Класс конвейера StanfordCoreNLP (в отличие от StanfordCoreNLPClient) не может отключиться таким образом.

...