Java, StanfordNLP Parser: Как остановить маркировку угловых скобок как разметку / маркировать угловые скобки как пунктуацию? - PullRequest
0 голосов
/ 20 августа 2011

Я анализирую набор данных, в котором люди используют угловые скобки просто как знаки пунктуации, и никогда (никогда) не происходит фактическая разметка.

Есть ли способ изменить функциональность парсера таким образом, чтобы вместо вызова

"<snickers in background>" 

одного токена, мы могли бы получить

"<", "snickers", etc? 

Это выглядит как довольноПростая проблема, но я не смог найти простое исправление в документах или в просмотре кода.

Заранее спасибо!

PS Есть ли другие персонажи, которые ведут себя таким образом, о которых мне следует знать?

1 Ответ

0 голосов
/ 20 августа 2011

Нет, не существует простого способа сделать это.Есть несколько опций для настройки обработки кавычек, тире и экранирования скобок в токенизаторе, но в целом токенизатор имеет много эвристических правил, большинство из которых нельзя изменить в командной строке.

У вас есть две основные опции:

  • Напишите свою собственную реализацию Tokenizer и TokenizerFactory, а затем попросите ее использовать вместо PTBTokenizer по умолчанию, запрашивая ее с помощью команды-line флаг -tokenizerFactory
  • Токенизировать ввод перед синтаксическим анализом, а затем присвоить флаг -tokenized

Конечно, если обычные токены не токенизированыКак и ожидалось в соответствии с конвенциями Penn Treebank, точность разбора, как правило, пострадает.

...