この小さな問題で、私は数晩眠れなくなりました。
次の UIMA Ruta スクリプトがあります。
(Action.type=="info_req"{->CREATE(CompAction,"type"=Action.type)}
Preposition? Article? ServiceItem{->FILL(CompAction,"target"=ServiceItem, "num_targets"=1),SHIFT(CompAction,1,4)}
(Preposition? Article? ServiceItem)?{
->FILL(CompAction, "target2"=ServiceItem, "num_targets"=2, "selection"="OR") })
{->SHIFT(CompAction,1,1)}
;
次の文に一致するはずです。
ゴールドクレジットカードについて カードの情報が欲しい
- 注釈アクションは「情報が欲しい」に一致します
- 注釈前置詞は「約」に一致します
- 注釈記事は「the」に一致します
- アノテーション ServiceItem は「card」および「gold credit card」に一致します
望ましい結果は、次の機能を備えた CompAction アノテーションである必要があります。
- 機能対象: (タイプ ServiceItem) カード
- 機能のターゲット 2: (タイプ ServiceItem) ゴールド クレジット カード
残念ながら、私が得る結果は次のとおりです。
- 機能対象: (タイプ ServiceItem) カード
- 機能のターゲット 2: (タイプ ServiceItem) カード
つまり、同じ ServiceItem を 2 回取得します。これは、非常に間違ったことをしていない限り、参照の問題のようです。