You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UIMA Ruta中添加否定条件:仅标注无限定词的名词

UIMA Ruta:给无限定词的主格名词添加标注

问题描述

我正在使用UIMA Ruta,希望仅对没有限定词的主格名词(已预先标记为N)进行标注。尝试以下代码时出现语法错误:

(N & MorphologicalFeatures.case == "nom" &  -PARTOF(xx.NULLARTIKEL)

错误信息:

  • Mismatched Input: Expecting "SEMI" but found ")".
  • Mismatched Input: Expecting "RPAREN" but found "(".
  • Syntax error: -

也尝试了无语法错误但不生效的代码:

(N & MorphologicalFeatures.case == "nom" )
W*?
V
{-PARTOF(ConstructsA1.HASARTICLE),
    -> CREATE(type.annotation.Construct,1,1,"constructID"=xx, "span"=true)}; 

此外,Dependency{-REGEXP(Dependency.DependencyType, "det")因名词常存在多个依存标注而无效。以下写法同样不生效:

  • (N & MorphologicalFeatures.case =="nom" & Token{-REGEXP(xx.HASARTICLE)})
  • (N & MorphologicalFeatures.case =="nom" & Dependency.DependencyType !="det")

正确的否定条件写法

UIMA Ruta中,针对“不存在某类关联/特征”的否定逻辑,需要注意范围匹配和否定运算符的正确使用,以下是两种可行方案:

方案1:基于PARTOF的否定(检查无NULLARTIKEL父节点)

原代码的语法错误源于括号不匹配,且否定PARTOF需用!PARTOF或条件块内的{-PARTOF(...)}。若xx.NULLARTIKEL是标记限定词的注解类型,正确写法如下:

// 匹配主格名词,且该名词不属于NULLARTIKEL的子节点
(N & MorphologicalFeatures.case == "nom" & !PARTOF(xx.NULLARTIKEL))
-> CREATE(type.annotation.Construct, 0, 0, "constructID"=xx, "span"=true);

如果需要结合后续动词(如原代码中的W*? V),需明确条件作用于名词:

(N & MorphologicalFeatures.case == "nom") W*? V
{-PARTOF(xx.NULLARTIKEL, 1),  // 1表示作用于规则中的第一个匹配元素(即N)
    -> CREATE(type.annotation.Construct, 1, 1, "constructID"=xx, "span"=true)};

方案2:基于依存关系的否定(检查无det依存)

针对多依存标注的问题,不能直接判断单个Dependency.DependencyType != "det",而是要检查不存在任何类型为det的依存关系指向该名词,需使用!EXISTS运算符:

// 匹配主格名词,且不存在指向它的det类型依存
(N & MorphologicalFeatures.case == "nom" & !EXISTS(Dependency:Dependency.DependencyType=="det" & DEPENDENT==@THIS))
-> CREATE(type.annotation.Construct, 0, 0, "constructID"=xx, "span"=true);

或使用条件块写法:

(N & MorphologicalFeatures.case == "nom")
{!EXISTS(Dependency:Dependency.DependencyType=="det" & DEPENDENT==@CURRENT),
    -> CREATE(type.annotation.Construct, 0, 0, "constructID"=xx, "span"=true)};

关键注意点

  • !PARTOF(X):表示当前注解不属于X类型注解的子节点,直接写在注解匹配条件中。
  • {-PARTOF(X, n)}:在规则的条件块中使用,n指定作用于规则中的第n个匹配元素(从1开始计数)。
  • !EXISTS(...):用于检查当前上下文不存在满足条件的注解,适合处理多标注场景(如多个依存关系)。
  • 确保注解类型(xx.NULLARTIKEL、Dependency)的命名空间和定义正确,避免因类型不存在导致规则不生效。

内容的提问来源于stack exchange,提问作者kiwi-123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 14:03:15