访问JCas批注列表

时间:2018-10-30 12:03:57

标签: apache annotations uima

我正在开发一个Apache UIMA v2应用程序来注释文档。
我正确开发了process()方法,因为我获得了正确的注释(已通过debug和UIMA CAS Visual Debugger测试)。

我的应用程序包含JCas对象的简单实例化和文档的处理过程,即本例中的简单字符串。这是代码:

public class MainProgram {

public static void main(String[] args) {
    try {
        XMLInputSource in = new XMLInputSource("desc/dictionaryDescriptor.xml");
        ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
        AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);

        JCas jcas = ae.newJCas();

        jcas.setDocumentText("prova di a@gmail.com, timido, word, excel. ");

        ae.process(jcas);
        processResults(jcas);

        ae.destroy();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvalidXMLException e1) {
        e1.printStackTrace();
    } catch (ResourceInitializationException e2) {
        e2.printStackTrace();
    } catch (AnalysisEngineProcessException e3) {
        e3.printStackTrace();
    }


}

public static  void  processResults(JCas jcas) {
    System.out.println("Done!");
    // TODO read annotations from jcas
}
}

如果在processResults()方法内添加一个断点,我可以看到jcas的内容和注释列表:
debug jcas object


我想访问SubTypes对象中的AnnotationIndex列表,不关心类类型
这是特定类型的示例:

AnnotationIndex<Annotation> programIndex = jcas.getAnnotationIndex(Programma.type);
    Iterator programIter = programIndex.iterator();

    while(programIter.hasNext()) {
        Programma p = (Programma) programIter.next();
    }

1 个答案:

答案 0 :(得分:0)

您可以使用JCasUtil提取JCas的注释:

JCasUtil.select(jCas, Annotation.class).stream()....

,通过注释的getType()方法,您可以检查注释的类型。