UIMA Ruta结合MATCHEDTEXT和Star或Plus Reluctant

时间:2016-10-25 16:28:43

标签: uima ruta

我想使用MATCHEDTEXT在多个单词上创建一个匹配。为了选择多个单词,我想使用Star或Plus Reluctant量词。如果MATCHEDTEXT部分后面没有规则元素,但是如果有一个,就像我的例子中的最后一个“SW”那样,“CW +?”部分不匹配。

我的测试字符串

small Large Large small.

我的Ruta规则

STRING test;
DECLARE myObject(STRING label);
SW (CW+? { -> MATCHEDTEXT(test), CREATE(myObject, "label"=ao) }) SW;

2 个答案:

答案 0 :(得分:2)

这是UIMA Ruta< = 2.5.0中的错误。匹配失败,因为不情愿的量词对组合规则元素有一些问题。

您可以通过删除不需要的组合规则元素来解决您的问题:

SW CW+? { -> MATCHEDTEXT(test), CREATE(myObject, "label"="x")} SW;

......或避免不情愿的量词,这也是不需要的:

SW CW+ { -> MATCHEDTEXT(test), CREATE(myObject, "label"="x")} SW;

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

答案 1 :(得分:1)

使用Plus Greedy:

<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:b="http://bootsfaces.net/ui"
                template="/WEB-INF/templates/app_template.xhtml"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:f="http://xmlns.jcp.org/jsf/core"
                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
                xmlns:p="http://primefaces.org/ui">

使用Plus Reluctant:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:b="http://bootsfaces.net/ui"
      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

    <h:head>
        <meta charset="utf-8" />
        <title>#{i18n['page.title']}</title>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <meta name="revisit-after" content="7 days" />
        <meta name="DISTRIBUTION" content="GLOBAL" />
        <meta http-equiv="PRAGMA" content="NO-CACHE" />
    </h:head>

    <h:body>
        <c:set var="root" value="#{request.contextPath}/" />
        <ui:insert name="navbar">
            <ui:include src="/WEB-INF/content/navbar.xhtml"/>
        </ui:insert>
        <b:container>
            <ui:insert name="content" />
        </b:container>
        <ui:insert name="footer">
            <ui:remove>
                <ui:include src="/WEB-INF/content/footer.xhtml"/>
            </ui:remove>
        </ui:insert>
    </h:body>
</html>