CoreNLP API эквивалентно командной строке?

Для одного из наших проектов мы в настоящее время используем компонент синтаксического анализа с командной строкой. Мы хотим перейти от этого подхода к использованию сервера corenlp (для повышения производительности).

Наши параметры командной строки следующие:

java -mx4g -cp "$scriptdir/*:" edu.stanford.nlp.parser.lexparser.LexicalizedParser -tokenized -escaper edu.stanford.nlp.process.PTBEscapingProcessor  -sentences newline -tokenized -tagSeparator / -tokenizerFactory edu.stanford.nlp.process.WhitespaceTokenizer -tokenizerMethod newCoreLabelTokenizerFactory  -outputFormat "wordsAndTags,typedDependenciesCollapsed"

Я попробовал несколько вещей, но мне не удалось найти подходящие опции при использовании corenlp API (с Python).

Например, как указать, что текст уже токенизирован?

Я был бы очень признателен за любую помощь.

1 ответ

В целом, сервер вызывает CoreNLP, а не отдельные компоненты NLP, поэтому документация по CoreNLP может оказаться полезной. Тело аннотируемого текста отправляется на сервер как тело POST; свойства передаются как параметры URL. Например, для вашего случая я считаю, что следующая команда curl должна помочь (и ее легко адаптировать к выбранному вами языку):

curl -X POST -d "it's split on whitespace" \
  'http://localhost:9000/?annotators=tokenize,ssplit,pos,parse&tokenize.whitespace=true&ssplit.eolonly=true'

Обратите внимание, что мы просто передаем следующие свойства на сервер:

  • annotators = tokenize,ssplit,pos,parse (указывает, что нам нужен парсер, и все его предпосылки).
  • tokenize.whitespace = true вызовет токенизатор
  • ssplit.eolonly = true будет разделять предложения и только на новых строках.

Другие потенциально полезные опции описаны на странице аннотатора анализатора.

Другие вопросы по тегам