AIML

基于Program-o的AIML改进版本

原生的AIML只支持简单的*和_匹配,有时候不能很好的满足需求,所以希望修改成用正则表达式来匹配。 今天思考了下这个问题,目前已经初步解决,但仅仅是修改了匹配的代码,评分代码尚未修改。 主要的处理还是在response_handler.php这个文件里。 在findMatch函数中,把原来的SQL语句替换掉 SELECT * FROM $dbn.aiml WHERE ( ((pattern = '') OR (pattern = '*') OR (pattern = '$input') OR ((pattern LIKE '$

  • Leo Chen
    Leo Chen
1 min read
AIML

STU Robot演示地址

STU Robot是由program-o修改而来的智能机器人,完美支持中文。 访问地址:http://sturobot.sinaapp.com/ 使用说明: 输入学习进入内容教学模式; 学习的问题和回答请尽量使用中文; 学习的内容需要通过审核之后才会显示; 目前的学习模式只能学习单句对话,如果要机器人学习连续对话,请到学盟论坛联系leo108。 机器人回答的形式是数字|回答|数字,这样做的具体原因以后会告诉大家。 目前对话库还比较小,希望大家多多“调教”…… 对话示例: USER:你是傻逼 BOT:0|我要告诉我的主人,你说我是傻逼|1 USER:你好 BOT:

  • Leo Chen
    Leo Chen
1 min read
AIML

AIML中文文档第二章

2.AIML文件 定义:一个格式正确的AIML文件应该符合XML定义、符合本文档规定的AIML定义。 每个AIML对象都有一个逻辑结构和物理结构。在物理结构上,每个对象都由topic和category单元组成。逻辑上,AIML对象由明确标记的元素和字符引用组成。 AIML对象可能被XML定义的注释、处理指令或者来自其他命名空间的XML内容所覆盖。注释和处理指令不会被AIML解释器处理。外来的内容可能通过AIML解释器传输到应答器,但不会被AIML解释器处理。 下面,我们从不同的方面重新定义AIML的对象结构,尽管在绝大多数情况下仅仅是重复和XML相同的定义。某些情况下,AIML解释器会有比XML处理器更多的限制。 2.1 格式正确的AIML文件 定义:如果一个文件符合本文档中的定义,并且符合XML格式良好的定义,则成为格式正确的AIML文件。(http://www.w3.org/TR/2000/

  • Leo Chen
    Leo Chen
3 min read
AIML

AIML中文文档第一章

1.介绍 AIML是Artificial Intelligence Markup Language的缩写, 用于描述一类称为AIML的对象,同时部分描述了计算机程序处理这些对象时的表现。AIML是XML语言(可扩展标记语言)的衍生。在结构上,AIML对象遵守XML文档规则,因此AIML对象也可以被包含在XML文档中。由于XML本身严格遵守SGML(the Standard Generalized Markup Language,标准通用标记语言),AIML也严格遵守SGML文档规则。 AIML对象是由topic和category单元组成的,格式化或未格式化的数据均可。格式化的数据是由字符组成的,其中有的组成符号数据,有的构成AIML元素。AIML元素将应答数据封装在文档中。包含这些元素的字符数据有可能被AIML解释器格式化,也有可能在之后的响应中处理。 【定义:这是一个被称为AIML解释器的软件组件,用于读取AIML对象并依据组件结构提供应用级的功能。

  • Leo Chen
    Leo Chen
5 min read
AIML

修改program-o使之支持中文(四)

接下来要修改的是后台管理部分,主要要修改的地方是插入或者更新数据库时对中文进行处理。 所有要修改的文件都在admin\funcs目录下。 打开config.php,在最后添加两个函数 //----------------------------------------------------------- //formatchinese($str) add a space into each Chinese character //----------------------------------------------------------- function formatchinese($str){ if(preg_match_all("/[\x{4e00}-\x{9fa5}]{1}/u&

  • Leo Chen
    Leo Chen
2 min read
AIML

修改program-o使之支持中文(三)

接下来是安装program-o,步骤很简单就不说了。 安装完毕之后就可以测试对话了,内置的英文对话库很全,基本上都能对上来,大家可以先和它玩一玩。 下面就要开始修改了,首先是前台人机对话的代码。 打开bot/response_handler.php,在最后面加上 //----------------------------------------------------------- //formatchinese($str) add a space into each Chinese character //----------------------------------------------------------- function formatchinese($str){ if(preg_match_all("/[\x{

  • Leo Chen
    Leo Chen
1 min read
AIML

修改program-o使之支持中文(二)

在修改prorame-o的代码之前需要做一些准备工作,主要是文件编码的转换。 因为prorame-o的默认编码是iso-8859-1,使用中文的话会乱码,所以需要将编码修改为utf-8。 需要用到的工具是notepad++  。 修改网页中的编码设置,打开notepad++,按快捷键ctrl+f,切换到“文件查找”选项卡,查找目标填入“charset”,文件类型填“.”,目录选择prorame-o所在的目录。如图: 点击“全部查找”之后,稍等一会,应该会在10个文件中找到19处,如图: 双击搜索结果,会打开相对应的文件,并跳转到对应的那一行 把charset=iso-8859-1全部修改为charset=utf-8 把CHARSET=latin1全部修改为CHARSET=utf8

  • Leo Chen
    Leo Chen
1 min read