我正在建立一个基于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对象的访问权限?
或者我应该保存我想要比较的数据,并在以后进行比较?
发布于 2019-04-12 16:01:04
通过管道传递的(J)Cas对象通常会被重用。因此,在分析引擎中保持对它们的收集引用是没有意义的,并且保持对您从它们获得的任何特征结构的引用也不起作用,因为当(J)Cas被重置和重用时,它们将被无效。
您可以将数据写入磁盘,然后将其读取到多个CAS对象中,然后可以对这些对象进行比较。
或者,您可以实现一个分析引擎,将您感兴趣的数据提取到一组独立的对象中,并在此基础上进行比较。
如果你想做配对比较,你也可以实现一个读取器,它将你想要比较的数据读取到同一CAS的两个不同的视图中,然后让你的分析引擎处理/比较。例如,请参阅DKPro TC PairReader_ImplBase及其子类。
https://stackoverflow.com/questions/55641157
复制相似问题