【问题标题】:How to select and set a covering/covered annotation as a feature in RUTA如何在 RUTA 中选择和设置覆盖/覆盖注释作为特征
【发布时间】:2021-10-19 15:22:40
【问题描述】:

我有一个类似这样的 Ruta 规则,其中 dep 是 DKPro 导入的 Dependency 类型。

dep{}->{MyItem{->
        SETFEATURE("Display", "displayedValue"),
        SETFEATURE("Lemma", dep.Dependent.lemma.value),
        SETFEATURE("Parent", dep.Governor)};};

前两个操作有效。我遇到的问题是第三个动作SETFEATURE("Parent", dep.Governor)。 dep.Governor 返回一个 Token 类型,但我的功能需要另一种类型,它恰好与Governor 共享相同的位置。换句话说,我想要我自己的类型,而不是 dep.Governor,它已经注释了那个管理词。

我不确定如何恢复与 dep.Governor 占用相同空间的注释(我的注释)。理想情况下,我想将它作为变量恢复,以便我可以将它重用于其他功能来执行类似的操作。

a:MyItem [that overlaps dep.Governor]

dep{}->{MyItem{->SETFEATURE("Parent", a)};};

这是一个更精确的例子

d:dep.Dependency{->
    MyItem, 
    MyItem.Display = "Ignore",
    MyItem.Lemma = d.Dependent.lemma.value,
    MyItem.LanguageParent = d,                              
};

MyItem.LanguageParent = d 行会产生这个 Ruta 错误

Trying to access value of feature "type.MyItem:LanguageParent" as "type.MyItem", but range of feature is "de.tudarmstadt.ukp.dkpro.core.api.syntax.type.dependency.Dependency"

【问题讨论】:

  • 您精确示例中的规则适用于我的 Ruta Workbench。也许您的问题已经出现在某个较新版本的 Ruta 中。

标签: uima ruta dkpro-core


【解决方案1】:

我确信有比这更干净的方法,但现在,我正在使用块函数转换类型并将其保存到注释变量中。

BLOCK(ConvertTokenToMyItem) Token{IS(MyItem)} {
    varMyItem:MyItem;          
}

那我用它

d:dep.Dependency{->
    MyItem, 
    MyItem.Display = "Ignore",
    MyItem.Lemma = d.Dependent.lemma.value,
    MyItem.LanguageParent = varMyItem,                              
};

【讨论】:

  • 我想知道为什么您的示例在这里有效,因为标签是某种局部变量,不应该在语句之间保持分配。您的规则应该在没有障碍的情况下运行良好。我建议在隐式操作中使用标签:m:MyItem, m.Display = "Ignore",
  • 我使用全局变量而不是局部变量,并且在我使用它之前调用该块,以便立即使用该变量。感谢您对标签的建议。哦,我注意到你上面的评论。我会试验一下,看看我能不能摆脱这个障碍。
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2017-10-04
相关资源
最近更新 更多