3

UIMA RUTA 内から ClearTK の StanfordCoreNLPAnnotator を呼び出そうとしていますが、動作させることができません。私は、補助タスク用の Java コードもある Maven 対応の RUTA プロジェクトで Eclipse を使用しています。maven を使用して cleartk-stanford-corenlp 0.8 をインポートしました。

スクリプトで次の行を使用してみました:

ENGINE utils.MyStanfordEngine;

... utils/MyStanfordEngine.xml は、次の Java コードを使用して作成された XML 記述子ファイルです。

MyStanfordAnnotator.getDescription().toXML(new FileOutputStream("descriptor/utils/MyStanfordEngine.xml"));

エラーは表示されませんが、実行すると次のようになります。

Exception in thread "main" org.apache.uima.resource.ResourceInitializationException: Initialization of annotator class ... failed.  
(Descriptor: file:.../descriptor/mainScriptEngine.xml)
...
Caused by: org.apache.uima.resource.ResourceInitializationException: Annotator class 
"org.cleartk.stanford.StanfordCoreNLPAnnotator" was not found. 
(Descriptor: file:.../descriptor/utils/MyStanfordEngine.xml)
...

RUTA プロジェクトが Maven の依存関係に見つからないことは理解していると思いますが、コラボレーションの目的から、依存関係ツールとして Maven に固執する必要があります。

誰か助けてくれませんか?


アップデート:

問題が発生したとき、私は RUTA 2.1.0 を使用していました。それ以来、2.2.0rc1 にアップデートしましたが、問題は解決しませんでした。

以下の Peter の提案 (ありがとう!) により、Java ビルド パスで、cleartk-stanford-corenlp 0.8 をインポートするだけの空の Maven 対応 Java プロジェクトを参照しました。次の RUTA コードを実行できるようになりました。

TYPESYSTEM utils.CleartkRutaTypeSystem;
ENGINE utils.MyStanfordEngine;
Document{-> CALL(MyStanfordEngine)};

...入力フォルダー内のすべてのドキュメントに対して意図されたすべての注釈のように見えるものを正常に実行しますが、最終的には次の例外でクラッシュします:

[Stanford Tools Logging output ...]
22.02.2014 12:44:22 org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl        callAnalysisComponentProcess(406)
SCHWERWIEGEND: Exception occurred
org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator processing failed.    
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:477)
at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:374)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
at org.apache.uima.ruta.ide.launching.RutaLauncher.processFile(RutaLauncher.java:168)
at org.apache.uima.ruta.ide.launching.RutaLauncher.main(RutaLauncher.java:129)
Caused by: java.lang.NullPointerException
at org.apache.uima.cas.impl.CASImpl.createFS(CASImpl.java:483)
at org.apache.uima.cas.impl.CASImpl.createAnnotation(CASImpl.java:3837)
at org.apache.uima.ruta.action.CallAction.callEngine(CallAction.java:192)
at org.apache.uima.ruta.action.CallAction.execute(CallAction.java:62)
at org.apache.uima.ruta.rule.AbstractRuleElement.apply(AbstractRuleElement.java:130)
at org.apache.uima.ruta.rule.RuleElementCaretaker.applyRuleElements(RuleElementCaretaker.java:111)
at org.apache.uima.ruta.rule.ComposedRuleElement.applyRuleElements(ComposedRuleElement.java:547)
at org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:468)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:377)
at org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:100)
at org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:73)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:47)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:40)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:29)
at org.apache.uima.ruta.RutaScriptBlock.apply(RutaScriptBlock.java:63)
at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:48)
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:475)
... 6 more
Exception in thread "main" org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator processing failed.    
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:477)
at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:374)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
at org.apache.uima.ruta.ide.launching.RutaLauncher.processFile(RutaLauncher.java:168)
at org.apache.uima.ruta.ide.launching.RutaLauncher.main(RutaLauncher.java:129)
Caused by: java.lang.NullPointerException
at org.apache.uima.cas.impl.CASImpl.createFS(CASImpl.java:483)
at org.apache.uima.cas.impl.CASImpl.createAnnotation(CASImpl.java:3837)
at org.apache.uima.ruta.action.CallAction.callEngine(CallAction.java:192)
at org.apache.uima.ruta.action.CallAction.execute(CallAction.java:62)
at org.apache.uima.ruta.rule.AbstractRuleElement.apply(AbstractRuleElement.java:130)
at org.apache.uima.ruta.rule.RuleElementCaretaker.applyRuleElements(RuleElementCaretaker.java:111)
at org.apache.uima.ruta.rule.ComposedRuleElement.applyRuleElements(ComposedRuleElement.java:547)
at org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:468)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:377)
at org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:100)
at org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:73)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:47)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:40)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:29)
at org.apache.uima.ruta.RutaScriptBlock.apply(RutaScriptBlock.java:63)
at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:48)
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:475)
... 6 more

スタック トレース全体で申し訳ありませんが、RUTA 開発者がこれを読んでいる場合、すべてが必要になる可能性があると思いました。

これを解決する方法はありますか?私は何を間違っていますか?

4

1 に答える 1

1

考慮すべきいくつかの制限があります。

  • UIMA Ruta 2.1.0 は mixin プロジェクトをサポートしていません。別のプロジェクトで maven の依存関係を指定する必要があります。Ruta プロジェクトは、追加の Java プロジェクトに依存する必要があります。
  • UIMA Ruta Workbench 2.1.0 には、インポートされた型システムを検証する際に問題があり、他の型システムを名前で再度インポートします。ここでは、場所ごとのインポートを使用する必要があります。
  • UIMA CAS Editor 2.5.0 には、データパスを使用して型システムのインポートを解決する際に問題があり、型システム記述子がデータパスなどの追加情報を必要とする場合、作成された注釈を視覚化する際に問題が発生します。ここで、スクリプトの型システム記述子の作成には、インポートされた型システムのすべての型を (インポートだけでなく) 含める必要があります。これは環境設定で設定できます (しばらく使用していません)。この問題は、場所別のインポートを使用することで防ぐことができます。
  • UIMA Ruta 2.2.0 は mixin プロジェクトをサポートしています。ここでは、CAS エディターの問題だけが残ります。

このプロジェクトは、次の方法で作成できます (UIMA Ruta 2.2.0 を使用)。

  1. 新しい UIMA Ruta プロジェクトを作成する
  2. Maven プロジェクトにします: popup->Configure->Convert to Maven Project
  3. pom で cleartk-stanford-corenlp に依存関係を追加します。

    <dependency>
    <groupId>org.cleartk</groupId>
    <artifactId>cleartk-stanford-corenlp</artifactId>
    <version>0.8.0</version>
    </dependency>
    
  4. 記述子フォルダーまたは依存プロジェクトで型システムを提供します。たとえば、orgフォルダーをcleartk-type-system-1.2.0記述子フォルダーにコピーします。記述子が適合されていない場合、CAS エディターでインポートを解決する際に問題が発生することに注意してください。
  5. 型システムをインポートし、分析エンジンをインポートして、分析エンジンを実行する簡単なスクリプトを作成します。ここでは、記述子の代わりに uimaFIT コンポーネントが直接インポートされます。後でルールがインポートされた分析エンジンの結果で動作できるようにする必要がある場合は、EXEC アクションを興味深いタイプで拡張する必要があります。

    TYPESYSTEM org.cleartk.TypeSystem;
    UIMAFIT org.cleartk.stanford.StanfordCoreNLPAnnotator;
    Document{->EXEC(StanfordCoreNLPAnnotator)};
    
  6. インポート フォルダーにテキスト ファイルがある場合、このスクリプトを実行すると、テキスト ファイルに注釈を付けることができます。

StanfordCoreNLPAnnotatorこの例では、追加の分析エンジンの代わりに を直接使用していますが、別の実装または分析エンジンへの切り替えは簡単です。

于 2014-02-23T14:28:54.490 に答える