我正在建立一个基于UIMA和DKPro-Core的新框架。 该框架提供了一种配置UIMA管道的简便方法。
在某些JCasAnnotator
中,我想成对或与单个JCas
比较所有文档(在这种情况下,我假设是不同的JCas对象)的数据。
runPipeline(createReaderDescription(SomeReader.class),
somePreprocessingEngineDescription,
similarityPipelineDescription,
createEngineDescription(SomeWriter.class)
);
在similarityPipelineDescription
内部,我想将一个JCas
与所有JCas
的数据进行比较。
public void process(JCas aJCas) throws AnalysisEngineProcessException {
// Compare aJcas with all other JCas objects
}
这是有人可以并且愿意这样做的推荐方法吗?
如果是这样,我如何获得对其他JCas
对象的访问权限?
还是应该保存要比较的数据,以后再进行比较?
答案 0 :(得分:1)
通常会重新使用通过管道传递的(J)Cas对象。因此,在分析引擎中收集对它们的引用是没有意义的,并且对从它们获取的任何特征结构的引用也将不起作用,因为在重置(J)Cas并重新使用它们时,它们将失效。
您可以将数据写入磁盘,然后再将其读取到多个CAS对象中,然后可以进行比较。
或者,您可以实现一个分析引擎,将您感兴趣的数据提取到一组独立的对象中,并以此为基础进行比较。
如果要进行配对比较,还可以实现一个读取器,该读取器将要比较的数据读取到同一CAS的两个不同视图中,然后让您的分析引擎进行处理/比较。例如,请参见DKPro TC PairReader_ImplBase及其子类。