gpt4 book ai didi

java - 如何比较 Ruta 规则中两个不同注释的特征?

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:52 26 4
gpt4 key购买 nike

我正在使用 UIMA Ruta 处理文本,并且想要删除重复的注释。如果某些特征(例如名称)具有相同的值,我认为注释是重复的。我尝试了不同的方法,但均未成功,但我希望以下示例能够让您了解我正在尝试做的事情:

STRING nameVal;
Person {-> GETFEATURE("name", nameVal)}
ANY+?
Person.name == nameVal {-> UNMARK(Person)};

我也尝试过这种变化:

STRING nameVal;
Person {-> GETFEATURE("name", nameVal)}
ANY+?
Person {-> UNMARK(Person)} <- { Person.name == nameVal; };

如果我将变量 nameVal 替换为文字(请参阅下一个示例),则规则运行良好,并且似乎接近我想要的,但并不完全如此。

Person
ANY+?
Person.name == "Mustermann" {-> UNMARK(Person)};

我认为,问题在于,当评估比较时,全局变量尚未初始化。 Ruta 有没有办法将同一规则内第一个匹配注释的特征与最后一个匹配注释的特征进行比较?

最佳答案

是的,问题是在评估所有条件后,当完整规则匹配时执行操作。您需要一个操作来将特征值分配给变量,但您需要一个条件来将变量与另一个特征进行比较。

然而,在 Ruta 中有很多方法可以解决这个问题,例如使用更多规则、BLOCK 或 Action 内联规则。最好的方式是标签表达。 UIMA Ruta 2.5.0 让我们的生活变得更加轻松。你可以这样写:

p1:Person # p2:Person{p1.name == p2.name -> UNMARK(Person)};

p1:Person # Person.name==p1.name{ -> UNMARK(Person)};

如果使用字符串列表,您可能可以编写更快的规则:如果该值包含在列表中,则取消标记注释,如果没有,则将该值添加到列表中。

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

关于java - 如何比较 Ruta 规则中两个不同注释的特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com