/ AIML

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

先介绍几个名词

1.什么是program-o:

An AIML Interpreter written in PHP with MySQL. Have your own chatbot on your website, writen in PHP with MySQL, reading AIML. If you would like a demo or more information please visit http://www.program-o.com

program-o是一个基于PHP+MYSQL的aiml解释器,可以实现人机对话功能,官网已经被墙。program-o在sf上的项目地址http://sourceforge.net/projects/program-o/

2.什么是aiml

AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。它的雏形是一个名为"A.L.I.C.E." ("Artificial Linguistic Internet Computer Entity")的高度扩展的Eliza机器人。ALICE总共赢得3次每年度的Loebner奖,并且在2004年获得了Chatterbox Challenge的冠军。由于A.L.I.C.E. 的AIML设置是在GNU GPL协议下发布的,所以已经有许多基于该程序和AIML库的“克隆ALICE”出现。目前AIML已经有了Java,Ruby,Python, C ,C#,Pascal等语言的版本。

目前绝大多数的AIML项目都是不支持中文的,国人貌似对这项技术不是很感冒,研究的人比较少,囧……

分析了下program-o的代码,发现不支持中文的主要原因是空格,英文的单词之间都是用空格隔开,而中文则没有使用空格的习惯。

举个例子,我输入 "hello world",program-o会在数据库中查询"hello "(注意hello后面有个空格)开头的数据。如果输入"你好",同样道理,会在数据库中搜索"你 "(你后面有个空格)开头的数据,这就导致了不能支持中文的情况。(实际上,查询的语句比这个复杂的多,这只是整个查询语句中的一部分)

因此解决的方案有两种:

1.查询时把那个空格去掉

2.处理数据库的数据,在每个字后面加上空格。

对比两种解决方案,如果采用方案一,则会出现不支持英文的情况,而方案二则是兼容中英文(实际上应该是兼容绝大多数语言)。

因此采用方案二。

program-o下载:programe-o

修改program-o使之支持中文(一)
Share this