zoukankan      html  css  js  c++  java
  • 分布式人工智能标记语言(DAIML)示例

          DAIML(Distributed Artificial Intelligence Markup Language)是用于分布式人工智能系统中智能语言的标记库。DAIML主要分为Pattern和Template两部分,Pattern用于模式匹配,Template用于回答模板,下面将分别介绍两者的示例。

          Pattern示例:

          (1) 直接完全匹配模式。

               H0]$Z$XH$_J~755~KI8MMNO

         (2) Set匹配模式。

               ZE(D30B5BV41YRE%]4C2)HN

         (3) 带*匹配。

               44ENT7G8`RU9P]{YW`TZ5$C

        (4) 带约束的*匹配。

              E}C0Q%GH3YYHAOX0AVG2SMI

       (5) Set与*的混合匹配。

              }9)T[KP[[IO__TFVO]VR[II

       (6) Set与带约束的*混合匹配。

             [IWJ]BZ63[[KGK3R5BU~K_J

       备注:上述过程中的带约束的*除了NUMBER之外,还可以是DATETIME(时间类型)、EN_WORD(英文单词)、EMAIL(邮箱)、TELEPHONE(手机号和座机号)、IPADDRESS(ip地址)、URL(链接)。

       完整的示例:

       (1)  直接模式。

    <category>
            <pattern>你好</pattern>
            <template>
                你好!
            </template>
    </category>

            此种模式将会在命中“你好”之后直接返回“你好!”。

       (2) 随机模式。

    <category>
            <pattern>今天天气真好</pattern>
            <template>
                <random>
                    <li>是呀,天气不错。</li>
                    <li>要不出去走走?</li>
                    <li>希望每天天气都这么好!</li>
                </random>
            </template>
    </category>

           随机模式在命中Pattern之后,将会从template中的li元素中随机选择一条返回。

       (3) 上下文替代模式。

    <category>
            <pattern>你好,我是*</pattern>
            <template>
                你好,很高兴认识<star index="1" /></template>
    </category>

          上下文替代模式,将会在template中替换star,例如在问“你好,我是刘凡平”的时候,则“*”指向的内容是“刘凡平”,则返回结果为“你好,很高兴认识刘凡平“。<star index=”1”/>表示取用户模糊匹配的第一个*号的内容。

      (4) 递归模式。

    <category>
            <pattern>您好,我是*</pattern>
            <template>
                <srai>
                   你好,我是<star index="1" /></srai>
            </template>
    </category>

          递归模式采用”srai“标识,表示不直接返回答案,而是将问题替换为另外一个问题继续寻找。例如用户问”您好,我是刘凡平”的时候,template中将会替换为”你好,我是刘凡平“的问题,这个问题将会再次在DAIML中进行匹配,直至直接返回结果”你好,跟高兴认识刘凡平“。

      (5) 带约束的pattern匹配。

    <category>
            <pattern that="你好">你好啊</pattern>
            <template>
                <random>
                    <li>
                        你好,我们刚刚说过一遍了。
                    </li>
                    <li>
                        你好,客气啥!
                    </li>
                </random>
            </template>
    </category>

           上述示例中,并不会直接命中”你好啊“,而是在上一次是匹配的”你好“,当又匹配了”你好啊“才会命中上述category,即上次和当前次的连续匹配。

      (6) 单请求模式。

    <category>
            <pattern>*身高</pattern>
            <template>
                <request node="example"><star index="1" />身高</request>
                <ret>
                    <node index="1" />
                </ret>
                <script>return "<star index='1' />的身高是<ret/>" </script>
            </template>
    </category>

          但请求模式在DAIML中最简单的网络请求标记,例如当提问”马云身高“的时候,将会命中上述示例的pattern。在template中并没有直接返回的结果,而是网络请求。其中request标签中的node属性中则为请求的服务器,request标签的值则为请求的内容。ret表示返回结果的表达式,<node index=”1”/>表示第一个请求节点返回的值内容。<script>标签是对返回结果的一次组装,允许简单的表达式,<ret/>表示使用ret的值。例如:命中“马云身高”之后,会请求example服务器,内容为”马云身高“,返回结果为”166cm“,即ret的值为”166cm“,最终通过script返回的结果是”马云的身高是166cm“。

       (7) 多请求模式。

    <category>
            <pattern>*比*高吗</pattern>
            <template>
                <request node="example" >
                    <star index="1" />身高
                </request>
               <request node="example" >
                    <star index="2" />身高
                </request>
                <ret>
                    <srai>
                        <node index="1" />-<node index="2" />
                    </srai>
                </ret>
                <script>
                    if("<ret/>".contains("-")) return "<star index='2' />的身高较高,<star index='2' />的身高是<node index="2" />。"; else if("<ret/>"=="0") return "<star index='1' /><star index='2' />一样高。"; else return "<star index='1' />的身高较高,<star index='1' />的身高是<node index="1" />。";
                </script>
            </template>
    </category>
    <category>
            <pattern>*[NUMBER]cm-*[NUMBER]cm</pattern>
            <template>1</template>
    </category>

          多请求模式和单请求模式类似,但是会相对更加复杂,尤其是在对请求结果处理的结果上,在ret的表达中,可能存在采用srai递归再次对结果进行分析,但是最终都会采用script输出结果。

  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/liufanping/p/5189678.html
Copyright © 2011-2022 走看看