如何在Python中使用AIML

时间:2016-08-04 03:30:01

标签: python nltk aiml pandorabots

我想将python个脚本集成到pandorabot中写的aiml中。

我知道您可以使用aiml标记javascript语法,但我找不到python上的任何文档,但以下内容使用<oob> (越界)标签,在后台运行服务:

<oob>
  <mrl>
    <service>python</service>
    <method>exec</method>
    <param>myfuction()<param>
  </mrl>
</oob>

<mrl>代码代表myrobot lab,它是program-ab的一部分,java framework代表实际机器人。

但我想仅在网上使用我的app ......

我也遇到了pyAiml,但就目前而言,我还没有看到它如何帮助我实现目标。

我的目标

我想使用python,因为它操纵NLTKhttp://www.nltk.org/),这是一个处理庞大文学语料库的自然语言工具包,我想将此库集成到我的僵尸程序功能中

假设我有一个<pattern>PYTHON</pattern>,它会运行一个python脚本。

该脚本将import nltk(及其语料库),链接AIML patterns或&#34;问题&#34; PYTHON templates,或&#34;答案&#34;?

关于如何实现这一目标的任何线索?非常感谢提前。

1 个答案:

答案 0 :(得分:2)

虽然我没有与pandorabots一起使用python的经验,但我确实使用过php,这就是我从概念上提出来的。目标是类似的,但在我的情况下,我需要从外部api添加pandorabot响应的信息,以下是我做的:

我使用符号/分隔符来 1.标记需要修改的响应 2.使用分隔符将响应分段为需要修改的部分,以及不使用的部分 3.可修改的部分在我的情况下是PHP函数调用,其中函数已经预定义 4.然后,我将来自api的响应与未修改的bot响应相结合,并将其呈现给客户端。

结束输出是我基本上能够将一个aiml响应转换为php调用。

例:
在我的情况下,我在响应开始时使用'#'将响应标记为可修改。我使用'%'标记我想要修改的段的开头和结尾,并使用','来分隔函数调用和参数。

所以存储的aiml响应看起来像:

<template>#Response to be modified %method call,param1% continued response.</template>

Algo:

 So for every response,check if it contains a # at the beginning,  
  If it does, remove the #   (for php I used substr ($response,1) )
   Extract the function call (for php I used explode($str, '%') ) 
    Process function call.

我相信您可以使用类似的逻辑来提取查询并将其发送到nltk。希望这可以帮助。