2
DECLARE A,B;
DECLARE Annotation C(Annotation firstA, Annotation secondA,...);
"token1|token2|...|tokenn" -> A;
"token3|token4" -> B;

A A B {->MARK(C,1,3)}; 

GATHERでやった

(A  COMMA A B) {-> GATHER(C,1,4,"firstA"=1,"secondA" = 3,"B"=4)};

しかし、A型の未知の配列の場合はどうでしょうか?以下のように、すべての A を機能に格納するにはどうすればよいでしょうか? 機能の数も不明です。plan javaではString配列を宣言して要素を追加できるのですが、Rutaではそのような処理がないようです。

(A  (COMMA A)+ B) {-PARTOF(C) -> GATHER(C,beginPosition,endPosition,"firstA"=1,"secondA" = 3,"thirdA"=?,so on)};
4

1 に答える 1

1

UIMA の注釈は、開始オフセットから終了オフセットまでの完全なスパンを参照します。したがって、2 つの要素で何かを指定したい場合、単純な注釈では不十分です。最初の A と B をカバーし、2 番目の A をカバーしないタイプ C の注釈を作成することはできません。

ただし、重要な情報を特徴値に格納することはできます。どのように実装するかは、さまざまなことに依存します。

覚えておきたい注釈が常に 2 つある場合は、タイプ C に 2 つの機能を追加し、指定されたルールで機能値を割り当てます。たとえば、CREATE(C,1,3,"first" = A, "second" = A, "second" = B)。

GATHER などのさまざまなアクションを使用することも、注釈を保存するために 1 つの FSArray 機能を使用することもできます。

FSArray を使用した完全な例:

DECLARE A, B;
DECLARE Annotation C (FSArray as, B b);
"A" -> A;
"B" -> B;
(A (COMMA A)+ B){-PARTOF(C) -> CREATE(C, "as" = A, "b" = B)};

「A、A、A B」のようなテキストに適用された場合、最後のルールはタイプ C の 1 つのアノテーションを作成し、3 つの A アノテーションを機能「as」に格納し、1 つの B アノテーションを機能「b」に格納します。

于 2014-09-26T11:13:34.350 に答える