uimaFIT:构建 JCas 实例列表
uimaFIT: Build up a list of JCas instances
为了评估我的 uimaFIT 管道,我想建立一个由管道注释并写入 xmi 文件的 JCas 实例列表。在我的评估中,我阅读了 xmi 文件并希望访问每个 xmi 文件的 JCas 并将其保存在列表中以便进一步处理它们。
JCasIterable goldIterable = SimplePipeline.iteratePipeline(xmiReaderGold);
JCasIterator goldIterator = goldIterable.iterator();
ArrayList<JCas> goldJCasList = new ArrayList<JCas>();
while (goldIterator.hasNext()) {
JCas goldJCas = goldIterator.next().getCas().getJCas();
goldJCasList.add(goldJCas);
}
问题在于,在 while 循环的每次迭代中,列表中已在迭代中添加的 JCas 都会被当前 JCas 覆盖。我该如何避免这种情况以及如何正确建立我的列表?在迭代器上调用 next()
并将 JCas 添加到列表之前,我尝试使用 JCas goldJCas = JCasFactory.createJCas()
创建一个新的 JCas 对象。但我仍然得到相同的结果。
iteratePipeline
返回的 JCas 实例始终是同一个 - 它被重新使用。这是出于性能原因。
如果你想要一个 JCas-es 列表,你可以像这样做
CollectionReader reader = CollectionReaderFactory.createReader(MyReader.class, <parameters>);
List<JCas> documents = new ArrayList<>();
while (reader.hasNext()) {
JCas document = JCasFactory.createJCas();
reader.getNext(document.getCas());
documents.add(document);
}
为了评估我的 uimaFIT 管道,我想建立一个由管道注释并写入 xmi 文件的 JCas 实例列表。在我的评估中,我阅读了 xmi 文件并希望访问每个 xmi 文件的 JCas 并将其保存在列表中以便进一步处理它们。
JCasIterable goldIterable = SimplePipeline.iteratePipeline(xmiReaderGold);
JCasIterator goldIterator = goldIterable.iterator();
ArrayList<JCas> goldJCasList = new ArrayList<JCas>();
while (goldIterator.hasNext()) {
JCas goldJCas = goldIterator.next().getCas().getJCas();
goldJCasList.add(goldJCas);
}
问题在于,在 while 循环的每次迭代中,列表中已在迭代中添加的 JCas 都会被当前 JCas 覆盖。我该如何避免这种情况以及如何正确建立我的列表?在迭代器上调用 next()
并将 JCas 添加到列表之前,我尝试使用 JCas goldJCas = JCasFactory.createJCas()
创建一个新的 JCas 对象。但我仍然得到相同的结果。
iteratePipeline
返回的 JCas 实例始终是同一个 - 它被重新使用。这是出于性能原因。
如果你想要一个 JCas-es 列表,你可以像这样做
CollectionReader reader = CollectionReaderFactory.createReader(MyReader.class, <parameters>);
List<JCas> documents = new ArrayList<>();
while (reader.hasNext()) {
JCas document = JCasFactory.createJCas();
reader.getNext(document.getCas());
documents.add(document);
}