Какое значение для перегрузки edu.stanford.nlp.ling.CoreAnnotations$TextAnnotation
до
edu.stanford.nlp.ling.CoreAnnotations$OriginalTextAnnotation
когда добавлены правила регулярных выражений токена.
Пример примера:
#123456
помечен как ДЕНЬГИ в Стэнфорде, поэтому для переопределения поведения NER я написал правило, которое помечает 123456
как НОМЕР вместо ДЕНЬГИ. В качестве побочного эффекта следующий £20.49
теперь помечен как NUMBER.
Я отладил код и понял, что при применении шаблона edu.stanford.nlp.ling.CoreAnnotations$TextAnnotation
используется для сопоставления. Следовательно, в случае, когда £20.49
является входом, £
является значением edu.stanford.nlp.ling.CoreAnnotations$OriginalTextAnnotation
, а #
является значением edu.stanford.nlp.ling.CoreAnnotations$TextAnnotation
.
Есть ли настройки среды, чтобы изменить это поведение?
Пример правила
# make all patterns case-sensitive
ENV.defaultStringMatchFlags = 0
ENV.defaultStringPatternFlags = 0
# 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" }
normalizedValue = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NormalizedNamedEntityTagAnnotation" }
{ ruleType: "tokens", pattern: (([{word:"#"}]) ([{ner:"MONEY"}])), action: (Annotate($1, ner, "IGNORE"), Annotate($2, ner, "NUMBER"), Annotate($0, normalizedValue, "TOKENS_REGEX")), result: "NUMBER" }