2014-04-22 1 views
6

UIMA Ruta를 처음 사용합니다. 스크립팅 언어를 사용하여 주석 작성자를 만들었습니다. EclipseIDE 내에서 실행할 수 있습니다. 제공된 입력에 스크립트를 자동으로 실행하는 JAVA API를 작성하려고합니다.UIMA Ruta 스크립트를 실행하기위한 Java API

저는 UIMA 문서에서 제공되는 동일한 예제 프로젝트를 사용하고 있습니다.

지금까지 내가 기본 BasicEngine.xml 및 입력 텍스트 파일 니펫을 위의 실행에이

try { 
     File taeDescriptor = null; 
     File inputDir = null; 

     // Read and validate command line arguments 
     boolean validArgs = false; 
     if (args.length == 2) { 
      taeDescriptor = new File(args[0]); 
      inputDir = new File(args[1]); 

      validArgs = taeDescriptor.exists() 
        && !taeDescriptor.isDirectory() 
        && inputDir.isDirectory(); 
     } 
     if (!validArgs) { 
      printUsageMessage(); 
     } else { 
      // get Resource Specifier from XML file 
      XMLInputSource in = new XMLInputSource(taeDescriptor); 
      ResourceSpecifier specifier = UIMAFramework.getXMLParser() 
        .parseResourceSpecifier(in); 

      // for debugging, output the Resource Specifier 
      // System.out.println(specifier); 

      // create Analysis Engine 
      AnalysisEngine ae = UIMAFramework 
        .produceAnalysisEngine(specifier); 

      // create a CAS 
      CAS cas = ae.newCAS(); 

      // get all files in the input directory 
      File[] files = inputDir.listFiles(); 
      if (files == null) { 
       System.out.println("No files to process"); 
      } else { 
       // process documents 
       for (int i = 0; i < files.length; i++) { 
        if (!files[i].isDirectory()) { 
         processFile(files[i], ae, cas); 
        } 
       } 
      } 
      ae.destroy(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

을 할 수 있었다. 그것은 스택 추적을 아래에 준다.

org.apache.uima.resource.ResourceInitializationException: Annotator class "org.apache.uima.ruta.engine.RutaEngine" was not found. (Descriptor: file:/D:/uimaOutput/ruta-2.1.0/example-projects/ExampleProject/descriptor/BasicEngine.xml) 
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:209) 
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:158) 
at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94) 
at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62) 
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279) 
at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:369) 
at org.apache.uima.examples.ExampleApplication.main(ExampleApplication.java:81) 
Caused by: java.lang.ClassNotFoundException: org.apache.uima.ruta.engine.RutaEngine 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 
    at  org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:206) 
... 6 more 

내가 붙어있다. 도와주세요.

편집 : 위의 기록

자바 API는 UIMA 문서에서 uimaj-예에서입니다. classpath에 ruta jar와 일반적인 jar 파일을 추가했다.

+2

해당 클래스와 JAR를 발견하고 CLASSPATH에 추가하십시오 : uimaFIT를 사용하는 것을 선호 개발자의

. IDE 외부에서 작업하는 방법을 모른 채로 Eclipse에 너무 익숙해 져있는 것처럼 들립니다. – duffymo

+0

도움을 주셔서 감사합니다. – Anshul

답변

3

문제는 이미 질문의 의견에서 해결되었습니다. 난 포인터로 대답을 확장하고 싶다.

라이브러리 ruta-core.jar 및 해당 종속성 (antlr-runtime, uima, uimafit, ...)은 응용 프로그램의 클래스 경로에 있어야합니다. eclipse plugin ruta-ep-engine.jar에는 uima 옆의 종속성이 들어 있습니다.

<dependency> 
    <groupId>org.apache.uima</groupId> 
    <artifactId>ruta-core</artifactId> 
    <version>2.2.0</version> 
</dependency> 

문서는 자바 내에서 UIMA 루타 스크립트를 호출하는 방법에 대한 예제를 포함합니다 : 받는다는로 구축 프로젝트의 경우,이 클래스는 수도 명령 줄 인터페이스를 만들려면 개발자의 https://uima.apache.org/d/ruta-current/tools.ruta.book.html#ugr.tools.ruta.ae.basic https://uima.apache.org/d/ruta-current/tools.ruta.book.html#ugr.tools.ruta.integration

흥미 롭다 :

UIMA 환경 (CAS 인스턴스가 이미 사용 가능) 인 경우 Ruta.apply (CAS cas, String 스크립트) 메소드를 사용하여 CAS에 대한 몇 가지 규칙. https://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/UimafitTest.java

+1

또한 추가하려면 [this] (http://uima.apache.org/d/uimaj-2.5.0/tutorials_and_users_guides.pdf)를 참조하고 통합을 위해 ExampleAction.java 클래스를 사용하십시오. – Anshul

관련 문제