执行EXEC操作后无法识别的模式

时间:2018-04-10 07:36:29

标签: uima ruta

我对Apache UIMA Ruta(2.6.1)有一个奇怪的问题,我不明白。我制作了以下脚本来演示这种情况。我认识到输入文本中的一些模式并从中创建模式。

执行EXEC后,无法识别基于注释组合的动作模式:

对于以下脚本,我尝试使用输入文本" aaa bbb"。 PATTERN_A被识别(创建)但PATTERN_B没有。

仍然可识别单个注释(已创建AAA_2)。

我在EXEC命令之前和之后序列化为XCAS(cas)对象,两个文件都相同。

注意:TableLookupAnalysisEngine在此示例中使用空的ruta脚本。如果我在脚本中添加自定义注释,它也可以工作。

ENGINE TableLookupAnalysisEngine;

DECLARE AAA;
DECLARE AAA_1;
DECLARE AAA_2;
DECLARE BBB;
DECLARE PATTERN_A;
DECLARE PATTERN_B;

"aaa"{-> MARK(AAA)};
"bbb"{-> MARK(BBB)};

AAA{-> AAA_1};
(AAA BBB){-> PATTERN_A};

Document{-> CONFIGURE(TableLookupAnalysisEngine, "dictRemoveWS" = true),
                EXEC(TableLookupAnalysisEngine, {AAA, BBB})};

AAA{-> AAA_2};

// Not recognized -> internal index numbers changed?
(AAA BBB){-> PATTERN_B};

2 个答案:

答案 0 :(得分:1)

我们在Eclipse Workbench中尝试了相同的测试并获得了预期的结果。 EXEC命令后的模式匹配仍然有效。

因为在我们的项目和Eclipse Workbench中使用的XML描述符文件相同,我们查看了引擎执行代码:

我们更改了以下声明来解决问题。

自:

JCas jCas = CasCreationUtils.createCas(rutaEngine.getAnalysisEngineMetaData()).getJCas();

要:

JCas jCas = rutaEngine.newJCas();

答案 1 :(得分:0)

您需要通过在TypeList中添加它们作为第二个参数来指定内部Ruta重建索引的相关类型。文档中有一个例子:

ENGINE NamedEntities;
Document{->EXEC(NamedEntities, {Person, Location})};

在您的示例中,您可能需要添加{AAA, BBB}

免责声明:我是UIMA Ruta的开发人员: