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
будет разделять предложения и только на новых строках.
Другие потенциально полезные опции описаны на странице аннотатора анализатора.