2014-02-21 5 views
3

UIMA RUTA 내에서 ClearTK의 StanfordCoreNLPAnnotator를 호출하려고하는데 작동하지 않습니다. 나는 maven-enabled RUTA 프로젝트와 함께 이클립스를 사용하고 있는데, 보조 프로젝트를위한 자바 코드도 가지고있다. maven을 사용하여 cleartk-stanford-corenlp 0.8을 가져 왔습니다.UIMA RUTA에서 StanfordCoreNLPAnnotator를 호출 할 때 cleartk 종속성을 찾을 수 없습니다.

ENGINE utils.MyStanfordEngine; 

... 유틸/MyStanfordEngine.xml는 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) 
... 

을 나는 나는 루타 프로젝트에서 그것을 찾을 수없는 것을 이해 생각 Maven 의존성이지만, 협업 목적 때문에 의존성 도구로 Maven을 고수해야합니다.

누군가 도움을 줄 수 있습니까?


업데이트 :이 문제가 발생하면

, 내가 루타 2.1.0 사용하고 있었다. 그 이후로 2.2.0rc1로 업데이트되었지만 문제는 지속되었습니다.

Java 빌드 경로에서 Peter의 제안 (감사합니다!)을 사용하여 cleartk-stanford-corenlp 0.8을 가져 오는 것 외에 아무것도 수행하지 않는 빈 Maven 지원 Java 프로젝트를 참조했습니다.

[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 

죄송합니다 : 성공적으로 입력 폴더에있는 모든 문서에 대한 모든 구성 주석처럼 보이지만 결국이 예외와 충돌 무엇을합니까 ...

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

: 지금 다음 루타 코드를 실행할 수 있습니다 전체 스택 추적을 위해,하지만 나는 RUTA 개발자가 이것을 읽고 있다면 모든 것을 원할지도 모른다 고 생각했다.

해결 방법이 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

UIMA Ruta 프로젝트와 Maven 프로젝트를 분리 할 수 ​​있습니까? 나는 당신이 UIMA Ruta 2.1.0을 사용하고 있다고 가정합니다. 아직 Ruta 프로젝트의 종속성을 해결하지는 않습니다. (이것은 테스트없이 단지 추측입니다.) –

+0

알겠습니다. 나는이 문제를 RUTA 2.1.0을 사용하여 만났지 만 2.2.0rc1로 업그레이드하여 문제를 해결할 수 있기를 희망했다. 프로젝트를 분리하여 여기에서 작성하려고합니다. –

+0

2.2.0rc1은 불행히도 충분하지 않습니다. 솔루션이 아직 존재하지 않는 2.2.0rc3에 통합되어야하기 때문입니다. 새 문제점은 분석 엔진에서 사용 된 유형이 누락되었음을 나타냅니다. UIMA Ruta는 분석 엔진 유형을 가져 오지 않습니다. 자신이하는 것처럼 별도로 수입해야합니다. 나는 실제 문제가 무엇인지 살펴보기 위해 예외를 재현하려고 노력할 것이다. –

답변

1

은 몇 가지 제한 사항이 고려 있습니다

  • UIMA 루타의 2.1.0는 믹스 인 프로젝트를 지원하지 않습니다 받는다는 종속성이 다른 프로젝트에 지정해야합니다. Ruta 프로젝트는 추가 자바 프로젝트에 의존해야합니다.
  • UIMA Ruta Workbench 2.1.0에는 이름이 다른 유형 시스템을 다시 가져 오는 가져온 유형 시스템을 확인하는 데 몇 가지 문제가 있습니다. 여기서는 위치 별 가져 오기를 사용해야합니다.
  • UIMA CAS Editor 2.5.0에는 데이터 경로를 사용하여 유형 시스템 가져 오기를 해결하는 데 문제가 있습니다. 유형 시스템 설명자에 데이터 경로와 같은 추가 정보가 필요한 경우 생성 된 주석을 시각화하는 데 문제가 발생합니다. 여기서 스크립트의 유형 시스템 설명자를 작성하려면 가져온 유형 시스템의 모든 유형을 포함 (가져올 수있을뿐만 아니라)해야합니다. 환경 설정에서 구성 할 수 있습니다 (잠시 동안 사용하지 않았습니다). 이 문제는 위치 별 가져 오기를 사용하여 다시 예방할 수 있습니다.
  • UIMA Ruta 2.2.0은 mixin 프로젝트를 지원합니다. 여기에서는 CAS 편집기의 문제 만 남아 있습니다.

    1. 새로운 UIMA 루타 프로젝트 만들기
    2. 이 받는다는 프로젝트 확인 :

이 기술 프로젝트 (UIMA 루타 2.2.0) 다음과 같은 방법을 만들 수 있습니다 popup-> 구성 - > cleartk - 스탠포드 - corenlp을 위해 치어의 종속성을 추가 메이븐 프로젝트

  • 로 변환

    <dependency> 
    <groupId>org.cleartk</groupId> 
    <artifactId>cleartk-stanford-corenlp</artifactId> 
    <version>0.8.0</version> 
    </dependency> 
    
  • P 유형 시스템을 설명자 폴더 또는 종속 프로젝트에 게시하십시오 (예 : org) cleartk-type-system-1.2.0 폴더를 설명자 폴더에 복사하십시오. 설명자가 변경되지 않은 경우 CAS 편집기가 가져 오기를 해결하는 데 문제가 있음을 유의하십시오.
  • 유형 시스템을 가져오고 분석 엔진을 가져오고 분석 엔진을 실행하는 간단한 스크립트를 작성하십시오. 여기서 uimaFIT 구성 요소는 설명자 대신 직접 가져옵니다. 이후 규칙이 가져온 분석 엔진의 결과를 처리 할 수 ​​있어야하는 경우 EXEC 작업을 흥미로운 유형으로 확장해야합니다.

    TYPESYSTEM org.cleartk.TypeSystem; 
    UIMAFIT org.cleartk.stanford.StanfordCoreNLPAnnotator; 
    Document{->EXEC(StanfordCoreNLPAnnotator)}; 
    
  • 가져 오기 폴더에 텍스트 파일이 있으면이 스크립트를 실행하면 주석을 달 수 있습니다.
  • 예는 직접 대신 추가적인 분석 엔진의 StanfordCoreNLPAnnotator를 사용하지만, 다른 구현 또는 분석 엔진으로 전환하는 것은 간단 할 것이다.

    +0

    UIMA Ruta 2.2.0을 아직 사용할 수 없기 때문에 스냅 샷 업데이트 사이트를 구축하고 출시가 가능해질 때까지 설치했습니다 :'http://people.apache.org/~pkluegl/temp/eclipse-update-site/ '. 이클립스는 누락 된 타임 스탬프로 인해이를 업데이트 할 수없는 경우가 있습니다. 스냅 샷 업데이트 사이트를 설치하기 전에 다른 스냅 샷을 제거해야 할 수도 있습니다. –

    +0

    죄송합니다. 실제 업데이트 사이트는 물론 http : // people.apache.org/~ pkluegl/temp/eclipse-update-site/ruta /' –

    +0

    입니다. 이것은 매우 도움이됩니다. 프로젝트 웹 사이트에서 Cleartk 유형의 시스템 항아리를 가져 왔고 모든 것이 제대로 가져옵니다. 그래도 나는 두 번째 예외를 얻는다. 그리고 네, CAD 편집기는 가져온 타입 시스템에 몇 가지 문제가 있습니다. 나는 수입을 해결하거나 그 주위에서 영리한 방법을 찾는다. 나는 모든 일이 있으면 여기에 게시 할 것입니다. 일단 내가 평판이 15라면, 나는 당신의 답변에 투표 할 것이다;) –