1

この用語の背後にある用語が自分に関連している場合にのみ、いくつかの用語を一致させたい. だから私は最小限の例を作成しました:

これは私のテストデータです:

small Large
Large
small

そして、「小さい」ではなく、「小さい」「大きい」と「大きい」という用語をマークしたいと思います。

だから私は、このようなものがうまくいくはずだと思った:

DECLARE Test;
(SW*? CW) {-> CREATE(Test)};

ただし、RUTA は「小さい大」しか一致しません。

テストのために、「SW」を「W」に置き換えました。

4

1 に答える 1

0

残念ながら、ルールが最初のルール要素と一致し始める場合、ルールの先頭にあるオプションの量指定子はオプションではありません。これは、2 つのルールが必要か、ルール要素の一致の順序を変更する必要があることを意味します。

SWの前に のすべての増分シーケンスが考慮されるわけではないため、ルール要素一致の順序を変更すると、異なるルール一致が発生しますCW。ただし、これはいずれにせよ、通常は好まれるものです。ルールは次のようになります。

(SW* @CW) {-> CREATE(Test)};

2 つのルールのアプローチは次のようになります。

(SW+? CW) {-> CREATE(Test)};
CW {-> CREATE(Test)};

必要のない追加の計算のために実際に必要でない場合は、消極的な数指定子の使用を避けることをお勧めします。見栄えがよくなくても、むしろ PARTOF 条件を使用してください。

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

于 2016-11-15T08:32:33.100 に答える