首页 > 解决方案 > 在 Ruta 的 CONTAINS 语句中使用条件

问题描述

我正在使用 CLAMP ( https://clamp.uth.edu/ ) 中实现的 Ruta 创建规则。作为步骤之一,我想识别所有包含温度注释的句子。

所以我希望能够在 CONTAINS 函数中为注释指定属性值,如下所示:

Sentence{CONTAINS(ClampNameEntityUIMA{"semanticTag", "Temperature"}) 
 -> CREATE( ClampNameEntityUIMA , "semanticTag" = "TemperatureSentence")};

有效的声明是:

Sentence{CONTAINS(ClampNameEntityUIMA) 
 -> CREATE( ClampNameEntityUIMA , "semanticTag" = "TemperatureSentence")};

但这会标记所有句子,而不管包含的注释的特征值如何。CLAMP 不允许动态创建类型,因此我无法将新类型声明为满足条件的注释的占位符。所以我只能使用现有的类型 - ClampNameEntityUIMA - 我只能检查特征值来区分注释类。

有没有办法在 CONTAINS 函数中包含附加条件?或者我可以在不必声明新类型的情况下操作注释吗?

标签: ruta

解决方案


CONTAINS 条件不支持您需要的内容。如果在您的示例中需要更复杂的条件,则需要切换到内联规则作为条件。如下规则可以解决您的问题:

Sentence{-> CREATE(ClampNameEntityUIMA, "semanticTag" = "TemperatureSentence")}
  <- {e:ClampNameEntityUIMA{e.semanticTag == "Temperature"};};

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


推荐阅读