2016-09-20 2 views
0

Я нашел мощный RegexNER и это суперсет TokensRegex от Stanford CoreNLP.
Есть несколько правил, которые должны дать мне прекрасные результаты, как рисунок для лиц с названиями:
«г. Мехо Мехик» или «gdin. N. Neko» (g. И gdin. Являются аббревиатурами на боснийском языке для mr.).Стэнфордский CoreNLP слияния токенов

У меня возникли проблемы с существующим токенизатором. Он разбивает несколько строк на два токена, а некоторые листья - как один, например, токен «g». остается как слово <word>g.</word> и токен "gdin." разделяется на 2 жетона: <word>gdin</word> и <word>.</word>.

Это вызывает проблемы с моим регулярным выражением, мне приходится иметь дело с одним-токенов и мульти-токенов случаях (обратите внимание на два «может быть-точка» с), RegexNER пример:

(/g\.?|gdin\.?/ /\./? ([{ word:/[A-Z][a-z]*\.?/ }]+)) PERSON 

Кроме того, это вызывает другая проблема, с расщеплением предложения, некоторые предложения не хорошо распознаются, поэтому regex терпит неудачу ... Например, когда предложение содержит «gdin». он разделит его на два, так что точка закончится (несуществующим) предложением. Мне удалось обойти это с ssplit.isOneSentence = true.

Вопросы:

  1. Должен ли я сделать свой Tokenizer, и как? (для объединения некоторых токенов типа «gdin.»)
  2. Есть ли какие-либо настройки, которые я пропустил, что могло бы помочь мне в этом?

ответ

1

Хорошо, я подумал об этом немного и на самом деле может подумать о чем-то довольно прямолинейном для вашего дела. Единственное, что вы можете сделать, это добавить «gdin» в список названий в токенизаторе.

токенизатор правила в edu.stanford.nlp.process.PTBLexer.flex (смотрите в строке 741)

Я не очень понимаю Tokenizer, что хорошо, но явно есть список названий должностей в там, поэтому они должны быть случаи, когда он не отделяет период.

Это, конечно же, потребует от вас работы с пользовательской сборкой Stanford CoreNLP.

Вы можете получить полный код на нашем GitHub: https://github.com/stanfordnlp/CoreNLP

Есть инструкции на главной странице для создания баночки со всеми основных классами Stanford CoreNLP. Я думаю, что если вы просто запустите процесс ant, он автоматически сгенерирует новый PTBLexer.java на основе PTBLexer.flex.

+0

Спасибо, я подумал об этом сам вчера. Было бы неплохо, если бы токенизатор мог быть параметризован некоторыми из этих вещей ...: D –

+0

Я сделал itttttttt, спасибо еще раз! : D В 'build.xml' есть задача, называемая' flexeverything'. Мне просто нужно было заменить старую банку этой новой. –

+0

Также я не могу получить ответ на этот важный вопрос о corenlp. Http://stackoverflow.com/questions/39688652/german-corenlp-model-defaulting-to-english-models – stackit

Смежные вопросы