聊天机器人与Alice的AIML

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

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

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

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<aiml>
<category>
    <pattern>hi</pattern>
    <template>你好</template>
</category>
</aiml>    

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

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

如果贴身包一层<think>标签会显示 “ 我记住你的名字了!”
如果没有<think>标签会显示 “ 我记住你的名字了!Mshu ”

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

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

<category>
    <pattern>我的名字是什么</pattern>
    <template>你的名字是.
        <get name="name"></get>
    </template>
</category>

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

<template>我的天呢,
     <condition name="sex"> 
            <li value="girl">你好动人啊!</li> 
            <li value="boy">你好帅啊!</li> 
    </condition>
</template>

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

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

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

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

<category>
    <pattern>我上一句说的啥</pattern>
    <template>
        你上一句说的:<input index="2"/>
    </template>
</category>

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的知识天地

从C++到Python,一个游戏程序员的进阶之路

我的第一份工作是一加国内知名游戏公司的逻辑程序员,必须技能是C++,但是一开始只是写语法和C++很类似的一种脚本(后来知道是从一个开源脚本引擎AngelScri...

1551
来自专栏Java社区

做一个网站真的有那么难吗?

1383
来自专栏Java Web

Java学习笔记(0)——了解Java前言:正式开始之前

文 / 我没有三颗心脏 前言: 这里是一些关于写文的原因,目的和其他的有的没的,跟Java没有一点关系,如果是想要学习干货的童鞋可以直接跳过。 系列文章最开...

3447
来自专栏博客园

设计模式学习---策略模式

最近在看"Head First 设计模式"这本书,便想将自己所学的记录下来以加深理解,文中肯定有许多不足之处,请各位前辈们指出.

1054
来自专栏互联网技术栈

领域驱动模型(DDD)

2004年Eric Evans 发表《领域驱动设计——软件核心复杂性应对之道》(Domain-Driven Design –Tackling Complexit...

2591
来自专栏牛客网

秋招时间规划,知识点汇总,以及面试总结一、知识储备二、面试问题三、心态变化四、总结

秋招已结束,作为一个平时潜水的牛友,很感激牛客网和广大牛友们。在我无知时,给与我知识;在我烦恼时,给与我慰藉;现在自己也拿到了心仪的offer,就简单写写这段时...

41011
来自专栏简书专栏

基于pandas、matplotlib、pyecharts的人工智能相关职位招聘市场数据分析

容大教育人工智能班数据分析阶段实战项目:人工智能相关职位数据分析 小组成员:雷坤、韦民童、李波、陶宇 项目周期5天,数据分析为第2天的需求。

2303
来自专栏企鹅号快讯

Python实现拼图游戏

最近,要说最火的编程语言莫过于Python了。除了占据各种网站编程语言的排行榜之外,最劲爆的消息就是教育部将Python语言纳入计算机等级考试,并且山东某学校已...

5939
来自专栏北京马哥教育

从入门到上手,如何快速学会Python?

因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一。在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言。 风靡的另一个原因...

36611
来自专栏BestSDK

看完Python 简史,你就知道他为啥这么火了

Python 的起源 Python的作者,Guido von Rossum,确实是荷兰人。1982年,Guido从阿姆斯特丹大学(University of A...

53710

扫码关注云+社区

领取腾讯云代金券