有没有办法比较管道之间的 JCas 数据?
Is there a way to compare JCas data between pipelines?
我正在建立一个基于 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
对象?
还是把要比较的数据先存起来,以后再比较?
通过管道传递的 (J)Cas 对象通常会被重新使用。因此,在分析引擎中保留对它们的收集引用是没有意义的,并且保留对您从它们获得的任何特征结构的引用也没有用,因为当 (J)Cas 被重置和重用时它们将失效。
您可以将数据写入磁盘,然后将其读入多个 CAS 对象,然后您可以比较这些对象。
或者,您可以实施一个分析引擎,将您感兴趣的数据提取到一组独立的对象中,并以此为基础进行比较。
如果您想进行配对比较,您还可以实施 reader 将您希望比较的数据读取到同一 CAS 的两个不同视图中,然后让您的分析引擎处理/比较它。例如,参见 DKPro TC PairReader_ImplBase 及其子类。
我正在建立一个基于 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
对象?
还是把要比较的数据先存起来,以后再比较?
通过管道传递的 (J)Cas 对象通常会被重新使用。因此,在分析引擎中保留对它们的收集引用是没有意义的,并且保留对您从它们获得的任何特征结构的引用也没有用,因为当 (J)Cas 被重置和重用时它们将失效。
您可以将数据写入磁盘,然后将其读入多个 CAS 对象,然后您可以比较这些对象。
或者,您可以实施一个分析引擎,将您感兴趣的数据提取到一组独立的对象中,并以此为基础进行比较。
如果您想进行配对比较,您还可以实施 reader 将您希望比较的数据读取到同一 CAS 的两个不同视图中,然后让您的分析引擎处理/比较它。例如,参见 DKPro TC PairReader_ImplBase 及其子类。