1

这个小问题让我熬了几个晚上。

我有以下 UIMA Ruta 脚本:

(Action.type=="info_req"{->CREATE(CompAction,"type"=Action.type)}
Preposition? Article? ServiceItem{->FILL(CompAction,"target"=ServiceItem, "num_targets"=1),SHIFT(CompAction,1,4)}
(Preposition? Article? ServiceItem)?{
    ->FILL(CompAction, "target2"=ServiceItem, "num_targets"=2, "selection"="OR") })
    {->SHIFT(CompAction,1,1)}
    ;

它应该与以下句子匹配:

我想要关于黄金信用卡的卡片信息

  • 注释操作匹配“我想要信息”
  • 注释介词匹配“关于”
  • 注释文章匹配“the”
  • Annotation ServiceItem 匹配“卡”和“金信用卡”

期望的结果应该是具有以下特性的 CompAction 注解:

  • 功能目标:(类型ServiceItem)卡
  • Feature target2:(类型ServiceItem)金信用卡

不幸的是,我得到的结果是:

  • 功能目标:(类型ServiceItem)卡
  • 功能目标2:(类型ServiceItem)卡

即我两次得到相同的ServiceItem,这似乎是一个引用问题,除非我做错了什么。

4

1 回答 1

0

对于 UIMA Ruta 2.1.0:FILL 操作考虑特征值的完整规则匹配,因此,第二个 FILL 操作也选择第一个合适的注释。此问题的解决方案可能是对不同的 ServiceItem 注释使用不同的类型(子类型)以区分它们。

对于 UIMA Ruta 2.2.0:该功能已实现并且已在当前主干中可用。该规则应按需要执行。

于 2014-01-16T14:10:06.593 回答