2

カスタム UIMA RUTA ルール条件を追加したいと考えています。Eclipse に既存の UIMA Ruta プロジェクトがあります。これまでのところ、基本的なアノテーター スタブを使用して、同じプロジェクト内にソース ファイルを作成しました。

package mynamespace.extensions;

[imports]

public class MyNewCondition extends AbstractRutaCondition {

private final String para1;

public MyNewCondition(String para1) {
    super();
    this.para1 = para1;
}

@Override
public EvaluatedCondition eval(AnnotationFS annotation,
        RuleElement element, RutaStream stream, InferenceCrowd crowd) {
    // TODO Auto-generated method stub
    if (para1 == "hfoo")
        return new EvaluatedCondition(this, true);
    else 
        return new EvaluatedCondition(this, false);
}

public String getPara() {
    return para1;
}
}

ファイルは target/classes/... フォルダーにコンパイルされますが、RUTA スクリプトを作成すると:

DECLARE Test;
SW{MyNewCondition("foo") -> MARK(Test)};

... Eclipse は、「MyNewCondition」が定義されていないことを教えてくれます。それを実行すると、コンソールに「40 行目のエラー、"(": 実行可能な代替手段が見つかりませんでした」というメッセージが表示されます。さらにインポートする必要があると思います。 Github リポジトリの Extension サンプル プロジェクトから作業を試みましたが、スクリプト ファイルにはそれ以上のインポートが含まれていないため、どこから始めればよいかわかりませんが、関連する xml 記述子ファイルには含まれています。これらは自動的に生成されます。これを変更する必要があるのか​​、それとも別のものなのかわかりません。

また、Eclipse のビルド パス オプションを使用して 2 番目のプロジェクトから同じ新しい条件タイプをインポートしようとしましたが、うまくいきませんでした。

誰か助けてくれませんか?ありがとう。

4

1 に答える 1

2

UIMA Ruta Workbench でも解決される新しい条件を追加するには、少なくとも 3 つのクラスが必要です。

  1. 質問で行った条件の実装
  2. エンジンに条件の実装を提供する IRutaConditionExtension の実装
  3. UIMA Ruta Workench の条件を提供する IIDEConditionExtension の実装

条件自体には、言語に追加する必要がある機能のみが含まれています。もちろん、分析エンジンは外部実装について何も認識していないため、「(」が見つからないなどの奇妙な解析例外が発生します。これは時々改善する必要があります。分析エンジンは構成パラメーターを提供します。additionalExtensions言語に対するすべての既知の拡張機能を一覧表示します。UIMA Ruta Workbench を使用していない場合は、IRutaConditionExtension の実装をこのパラメーターに追加する必要があります。IIDEConditionExtension の実装により、UIMA Ruta Workbench に必要な機能 (構文チェック、構文の強調表示など) が提供されます。さらに、ワークベンチが正しい記述子を生成できるようにします。IRutaConditionExtension の実装をそれぞれのパラメーターに追加します。Workbench のこの拡張機能は、もちろん、Workbench で使用できるようにするために、UIMA Ruta Workbench Eclipse インスタンスにインストールされている Eclipse プラグインに実装する必要があります。IRutaConditionExtension と IIDEConditionExtension の両方の実装を認識している、拡張する必要がある拡張ポイントがあります。

すべての可能な言語要素の実装を提供する模範的なプロジェクトがあります。このプロジェクトには、分析エンジンの実装と UIMA Ruta Workbench の実装が含まれているため、Eclipse プラグインです (pom ファイルに注意してください)。

ExampleCondition 条件拡張に関して、3 つの重要なスポット/クラスがあります。

  1. ExampleCondition.java日付を評価する新しい条件の実装を提供します
  2. ExampleConditionExtension.java分析エンジンの拡張機能を提供します。条件の名前とその実装を認識し、その条件の新しいインスタンスを作成でき、説明コンポーネントの条件を言語化できます。
  3. ExampleConditionIDEExtensionエディターの構文チェックと構文色付けのキーワードを提供します。
  4. plugin.xmlWorkbench の拡張子を定義します。

    <extension point="org.apache.uima.ruta.ide.conditionExtension">
      <condition
        class="org.apache.uima.ruta.example.extensions.ExampleConditionIDEExtension"
        engine="org.apache.uima.ruta.example.extensions.ExampleConditionExtension">
      </condition>
    </extension>
    

UIMA Ruta Workbench を使用しない場合、または UIMA パイプラインでルールを適用するだけの場合は、 と のみが必要ExampleConditionであり、UIMA Ruta 分析エンジン (記述子) のパラメーターExampleConditionExtensionに追加する必要がありorg.apache.uima.ruta.example.extensions.ExampleConditionExtensionます。additionalExtensions

同じワークスペースで Java プロジェクトを使用して新しい条件を追加することはまだテストされていませんが、Eclipse の拡張ポイント メカニズムを使用した拡張機能が含まれているため、少なくとも Workbench のサポートは失われます。

于 2014-02-27T11:35:47.013 に答える