UIMA Ruta中不等于的否定语法问题求助
解决UIMA Ruta非比较级形容词匹配规则问题
正确的规则写法需要注意运算符优先级和否定逻辑的正确语法,以下是可行的几种方案:
方案1:用否定符号包裹判断条件
((POS.PosValue == "ADJA" | POS.PosValue == "ADJD") & -(MorphologicalFeatures.degree == "comp"))
方案2:直接使用不等于运算符!=
((POS.PosValue == "ADJA" | POS.PosValue == "ADJD") & (MorphologicalFeatures.degree != "comp"))
关键错误分析
运算符优先级问题:你最初的规则没有给两个POS条件加外层括号,由于
&优先级高于|,原规则会被解析为POS.PosValue == "ADJA" || (POS.PosValue == "ADJD" & -(...)),逻辑上只匹配ADJA形容词,或ADJD中的非比较级,不符合匹配所有非比较级形容词的需求。错误的运算符使用:UIMA Ruta中没有
-=这种运算符,不等于逻辑要么用!=,要么用-(判断条件)的形式包裹整个等式。
如果你的语料中存在部分形容词没有degree特征的情况,可以进一步优化规则,避免因特征缺失导致的匹配失败:
((POS.PosValue == "ADJA" | POS.PosValue == "ADJD") & -(MorphologicalFeatures.degree exists && MorphologicalFeatures.degree == "comp"))
内容的提问来源于stack exchange,提问作者kiwi-123
相关产品推荐
相关产品推荐

