나는 uima ruta의 예를 시도하고있다 : here.UIMA Ruta - 기본 예
나는 ruta 스크립트를 만들어 내 텍스트에 적용하려고합니다 (어떤 작업대도없는 일반 java에서).
1. 어떻게하면 일반 Java (workbench없이)에서 유형 시스템 설명자를 얻을 수 있습니까? 2. 언제 작업대로 가져올 수 있습니까? (내가 루타 스크립트를 "실행"하는 경우 설명이 없습니다.)
나는 uima ruta의 예를 시도하고있다 : here.UIMA Ruta - 기본 예
나는 ruta 스크립트를 만들어 내 텍스트에 적용하려고합니다 (어떤 작업대도없는 일반 java에서).
1. 어떻게하면 일반 Java (workbench없이)에서 유형 시스템 설명자를 얻을 수 있습니까? 2. 언제 작업대로 가져올 수 있습니까? (내가 루타 스크립트를 "실행"하는 경우 설명이 없습니다.)
주된 질문은 스크립트가 새로운 유형을 선언하는지 여부입니다.
새로운 유형이 선언되지 않은 경우 문서에 링크 된 예제로 충분해야합니다.
새 유형이 스크립트에 선언 된 경우 스크립트를 CAS에 적용하려면 유형 시스템 설명을 만들어 CAS의 작성 프로세스에 포함시켜야합니다.
다음과 같은 방법을 만들 수 있습니다 스크립트 내에서 선언 된 유형의 유형 설명이 포함 된 스크립트의 형식 시스템 설명 :
일반 Java 코드에서 ruta 기반 분석 엔진을 만들고 실행하는 데는 여러 가지 방법이 있습니다. 여기에 추가 파일을 사용하지 않고 예제 :
String rutaScript = "DECLARE MyType; CW{-> MyType};";
RutaDescriptorFactory descriptorFactory = new RutaDescriptorFactory();
RutaBuildOptions options = new RutaBuildOptions();
options.setResolveImports(true);
options.setImportByName(true);
RutaDescriptorInformation descriptorInformation = descriptorFactory
.parseDescriptorInformation(rutaScript, options);
// replace null values for build environment if necessary (e.g., location in classpath)
Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = descriptorFactory
.createDescriptions(null, null, descriptorInformation, options, null, null, null);
AnalysisEngineDescription rutaAnalysisEngineDescription = descriptions.getKey();
rutaAnalysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings().setParameterValue(RutaEngine.PARAM_RULES, rutaScript);
TypeSystemDescription rutaTypeSystemDescription = descriptions.getValue();
// directly set type system description since no file will be created
rutaAnalysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(rutaTypeSystemDescription);
ResourceManager resourceManager = UIMAFramework.newDefaultResourceManager();
AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(rutaAnalysisEngineDescription);
List<TypeSystemDescription> typeSystemDescriptions = new ArrayList<>();
TypeSystemDescription scannedTypeSystemDescription = TypeSystemDescriptionFactory.createTypeSystemDescription();
typeSystemDescriptions.add(scannedTypeSystemDescription);
typeSystemDescriptions.add(rutaTypeSystemDescription);
TypeSystemDescription mergeTypeSystemDescription = CasCreationUtils.mergeTypeSystems(typeSystemDescriptions, resourceManager);
JCas jCas = JCasFactory.createJCas(mergeTypeSystemDescription);
CAS cas = jCas.getCas();
jCas.setDocumentText("This is my document.");
ae.process(jCas);
Collection<AnnotationFS> select = CasUtil.select(cas, cas.getTypeSystem().getType("Anonymous.MyType"));
for (AnnotationFS each : select) {
System.out.println(each.getCoveredText());
}
면책 조항 : 나는 당신의 대답에 대한
감사합니다 UIMA 루타의 개발자입니다. 나는 RutaDescriptorFactory 예제를 이해하고 있는지 확신 할 수 없다. 위의 예제에 어떻게 삽입 할 수 있는가? ([link] (https://uima.apache.org/d/ruta-current/tools.ruta.book.html) # ugr.tools.ruta.ae.basic.apply)) – CyKon
답변을 연장합니다 –
대단히 감사합니다! :-) – CyKon