uima ruta在一个ruta规则中创建两个注释

时间:2018-06-14 08:08:38

标签: uima ruta

我正在编写ruta scirpts来捕获文本中的sbp和dbp注释,如“bp:120 / 80mmHg”。我想要获得的是:    签名:name =“sbp”,value = 120,unit = mmHg    签名:name =“dbp”,value = 80,unit = mmHg

任何人都可以告诉我该怎么做?感谢

1 个答案:

答案 0 :(得分:1)

以正确的方式正确执行此操作需要大量额外的资源和分析引擎,例如,针对麦肯酒的概念映射,针对任意复杂数值的检测,对单位和度量的检测(也包括斜线枚举),针对si基本单位的归一化等等。

这是一个简单的Ruta脚本作为初始原型(已通过2.6.1测试):

DECLARE BloodPressure (DOUBLE systolic, DOUBLE diastolic, STRING unit);

DECLARE Unit, BloodPressureIndicator;

// mock annotations, replace with dictionary or unit parser
"mmHg" -> Unit;
"bp" -> BloodPressureIndicator;

DOUBLE d1, d2;
(BloodPressureIndicator COLON? NUM{PARSE(d1)} SPECIAL.ct=="/" NUM{PARSE(d2)} u:Unit)
    {-> CREATE(BloodPressure, "systolic" = d1, "diastolic" = d2, "unit" = u.ct)};

这里是创建两个不同类型注释的示例:

DECLARE BloodPressure (DOUBLE value, STRING unit);
DECLARE BloodPressure SBP, DBP;

DECLARE Unit, BloodPressureIndicator;

// mock annotations, replace with dictionary or unit parser
"mmHg" -> Unit;
"bp" -> BloodPressureIndicator;

DOUBLE d1, d2;
(BloodPressureIndicator COLON? 
    NUM{PARSE(d1) -> CREATE(SBP, "value" = d1, "unit" = u.ct)} 
    SPECIAL.ct=="/" 
    NUM{PARSE(d2) -> CREATE(DBP, "value" = d2, "unit" = u.ct)}
    u:Unit);

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