Обнаружение упоминания сущностей не работает должным образом с TokensRegex - PullRequest
0 голосов
/ 11 января 2019

Entitymention, похоже, не работает. Я следовал подобному подходу, упомянутому здесь, добавив entitymentions как один из annotators

Как я могу обнаружить именованные объекты, которые имеют более 1 слова, используя RegexNER от CoreNLP?

Ввод: «Вот ваши 24 доллара»

У меня есть TokensRegex:

{ ruleType: "tokens", pattern: ([{ner:"NUMBER"}] + [{word:"USD"}]), action: Annotate($0, ner, "NEW_MONEY"), result: "NEW_MONEY_RESULT" }

Инициативный конвейер:

props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,tokensregex,entitymentions");
props.setProperty("tokensregex.rules", "basic_ner.rules");

Я все еще получил 2 CoreEntityMention вместо 1.

Оба они имеют одинаковое значение для edu.stanford.nlp.ling.CoreAnnotations$NamedEntityTagAnnotation, равное NEW_MONEY

но у них разные edu.stanford.nlp.ling.CoreAnnotations$EntityMentionIndexAnnotation

, что 0 для 24

1 для USD

Как их можно объединить, так как они имеют одинаковую аннотацию тега сущности.

3.9.2 используется версия библиотеки Стэнфорда.

1 Ответ

0 голосов
/ 12 января 2019

Проблема в том, что числа имеют нормализованный тег сущности имени.

Вот файл правил, который будет работать:

# these Java classes will be used by the rules
ner = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NamedEntityTagAnnotation" }
normNER = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NormalizedNamedEntityTagAnnotation" }
tokens = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$TokensAnnotation" }

# rule for recognizing company names
{ ruleType: "tokens", pattern: ([{ner:"NUMBER"}] [{word:"USD"}]), action: (Annotate($0, ner, "NEW_MONEY"), Annotate($0, normNER, "NEW_MONEY")), result: "NEW_MONEY" }

Не следует добавлять дополнительный tokensregex аннотатор и entitymentions аннотатор в конце. ner аннотатор будет запускать их как субаннотаторы.

Вот пример команды:

java -Xmx10g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner -ner.additional.tokensregex.rules new_money.rules -file new_money_example.txt -outputFormat text

Больше документации здесь:

https://stanfordnlp.github.io/CoreNLP/tokensregex.html

https://stanfordnlp.github.io/CoreNLP/ner.html

...