Вот пример того, как это может быть сделано с UIMA Ruta 2.5.0.
Введите текст:
some text
Fig 1.1
some text
Pic 1.2
some text
Pic 1.3
some text
Fig 1.4
some text
Правило сценария:
DECLARE FigureInd;
DECLARE FigureMention (INT chapter, INT section);
ACTION FM(INT chap, INT sect) = CREATE(FigureMention, "chapter" = chap, "section" = sect);
"Fig"-> FigureInd;
INT c, s;
(FigureInd NUM{PARSE(c)} PERIOD NUM{PARSE(s)}){-> FM(c,s)};
DECLARE FigMissing;
f1:FigureMention #{-> FigMissing} f2:FigureMention
{f1.chapter == f2.chapter, f1.section < (f2.section - 1)};
INT pc, ps;
f:FigureMention{-> pc=f.chapter, ps=f.section}
FigMissing->{
(ANY @NUM{PARSE(c)} PERIOD NUM{PARSE(s)}){c==pc,s==ps+1-> FM(c,s), pc=c, ps=s};
};
Создано FigureMention аннотаций:
Fig 1.1
Pic 1.2
Pic 1.3
Fig 1.4
Раствор для UIMA Ruta 2.4.0 очень похож, но не позволяет прямое использование признаков выражений метки аннотации. Значения этих функций должны храниться в дополнительных переменных. И нужно применить булевскую проверку после установки переменных. Здесь решение для UIMA Ruta 2.4.0:
DECLARE FigureInd;
DECLARE FigureMention (INT chapter, INT section);
ACTION FM(INT chap, INT sect) = CREATE(FigureMention, "chapter" = chap, "section" = sect);
"Fig"-> FigureInd;
INT c, s;
(FigureInd NUM{PARSE(c)} PERIOD NUM{PARSE(s)}){-> FM(c,s)};
DECLARE FigMissing;
INT c1,c2,s1,s2;
(FigureMention<-{FigureMention{-> ASSIGN(c1, FigureMention.chapter), ASSIGN(s1, FigureMention.section)};}
#{-> FigMissing}
FigureMention<-{FigureMention{-> ASSIGN(c2, FigureMention.chapter), ASSIGN(s2, FigureMention.section)};})
{c1 == (c2), s1 < (s2 - 1)};
INT pc, ps;
f:FigureMention{-> pc=FigureMention.chapter, ps=FigureMention.section}
FigMissing->{
(ANY @NUM{PARSE(c)} PERIOD NUM{PARSE(s)}){c==(pc),s==(ps+1)-> FM(c,s), pc=c, ps=s};
};
(ОТКАЗ: Я разработчик UIMA Рута)
Пожалуйста, добавьте больше информации. –
Вы можете определить числовые переменные, либо два INT, либо один DOUBLE, сохранить числа фигуры в переменных и затем сопоставить значения, чтобы определить, отсутствует ли фигура. –
Да, у меня была идея сохранить число в переменной, Но я не знаю, как его сравнить. Можете ли вы это объяснить? –