分布式人工智能标记语言(DAIML)示例
2016-02-14 22:20
489 查看
DAIML(Distributed Artificial Intelligence Markup Language)是用于分布式人工智能系统中智能语言的标记库。DAIML主要分为Pattern和Template两部分,Pattern用于模式匹配,Template用于回答模板,下面将分别介绍两者的示例。
Pattern示例:
(1) 直接完全匹配模式。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221944966-248594225.png)
(2) Set匹配模式。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221946872-55150029.png)
(3) 带*匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221948107-743508165.png)
(4) 带约束的*匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221949903-1058591257.png)
(5) Set与*的混合匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221951732-1088275418.png)
(6) Set与带约束的*混合匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221953560-210191824.png)
备注:上述过程中的带约束的*除了NUMBER之外,还可以是DATETIME(时间类型)、EN_WORD(英文单词)、EMAIL(邮箱)、TELEPHONE(手机号和座机号)、IPADDRESS(ip地址)、URL(链接)。
完整的示例:
(1) 直接模式。
此种模式将会在命中“你好”之后直接返回“你好!”。
(2) 随机模式。
随机模式在命中Pattern之后,将会从template中的li元素中随机选择一条返回。
(3) 上下文替代模式。
上下文替代模式,将会在template中替换star,例如在问“你好,我是刘凡平”的时候,则“*”指向的内容是“刘凡平”,则返回结果为“你好,很高兴认识刘凡平“。<star index=”1”/>表示取用户模糊匹配的第一个*号的内容。
(4) 递归模式。
递归模式采用”srai“标识,表示不直接返回答案,而是将问题替换为另外一个问题继续寻找。例如用户问”您好,我是刘凡平”的时候,template中将会替换为”你好,我是刘凡平“的问题,这个问题将会再次在DAIML中进行匹配,直至直接返回结果”你好,跟高兴认识刘凡平“。
(5) 带约束的pattern匹配。
上述示例中,并不会直接命中”你好啊“,而是在上一次是匹配的”你好“,当又匹配了”你好啊“才会命中上述category,即上次和当前次的连续匹配。
(6) 单请求模式。
但请求模式在DAIML中最简单的网络请求标记,例如当提问”马云身高“的时候,将会命中上述示例的pattern。在template中并没有直接返回的结果,而是网络请求。其中request标签中的node属性中则为请求的服务器,request标签的值则为请求的内容。ret表示返回结果的表达式,<node index=”1”/>表示第一个请求节点返回的值内容。<script>标签是对返回结果的一次组装,允许简单的表达式,<ret/>表示使用ret的值。例如:命中“马云身高”之后,会请求example服务器,内容为”马云身高“,返回结果为”166cm“,即ret的值为”166cm“,最终通过script返回的结果是”马云的身高是166cm“。
(7) 多请求模式。
多请求模式和单请求模式类似,但是会相对更加复杂,尤其是在对请求结果处理的结果上,在ret的表达中,可能存在采用srai递归再次对结果进行分析,但是最终都会采用script输出结果。
Pattern示例:
(1) 直接完全匹配模式。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221944966-248594225.png)
(2) Set匹配模式。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221946872-55150029.png)
(3) 带*匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221948107-743508165.png)
(4) 带约束的*匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221949903-1058591257.png)
(5) Set与*的混合匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221951732-1088275418.png)
(6) Set与带约束的*混合匹配。
![](http://images2015.cnblogs.com/blog/63066/201602/63066-20160214221953560-210191824.png)
备注:上述过程中的带约束的*除了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输出结果。
相关文章推荐
- NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
- CClientDC,CPaintDC,CWindowDC,CDC
- uva1450 - Airport
- A child container failed during start 解决方案
- 11. Container With Most Water LeetCode
- 服务器中很多的CLOSE_WAIT
- Azure CLI下载Azure Storage Container内的所有文件
- rocketmq3.26研究之Failover下consumer的表现
- http://blog.csdn.net/chenli522/article/details/17001823
- rocketmq3.26研究之Failover下producer的表现
- HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查
- poj 3411 Paid Roads(DFS)
- ORA-12012: error on auto execute of job “SYS”.”BSLN_MAINTAIN_STATS_JOB”
- 硬件访问服务AIDL HAL
- switchover和failover
- Raid的一些记录
- 硬件访问服务AIDL JNI 方式
- POJ 1422 Air Raid(DAG最小路径覆盖)
- 多线程 -- sleep()方法和wait()方法区别
- leetcode Climbing Stairs