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
AJAX

优化program-o

本次优化的主要目的为减少网络数据传输,原版的program-o会将存储各项数据的$response_Array放入表单传递,每次对话都要传递两次,对话越多传递的数据就越多,这样会严重浪费带宽资源,特别是当用户数量很多的时候对服务器的负担也很重。 所以优化的方案很简单,把$response_Array放在$_SESSION中存储,然后就可以使用ajax技术优化用户体验。 首先修改bot/chat.php。 1.替换 if( (isset($_POST[‘action’])) && (trim($_POST[‘chat’])!=””)) 为 if(trim($_POST[‘chat’

  • Leo Chen
    Leo Chen
2 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