Стэнфордский НЛП регулярных выражений на леммах - PullRequest
0 голосов
/ 21 января 2019

Я экспериментировал с аннотатором NER из Stanford regex и TokensRegex. Это прекрасно работает, мне просто интересно, можно ли сопоставлять регулярные выражения по леммам вместо слов?

Например, я создаю стандартный tsv-файл регулярных выражений:

plane   TRANSPORT
car     TRANSPORT
...

Могу ли я создать правило TokensRegex с помощью этой логики: if current token has lemma which has a match in TRANSPORT class, mark it as TRANSPORT.

Цель также пометить planes, cars и т. Д. Как ТРАНСПОРТ без необходимости указывать все эти вариации в файле tsv.

1 Ответ

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

команда

java -Xmx4g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner -ner.additional.tokensregex.rules basic-ner.rules -file lemma-example.txt -outputFormat text

basic-ner.rules

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

$TRANSPORT_TYPES = "/car|plane/"

# rule for recognizing transport
{ ruleType: "tokens", pattern: ([{lemma:$TRANSPORT_TYPES}]), action: Annotate($0, ner, "TRANSPORT"), result: "TRANSPORT" }

Подробнее о NER и TokensRegex здесь:

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

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

...