uima ruta で配列決定が可能かどうか。例えば:
入力ファイル:
some text
Fig 1.1
Table 1.1
Fig 1.2
some text
Pic 1.2
Table 1.2
some text
Table 1.3
Pic 1.3
some text
Fig 1.4
some text
Table 1.4
some text
Table 1.5
Fig 1.6
Box 1.1
Fig 1.5
欠落している図を見つけるにはどうすればよいですか (図 1.3)
次のスクリプトは、UIMA Ruta 2.4.0 で欠損値の最小値と最大値を含む注釈を作成します。
DECLARE FigureInd;
DECLARE FigureMention (INT chapter, INT section);
DECLARE FigureMissing (INT minChapter, INT minSection, INT maxChapter, INT maxSection);
ACTION Mention(INT chap, INT sect) = CREATE(FigureMention, "chapter" = chap, "section" = sect);
ACTION Missing(INT minc, INT mins, INT maxc, INT maxs) = CREATE(FigureMissing, "minChapter" = minc, "minSection" = mins, "maxChapter" = maxc, "maxSection" = maxs);
"Fig"-> FigureInd;
INT c, s;
(FigureInd NUM{PARSE(c)} PERIOD NUM{PARSE(s)}){-> Mention(c,s)};
DECLARE FigMissing;
INT c1,c2,s1,s2;
(FigureMention<-{FigureMention{-> ASSIGN(c1, FigureMention.chapter), ASSIGN(s1, FigureMention.section)};}
#{-> Missing(c1,s1+1,c2,s2-1)}
FigureMention<-{FigureMention{-> ASSIGN(c2, FigureMention.chapter), ASSIGN(s2, FigureMention.section)};})
{c1 == (c2), s1 < (s2 - 1)};
UIMA Ruta では、ブール式 (while など) に対するループはなく、既存の注釈に対するループのみです。これにより、同じオフセットで欠落している各 Fig に対して個別の注釈を作成することがより複雑になります。ただし、再帰的な BLOCK で実行できます。回答のスクリプトは、欠落している図の範囲を定義する 1 つの注釈を作成します。
質問のテキストの例として、2 つの FigureMissing 注釈が作成されます。
FigureMissing
- begin: 41
- end: 112
- minChapter: 1
- minSection: 3
- maxChapter: 1
- maxSection: 3
FigureMissing
- begin: 123
- end: 165
- minChapter: 1
- minSection: 5
- maxChapter: 1
- maxSection: 5
2 番目の FigureMissing を作成してはならない場合は、既存の FigureMentions に応じて、追加のルールによって再び削除される可能性があります。これはもちろん、たとえば BLOCK を使用して個別の FirgureMssing 注釈が作成されていれば、はるかに簡単になります。
免責事項: 私は UIMA Ruta の開発者です