我正在编写ruta scirpts来捕获文本中的sbp和dbp注释,如“bp:120 / 80mmHg”。我想要获得的是: 签名:name =“sbp”,value = 120,unit = mmHg 签名:name =“dbp”,value = 80,unit = mmHg
任何人都可以告诉我该怎么做?感谢
答案 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的开发人员