用Python语言实现的AIML扩展包可以方便地开发人工智能聊天机器人。 AIML是一种人工智能标记语言( artificialintelligencemarkuplanguage ),是一种简单的XML格式文档。 文本自始至终介绍了如何使用Python语言开发自己的人工智能聊天机器人。
什么是AIML? AIML的开发者是Richard Wallace,他创建了一个名为A.L.I.C.E .的聊天机器人。 此A.L.I.C.E .的AML是XML格式的文档,用于定义匹配模式和答案确定规则。
用于创建标准启动文件的标准启动文件名为std-startup.xml,该文件加载到AIML文件入口中。 在此,制作匹配模式和一次回答决定的样本文件。 例如,匹配的模式被称为load AIML b,其答案加载到aiml大脑中。
loadaimlbbasic _ chat.aimlhellowell,hello! WHAT ARE YOU I&; #039; m a bot,silly! 随机决策回答也可以创建随机决策回答的random_response.aiml文件。 该文件包含&; #039; One time I&; #039; 记录了收到以开头的消息时,随机回答的情况。 此处的“*”表示与任意信息一致。
one time I * goon.howoldareyoubemorespecific.ididnotknowthat.areyoutellingthetruthidon & amp; #039; 安装tknowwhatthatmeans.trytotellmethatanotherwhat are you talking about an animal,vegetableormineralwhatisitpython的AIML模块这意味着必须用python语言实现AIML规范。
PYTHON 2可以使用pip安装aiml扩展包,也可以从https://pypi.python.org/pypi/aiml /下载。
对于pipinstallaimlpython3python3,使用pip安装的软件包为python-aiml。 或者,也可以从https://github.com/Paulo VN/python-aiml下载。
pip install python-AIML最简单的机器人程序实现了最简单的机器人程序。 该程序完成AIML对象的创建、启动文件的学习以及后续的AIML文件的加载。 然后,该程序可以进行聊天,无限进入向用户输入消息的循环。 也可以添加机器人在运行时可以识别的模式。 此模式的识别取决于加载的AIML文件。
importa IML # createthekernelandlearnaimlfileskernel=aiml.kernel ( ) kernel.learn(&; #039; STD-startup.XML&; #039; ) kernel.reearn ) ) STD-startup.XML ) ) press ctrl-ctobreakthisloopwhiletrue:print ( kernel.respond ( input ) & ) #039; 企业消息& amp; #039; ) ) ) ) ) ) ) )使用大脑文件加速加载到AIML文件的时间变长,涉及的学习) 652机器人学习了大量的AIML文件后,可以将机器人的大脑保存到文件中。 这个文件被称为大脑文件,这个文件可以加速今后的执行。
importaimlimportoskernel=aiml.kernel ( ifos.path.isfile ) bot _ brain.brn:kernel.bootstrap:brain file else : #039; STD-startup.XML ),commands=&; #039; loadaimlb&; #039; ( Kernel.savebrain(&; #039; bot_brain.brn ) # kernelnowreadyforusewhiletrue:print ) ( Kernel.reeadyforusewhiletrue ) ( Prnel )
添加Python命令如果需要添加特殊命令,请在响应捕获输入的消息并将其发送到kernel.respond ( )之前进行处理。
wile true:message=input ( enteryourmessagetothebot:& amp; #039; ) if message==&; #039; quit&; #039; exit ( ) ) ) ) )。 elifmessage==&; #039; save&; #039; kernel.bootstrap ( learn files=& amp; #039; STD-startup.XML ),commands=&; #039; loadaimlb&; #039; ( Kernel.savebrain(&; #039; bot_brain.brn&; #039; ) else:bot _ response=kernel.respond ( message ) )。 例如,如果一个用户告诉机器人名称Alice,而另一个用户告诉机器人名称Bob,则机器人可以区分不同名称的用户。 通过将第二个参数传递给respond ( )函数来指定是哪个会话。
sessionid=12345 kernel.respond ( input )、session id )通过会话技术实现每个客户端的个性化对话。 为每个客户端生成单独的会话ID,但必须小心不要将大脑文件保存到全局会话中。
session id=12345 # getsessioninfoasdictionary.containstheinput # andoutputhistoryaswellasanypredicatesknownsesssiondata=keta eachsessionidneedstobeauniquevata thepredicatenameisthenameofsomething/someone # thatthebotknowsaboutinyoursessionwithththebot #039; billy&; #039; andthatyour&; #039; dog&; #039; isnamed&; #039; Brandy&; #039; kernel.setpredicate(&; #039; dog&; #039;&; #039; brandy&; #039;session id ( clients _ dogs _ name=kernel.get predicate ( & amp; #039; dog&; #039;sessionid ) kernel.setbotpredicate ) &; #039; hometown&; #039;
mydogsnameis * thatisinterestingthatyouhaveadognamedwhatismydogsnameyourdog & amp; #039; 根据在snameis .上定义的AIML文件,与机器人的对话如下所示。
My dogs name is Max机器人回答说:
如果你再问thatisinterestingthatyouhaveadognamedmax或机器人:
What is my dogs name机器人回答说:
Your dog&; #039; s name is Max .