首页 > 解决方案 > 有没有办法比较管道之间的 JCas 数据?

问题描述

我正在建立一个基于 UIMA 和 DKPro-Core 的新框架。该框架提供了一种配置 UIMA 管道的简单方法。

在一些内部JCasAnnotator,我想成对或与单个JCas.

runPipeline(createReaderDescription(SomeReader.class),
                somePreprocessingEngineDescription,
                similarityPipelineDescription,
                createEngineDescription(SomeWriter.class)
);

在里面similarityPipelineDescription,我想比较 oneJCas和 all的数据JCas

public void process(JCas aJCas) throws AnalysisEngineProcessException {
        // Compare aJcas with all other JCas objects
}

这是有人可以并且愿意这样做的推荐方式吗?如果是这样,我如何才能访问其他JCas对象?

或者我应该保存我想要比较的数据并在以后进行比较?

标签: javauimadkpro-coreuimafit

解决方案


通过管道传递的 (J)Cas 对象通常会被重复使用。因此,在分析引擎中保留对它们的引用是没有意义的,并且保留对您从它们获得的任何特征结构的引用也不起作用,因为当 (J)Cas 被重置和重用时它们将失效。

您可以将数据写入磁盘,然后将其读入多个 CAS 对象,然后您可以进行比较。

或者,您可以实现一个分析引擎,将您感兴趣的数据提取到一组独立的对象中,并以此为基础进行比较。

如果您想进行配对比较,您还可以实现一个阅读器,它将您希望比较的数据读取到同一 CAS 的两个不同视图中,然后让您的分析引擎处理/比较它。例如,参见 DKPro TC PairReader_ImplBase及其子类。


推荐阅读