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

      Pattern示例:

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

          

     (2) Set匹配模式。

          

     (3) 带*匹配。

          

    (4) 带约束的*匹配。

         

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

         

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

        

   备注:上述过程中的带约束的*除了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输出结果。

分布式人工智能标记语言(DAIML)示例的更多相关文章

  1. 基于人工智能标记语言 (AIML)和任务型对话系统(Task)的深度智能对话机器人demo

    起因 本demo基于基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型而来 无意间发现一个基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型,但 ...

  2. 可扩展标记语言XML之一:XML的概念、作用与示例

    哈喽大家好啊,乐字节小乐又来给大家分享Java技术文章了.上次已经讲完了Java多线程相关知识(可以看我博客文章), 这次文章将讲述可扩展标记语言XML 一. 标记语言 标记语言,是一种将文本(Tex ...

  3. 模型标准化——预测模型标记语言(PMML)

    https://www.cnblogs.com/pinard/p/9220199.html 在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个 ...

  4. 轻量级文本标记语言-Markdown

    Markdown简介 接触过github的都知道,在发布项目的时候可以建立一个说明文件README.md,这个md文件就是Markdown文本编辑语言的文件. Markdown 是一种轻量级标记语言, ...

  5. 超文本标记语言HTML

    介绍html文档的基本结构,html常用标签的使用,理解html语言制作网页基本原理. html概述和基本结构 html概述 HTML是 HyperText Mark-up Language 的首字母 ...

  6. [Markdown]纯文本标记语言MarkdowPad2--MD语法知识

    ##1.标题 代码 注:# 后面保持空格 # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6 ####### h7 // 错误代码 ######## h8 // ...

  7. XML(可拓展标记语言)

      XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为 ...

  8. JIRA中的标记语言的语法参考

    前言 看到网上有的文章说JIRA是使用Textile这门标记语言,有些语法和Wikitext和Markdown相像.JIRA在2017年进行了一次大更新,某些语法可能和以前不大一样,这里纪录一下常用的 ...

  9. 更适合Pythoner的标记语言Yaml学习总结

    pythonic的标记语言 之前总结过一篇关于小数据存储文件大比拼,当时着重介绍了json,因为它在各类编程语言的通用性较强.但今天,我想给大家介绍一款更加适合pythoner使用的语言Yaml. Y ...

随机推荐

  1. 浅谈Python时间模块

    浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...

  2. JS高级程序设计2nd部分知识要点2

    ECMAScript中所有函数的参数都是按值传递的. 5种基本数据类型: Undfined,Null,Boolean,Number,String. 当代码在一个环境中执行时,会创建变量对象的一个作用域 ...

  3. confluence wiki搭建使用

    1.准备工作 服务器环境:centos6.6x64 IP:172.16.0.203 1)软件包,地址下载 http://pan.baidu.com/s/1ntlBCQP  ,把几个 软件包放在服务器上 ...

  4. pushd

    # MAN 手册原文:        pushd [-n] [+n] [-n]        pushd [-n] [dir]               Adds  a  directory to ...

  5. Combine small files to Sequence file

    Combine small files to sequence file or avro files are a good method to feed hadoop. Small files in ...

  6. nopcommerce3.3简洁版

    从nopcommerce里面分离出了基础框架,包括了用户.新闻.单页面.投票等模块,可以作为快速开发asp.net mvc项目的方案,有兴趣的朋友可以下载看看,由于时间仓促可能会有一些多余的文件没有清 ...

  7. 边工作边刷题:70天一遍leetcode: day 84-2

    要点:这题是combination的应用,从左向右想比从右向左容易. 因为有结果从小到大的要求,暗示用combintion而不是permutation 其实就是从小到大验证因子,每个因子和其对称因子立 ...

  8. POJ 1703 Find them,Catch them ----种类并查集(经典)

    http://blog.csdn.net/freezhanacmore/article/details/8774033?reload  这篇讲解非常好,我也是受这篇文章的启发才做出来的. 代码: #i ...

  9. QC学习三:Excel数据导入导出QC操作流程

    环境: QC9 WindowsXP Office2007   1. 准备 1.通过Excel导入QC,需要下载Microsoft Excel Add-in: http://update.externa ...

  10. f2fs源码分析之文件读写过程

    本篇包括三个部分:1)f2fs 文件表示方法: 2)NAT详细介绍:3)f2fs文件读写过程:4) 下面详细阐述f2fs读写的过程. 管理数据位置关键的数据结构是node,node包括三种:inode ...