前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊天机器人与Alice的AIML

聊天机器人与Alice的AIML

作者头像
Mshu
发布2018-10-31 10:48:35
2.5K0
发布2018-10-31 10:48:35
举报
文章被收录于专栏:咸鱼不闲咸鱼不闲

聊天机器人从20世纪80年代起相继出现:TalkBot、Elbot、eLise、Alice、Laylahbot、爱情玩偶等,其中Alice曾被认为是最聪明的机器人。

1991年,美国科学家兼慈善家休·勒布纳设立人工智能年度比赛——勒布纳奖: 金奖为在音视频中都要让人无法辨认其是真人或机器人。 银奖则是在文本测试中至少让半数裁判误认其为人类。 显然现有的聊天机器人没有一个可以达到这个标准。

目前的聊天机器人有一种可以理解为一个数据库检索工具,将问答存入数据库,(大家称这种库叫语料库)当人提问时它会拿着问题去搜索答案,使用关键词匹配显得稍有技术一点。甚至有好几个答案对应一个问题,可以随机显示或者在逻辑判断一下,选合适的回答,这样就显得不那么枯燥,这属于问题和答案一对多。

另外一种情况是,比如人类问天气如何,它会反问人类在哪个城市,根据城市回答天气。这种比较困难,因为这就不是单纯的检索,这需要一些逻辑判断和记忆。记忆很难做到,这要求它需要记住上面聊到的人和事,这种情况处于属于问题和答案多对一。

机器人有学习功能,一般是人类触发预先设定的关键字使它来保存对话者的答案到数据库。

我们今天就详细聊一聊最聪明的机器人Alice: Alice机器人的核心就是aiml,aiml外观上就像一个xml文件,通过特定标签指定问题和答案,包含一些正则和逻辑判断。而且它有点记忆哦。 AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言) Alice机器人可以不用数据库,因为它的问题和答案都在这个文件里。

一个简单的aiml文档是这样的:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<aiml>
<category>
    <pattern>hi</pattern>
    <template>你好</template>
</category>
</aiml>    

<category>代表一次会话,<pattern>用来匹配对方的问题,如果匹配成功,回答<template>标签里的内容。

<set>标签:(记忆标签)出现在<template>内部。

代码语言:javascript
复制
如果贴身包一层<think>标签会显示 “ 我记住你的名字了!”
如果没有<think>标签会显示 “ 我记住你的名字了!Mshu ”

<template>我记住你的名字了!
    <think>
        <set name="name">
            Mshu
        </set>
    </think>
</template>

<get>标签:(记忆标签)出现在<template>内部。

代码语言:javascript
复制
<category>
    <pattern>我的名字是什么</pattern>
    <template>你的名字是.
        <get name="name"></get>
    </template>
</category>

<condition>标签:相当于if语句,出现在<template>内部。

代码语言:javascript
复制
<template>我的天呢,
     <condition name="sex"> 
            <li value="girl">你好动人啊!</li> 
            <li value="boy">你好帅啊!</li> 
    </condition>
</template>

<that>标签:上句的问题,出现在<category>内部。

代码语言:javascript
复制
用户说 "好 " 的情况有很多,
只有当上一句Alice说的是 " 我们聊聊电影吧 " 时才会匹配到这个<category>

<category>
    <pattern>好</pattern>
    <that>我们聊聊电影吧</that>
    <template>你喜欢哪部电影?</template>
</category>

<input>标签:输出对方曾经说过的话。index的值是1代表本句,2代表上句....

代码语言:javascript
复制
<category>
    <pattern>我上一句说的啥</pattern>
    <template>
        你上一句说的:<input index="2"/>
    </template>
</category>

就简单介绍这几个标签吧,github上有dome https://github.com/Mshu95/Alice

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档