Буквенные совпадения строк для условия соответствия элемента правила основаны на внутренней индексации ruta и соответствуют только одному RutaBasic. Это означает, что фактическое соответствие, возможно, зависит от всех ранее созданных аннотаций. Поэтому я бы не рекомендовал использовать буквенные совпадения строк или только для быстрого прототипирования. (Версия Ruta 2.7.0, может быть изменена для более поздних версий)
Для вашего примера это означает, что первый элемент правила не совпадает, потому что сеялка RutaEngine создает отдельные аннотации для слов / букв и знаков препинания, что приводит к двум аннотациям RutaBasic.
Ваше правило может работать, если переписать его следующим образом:
RETAINTYPE(WS);
"ID" ":" n:NUM{-> CREATE(Entity, "label" = "ID", "value"=n.ct)};
"Date" ":" n:NUM{-> CREATE(Entity, "label" = "Date", "value"=n.ct)};
RETAINTYPE;
или без совпадений буквенных строк
RETAINTYPE(WS);
CAP.ct=="ID" COLON n:NUM{-> CREATE(Entity, "label" = "ID", "value"=n.ct)};
W.ct=="Date" COLON n:NUM{-> CREATE(Entity, "label" = "Date", "value"=n.ct)};
RETAINTYPE;
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я разработчик UIMA Ruta