营销型网站建设网站手机,做管理培训的网站有什么,化妆培训学校网站开发,神奇的工作室最新网站目录前言#xff1a;1、简介2、详细说明总结#xff1a; 目录
前言#xff1a;
智能客服客户咨询功能的实现主要依靠的就是Python的AIML库#xff0c;这里就先介绍下AIML。 详细的使用教程可参考#xff1a;https://github.com/andelf/PyAIML 目前大部分AIML只支持Py…目录前言1、简介2、详细说明总结 目录
前言
智能客服客户咨询功能的实现主要依靠的就是Python的AIML库这里就先介绍下AIML。 详细的使用教程可参考https://github.com/andelf/PyAIML 目前大部分AIML只支持Py2.7版本并且不支持中文即使有支持Py3且支持中文的版本AIML的一些功能也有一些缺陷但是黄天不负有心人经过博主不断的搜寻最终找到了一款算是比较稳定的支持Py3版本的AIML。 地址https://github.com/Shuang0420/aiml 后期博主会将自己的项目发布出来到时候大家有兴趣的也可以参考下。
1、简介
AIML是Artificial Intelligence Markup Language的缩写 用于描述一类称为AIML的对象同时部分描述了计算机程序处理这些对象时的表现。AIML是XML语言可扩展标记语言的衍生。
AIML对象是由topic和category单元组成的格式化或未格式化的数据均可。格式化的数据是由字符组成的其中有的组成符号数据有的构成AIML元素。AIML元素将应答数据封装在文档中。包含这些元素的字符数据有可能被AIML解释器格式化也有可能在之后的响应中处理。
aiml中的元素不区分大小写
2、详细说明
1、think元素
型如 thinkset nametopicMe/set/think
放置在template元素里面表示一旦用户的输入匹配到该category时再回复应答的同时给一个变量赋值这里也就是把Me记在脑子里以后就可以用get name”topic”/来取出先前记住的内容。
2、star/表示* 比如有一个匹配模式是pattern* 你 好 *pattern这里pattern元素里的匹配模式是用*号表示任意匹配的但在其他元素里面不能用*号而用star/这个元素来表示。
3、srai元素 表示srai里面的话会被当作是用户输入从新查找匹配模式直到找到非srai定义的回复。例如 srai我 是 star//srai那么机器人会把“我 是 *”当作是用户输入来从新查找匹配模式。PSsrai不能很好的匹配中文
4、condition元素condition元素即为做选择操作时使用的元素类似于if-else语句。 放在template元素里面可以有多个condition元素但不能嵌套目前还不支持有3种形式 condition namename valuevalue你好 /condition
condition namename containsvalue 你好/condition
condition namename existsvalue你好 /condition
Name是预先定义的变量第一种表示name变量的值如果和value相等回复内容就包括”你好”第二种表示name变量的值如果里面包含value这个字符串回复内容就包括“你好”第三种表示name变量的值如果存在value的值回复内容就包括“你好”这个什么意思还不明确 举个使用例子
category
pattern你 好/pattern
template
你好阿
condition name用户名字 value张三
你又来了阿
/condition
/template
/category
a. 情况一如果事先用think设置了变量“用户名字”而且等于“张三”那么用户接受到的回复内容是你好阿你又来了阿 b.情况二如果事先没有定义或者变量“用户名字”的值不等于“张三”那么用户接受到的回复内容是你好阿 写法有一下几种
category
pattern我 头 发 的 颜 色 是 蓝 色 */pattern
template哇塞你很
condition name用户性别 value女 漂亮阿/condition
condition name用户性别 value男英俊阿/condition
/template
/categorycategory
pattern我 头 发 的 颜 色 是 蓝 色 */pattern
template哇塞你很
condition
li name用户性别 value女漂亮阿/li
li name用户性别 value男英俊阿/li
/condition
/template
/categorycategory
pattern我 头 发 的 颜 色 是 蓝 色 */pattern
template哇塞你很
condition name用户性别
li value女 漂亮阿/li
li value男 英俊阿/li
/condition
/template
/categorycategory
pattern我 头 发 的 颜 色 是 蓝 色 */pattern
template哇塞你很
condition
li name用户性别 value女 漂亮阿/li
li好看/li
/condition
/template
/category
这里最后一个li元素表示默认的情况即找不到condition相匹配时就用默认的。
6、gender元素 替换性别以及代名词例如
genderShe told him to take a hike./gender
将被替换成He told her to take a hike跟性别有关的单词都将被替换中文怎么处理不是很清楚。
7、get name””名字/ 即得到name的值。
8、gossip元素 用来把改元素里面的内容保存到gossip.log文件里。
9、if元素 判断元素有以下形式
if nametopic valuecars/if
if nametopic containscars/if
if nametopic existstrue/if
例子
template
if name用户名称 existstrue
你的名字叫 get name”用户名称”/.
else/
你叫什么名字
/if
/template
10、input表示用户输入
例如
input index2/将输出用户倒数第2次的输入看如下对话
用户好阿
机器人你也好你叫什么名字
用户我叫黑山
机器人呵呵你好黑山。
如果有aiml文件里有片断
category
pattern嘿 嘿/pattern
template
gossip你刚才说“input index2/”/gossip
/template
/category
如果这个时候用户输入“嘿嘿”那么机器人将回复你刚才说“我叫黑山”
Index属性的数字表示倒数第几句话1倒数第一句2倒数第2句依此类推。
11、learn filename”xxx.aiml”元素 表示让机器人学习某个aiml文件。
12、li/li元素 可以在random元素或condition等元素当中使用表示一个列表 13、pattern表示匹配模式 里面的内容必须大写可以有星号* 或下划线_星号表示匹配所有任意情况下划线的意义跟星号一样除了不能匹配字典里面Z后面的字母。
14、person和person2 第一个是把第一人称转换成第3人称第2个是把第一人称转成第2人称。person/等于 personstar//person
15、random随机元素 一般和li一起使用表示从列表里随机取一个。
16、sentence元素用来格式化句子
比如
sentencethis is some kind of sentence test./sentence
可以格式化成This is some kind of sentence test.即把句子首字母大写还可以添加标点符号等。如
categorypattern你是谁/patterntemplatesentence你好我是聊天机器人小君/sentence/template
/category
17、star/表示星号 已经不推荐使用只针对0。9版本目前一般要加index属性来使用
例如star index1/看如下对话
用户我的名字叫黑山
pattern* 名 字 叫 */pattern
template呵呵我知道了你的名字叫star index2/。
/template
18、systemsystem元素 表示调用系统函数
例如
systemdate/system表示取系统当前日期
警告使用这个元素要千万小心因为有可能使用户运行你的系统命令。
19、template定义回复的模板。
20、that元素
表示先前机器人说的话例如
category
pattern好/pattern
that一 起 聊 聊 电 影 好 吗 */that
template那你喜欢什么电影那/template
/category
即:如果机器人先前问用户“一起聊聊电影好吗?”而且现在用户回答了“好”那么匹配正确回复内容为“那你喜欢什么电影那”
如果要取前面的前面机器人的话可以用that index”nx,ny”,例如that index”2,?xml:namespace prefix st1 ns urn:schemas-microsoft-com:office:smarttags /1”表示取机器人倒数第2句的话that index”2,1”也等于justbeforethat/
21、thatstar index”n”元素 先前第n个机器人说过的星号部分的话
thatstar/等于thatstar index1/.看个例子
category
pattern你好/pattern
template
计算机 的 型 号 是 什 么
/template
/category category
pattern*/pattern
that* 的 型 号 是 什 么/that
templatestar/
这个型号是thatstar/里面
random
li很好的商品/li
li很流行的商品/li
li很华丽的商品/li
random。
/template
/category
对话场景
用户你好
机器人计算机 的 型 号 是 什 么
用户p4
机器人p4这个型号是计算机里面很好的商品
22、think 记录用户输入且里面的内容不回复给用户。
例如
category
patternI AM FEMALE/pattern
templateThanks for telling me your gender.
think
set namegenderfemale/set
/think
/template
/category
这里把female这个值保存到gender这个变量里且回复内容不包括female。
23、Topic name”film”元素
用来设置主题例如
aiml
topic name功夫category pattern phrase /pattern that phrase /that template phrase /template /category
/topic
/aiml
只有当前的topic系统变量是“功夫”时才会匹配到这里。
24、topicstar index”n”元素用来得到先前倒数第n次谈论的主题。
总结
个人感觉在业务咨询模块包括在整个智能客服的项目中这个AIML知识库即用以上的这些语法组成的知识库的设计是最重要、最耗时的工作因为如果把这个知识库设计好后面可以省去很多事情但是如何才能设计好这个知识库呢这就是一个经验问题了你除了需要有相关的尽可能多的数据外还得了解咨询业务中那些问题是常见的对于一些常见问题你需要怎么去设计这个知识库去匹配等等最终你还需要熟悉整个AIML的标签以及如何将业务问题最优化的使用这些标签来表示毕竟真实的业务咨询场景出现的问题会是各种各样一旦数据量大了之后很有可能整个知识库就会发生冲突如输入一个问题有两个匹配的答案那么这时系统就会崩溃。。。后面就会有一大堆的问题接踵而来。所以感觉这部分跟技术关联不是特别大更多的是和业务关联比较大。