2

サンプル スクリプト:

DECLARE Name,TEST;

 "Peter"->Name;
 "der Groot"->Name;
 "Robert"->Name;
 "de Leew"->Name;
 "O'Sullivan"->Name;

STRING s;
STRINGLIST slist;
Name{-> MATCHEDTEXT(s), ADD(slist,s),LOG(s)};
  ANY+ {INLIST(slist)->MARK(TEST)};

受信した出力:

Peter
Robert

期待される出力:

 Peter
 der Groot
 Robert
 de Leew
 O'Sullivan

サンプル入力:

Peter
der Groot
Robert
de Leew
O'Sullivan

stringlist の値を注釈型にマークしようとしましたが、受信した出力が予期した出力と異なります。

4

1 に答える 1

2

ルール要素の条件は、ANY+すべての ANY を検証するため、最初の条件で失敗し、単一のトークンのみに一致します。

最後のルールは、注釈の直後の位置にのみ注釈を付ける必要がありNameますか?

そうでない場合は、次のようなことができます。

Name{-> MATCHEDTEXT(s), ADD(slist,s)};
MARKFAST(TEST, slist);

はいの場合、正しいスパンを持つ候補がないため、状況はさらに複雑になります。ANY と INLIST の組み合わせでこれを解決することはできません。リストに正しいスパンまたはフラグメントが必要です。追加の修正ルールをお勧めします。

Name{-> MATCHEDTEXT(s), ADD(slist,s)};
MARKFAST(TEST, slist);
ANY{-ENDSWITH(Name)} @TEST{-> UNMARK(TEST)};

免責事項: 私は UIMA Ruta の開発者です

于 2016-11-02T08:01:34.813 に答える