Java 串入,串出?
我是新来的。到目前为止,我找不到任何关于如何创建不涉及文件的管道的示例 我试图使用cleartk和UIMA处理存储在Java字符串变量中的一个小文本,并获取一个XML字符串(cleartk注释器的结果) 我能够提供一个字符串作为输入(请参阅代码摘录),但代码远远不够优雅(需要在CAS中执行set和empty URI)。此外,输出被保存到一个文件中,但我想找回一个字符串(将输出保存到一个文件中,然后将该文件读回内存是没有意义的)Java 串入,串出?,java,uima,cleartk,Java,Uima,Cleartk,我是新来的。到目前为止,我找不到任何关于如何创建不涉及文件的管道的示例 我试图使用cleartk和UIMA处理存储在Java字符串变量中的一个小文本,并获取一个XML字符串(cleartk注释器的结果) 我能够提供一个字符串作为输入(请参阅代码摘录),但代码远远不够优雅(需要在CAS中执行set和empty URI)。此外,输出被保存到一个文件中,但我想找回一个字符串(将输出保存到一个文件中,然后将该文件读回内存是没有意义的) 让管道将一个字符串作为输入并生成另一个字符串作为执行结果的建议方法是
让管道将一个字符串作为输入并生成另一个字符串作为执行结果的建议方法是什么?像您那样使用
SimplePlepLine
运行引擎,然后从源CAS中检索您感兴趣的注释,如下所示:
Collection<MyAnnotation> myAnnotation = JCasUtil.select(sourceCas, MyAnnotation.class);
String myproperty = myAnnotation.getMyproperty();
Collection myAnnotation=JCasUtil.select(sourceCas,myAnnotation.class);
字符串myproperty=myAnnotation.getMyproperty();
我最喜欢的方法是不使用管道,而是按照Lee Becker的建议,通过org.apache.uima.fit.factory.AggregateBuilder
手动创建分析引擎
Collection<MyAnnotation> myAnnotation = JCasUtil.select(sourceCas, MyAnnotation.class);
String myproperty = myAnnotation.getMyproperty();
AggregateBuilder builder = new AggregateBuilder();
builder.add(org.cleartk.opennlp.tools.SentenceAnnotator.getDescription());
builder.add(TokenAnnotator.getDescription());
builder.add(DefaultSnowballStemmer.getDescription("English"));
builder.add(org.cleartk.opennlp.tools.ParserAnnotator.getDescription());
builder.add(org.cleartk.timeml.time.TimeAnnotator.FACTORY.getAnnotatorDescription());
builder.add(TimeTypeAnnotator.FACTORY.getAnnotatorDescription());
builder.add(EventAnnotator.FACTORY.getAnnotatorDescription());
builder.add(EventTenseAnnotator.FACTORY.getAnnotatorDescription());
builder.add(EventAspectAnnotator.FACTORY.getAnnotatorDescription());
builder.add(EventClassAnnotator.FACTORY.getAnnotatorDescription());
builder.add(EventPolarityAnnotator.FACTORY.getAnnotatorDescription());
builder.add(EventModalityAnnotator.FACTORY.getAnnotatorDescription());
builder.add(AnalysisEngineFactory.createEngineDescription(AddEmptyDCT.class));
builder.add(TemporalLinkEventToDocumentCreationTimeAnnotator.FACTORY.getAnnotatorDescription());
builder.add(TemporalLinkEventToSameSentenceTimeAnnotator.FACTORY.getAnnotatorDescription());
builder.add(TemporalLinkEventToSubordinatedEventAnnotator.FACTORY.getAnnotatorDescription());
AnalysisEngine aggregateEngine = builder.createAggregate();
JCas sourceCas = createJCas();
sourceCas.setDocumentText(documentText);
ViewUriUtil.setURI(sourceCas, new URI(""));
aggregateEngine.process(sourceCas);
String timeMlXml = TempEval2007Writer.toTimeML(sourceCas);