当前位置:   article > 正文

10分钟构建人人都能学会的个性化聊天机器人-使用AIML(王小草博客)

使用aiml

本文主要介绍什么是aiml, 如何python环境安装aiml,如何使用与制作一个属于自己的聊天机器人

1 aiml初识

1.1 demo展示

用aiml写了一个简单的微信聊天机器人的demo,暂且叫小草聊天机器人吧哈哈哈,以下为部分聊天截图:(太懒了截图之后补上,我把测试版的聊天机器人放在我个人微信上了,想亲测的可以直接来我个人微信撩它–咳咳,但不准撩主人)

1.2 什么是aiml

AIML由Richard Wallace发明。他设计了一个名为 A.L.I.C.E. (Artificial Linguistics Internet Computer Entity 人工语言网计算机实体) 的机器人,并获得了多项人工智能大奖。AIML是一种为了匹配模式和确定响应而进行规则定义的 XML 格式。(摘自网络)

1.3 学习资料

初级读物,可翻阅 Alice Bot’s AIML Primer
同样可以在 AIML Wikipedia page 了解更多 AIML 的内容
aiml tutorial: https://www.tutorialspoint.com/aiml/aiml_star_tag.htm
pandorabots官网: https://www.pandorabots.com
博客: http://python.jobbole.com/82007/

2 aiml python安装与使用简介

2.1 安装Python aiml库

在终端输入命令:pip install aiml

但是使用以上方式安装对于处理中文有点点难搞,因此也可以下载github上这位大哥的工程:https://github.com/WangXiaoCao/PyAIML
(我在他基础之上做了小改动,主要是去掉了处理输出的中文空格)

2.2 .aiml格式介绍

创建一个后缀为.aiml的文件,内容与格式如下:

<aiml version="1.0.1" encoding="UTF-8">
<!-- basic_chat.aiml -->
<aiml>

    <category>
        <pattern>你好</pattern>
        <template>
            嗨,好久不见
        </template>
    </category>

    <category>
        <pattern>你是谁</pattern>
        <template>
            我是灰太狼
        </template>
    </category>

</aiml>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

标签解释:
<aiml>:定义一个aiml文件的开始与结束
<category>:定义一个知识的单元
<pattern>:定义一个模板,来匹配用户可能的输入
<template>:定义根据用户的输入需要返回的回答

因此表现在聊天界面的效果就是:

user:你好
bot:嗨,好久不见
user:你是谁
bot:我是灰太狼
  • 1
  • 2
  • 3
  • 4

但是光是以上如此简单的模式,要适应大量的人类语言与句式,显得异常笨重,aiml提供了许多其他tag来帮助人们构建更有效更灵活的问答模式。在介绍这些标签之前,先介绍一下其他文件

2.3 std-startup.xml启动文件介绍

在正式构建聊天机器人之前,需要创建一个名为std-startup.xml的启动文件,用于作为加载AIML文件的主入口点

<aimlversion="1.0.1"encoding="UTF-8">
    <!--std-startup.xml-->

    <!--<category>作为AIML的原子级单元-->
    <category>

        <!--匹配用户输入的模式-->
        <!--如果用户输入"LOADAIMLB"-->
        <pattern>LOAD AIML B</pattern>

        <!--<Template>用来响应模式-->
        <!--<learn>是一个aiml文件-->
        <template>
            <learn>/Users/wangxiaocao/PycharmProjects/wechat_chatbot/resources/basic_chat.aiml</learn>
            <learn>/Users/wangxiaocao/PycharmProjects/wechat_chatbot/resources/greeting.aiml</learn>
            <!--在这下面你能添加更多的aiml文件-->
            <!--<learn>more_aiml.aiml</learn>-->
        </template>

    </category>

</aiml>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

解释:我们想要匹配模式load aiml b,然后让它加载我们的aiml大脑作为响应

2.4 启动程序

# -*- coding: utf-8 -*-
import aiml
import sys
import os

def get_module_dir(name):
    path = getattr(sys.modules[name], '__file__', None)
    if not path:
        raise AttributeError('module %s has not attribute __file__' % name)
    return os.path.dirname(os.path.abspath(path))


alice_path = get_module_dir('aiml') + '/alice'

#切换到语料库所在工作目录
os.chdir(alice_path)

alice = aiml.Kernel()
alice.learn("std-startup.xml")
alice.respond('load aiml b')

while True:
print alice.respond(raw_input("Enter your message >> "))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3 aiml的标签详解

3.1 basic tag

基本标签:在上文中已经介绍了
<aiml> − defines the beginning and end of a AIML document.
<category> − defines the unit of knowledge in Alicebot’s knowledge base.
<pattern> − defines the pattern to match what a user may input to an Alicebot.
<template> − defines the response of an Alicebot to user’s input.

3.2 <star>

可以用*表示1个或多个任意字符

<category>
    <
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/374687
推荐阅读
相关标签
  

闽ICP备14008679号