【问题标题】:How to use AIML with Python如何在 Python 中使用 AIML
【发布时间】:2016-12-10 00:39:16
【问题描述】:

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

我知道你可以用javascript 标记aiml 语法,但我没有找到关于python 的任何文档,除了以下使用<oob>(越界)标签,在背景:

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

&lt;mrl&gt;tags 代表myrobot lab,它是program-ab 的一部分,java framework 是实际机器人技术的一部分。

但我想只在网络上使用我的app...

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

我的目标

我想使用python,因为它操纵NLTK (http://www.nltk.org/),这是一个处理大量文学语料库的自然语言工具包,我想将此库集成到我的机器人功能中。

假设我有一个&lt;pattern&gt;PYTHON&lt;/pattern&gt;,它会运行一个 python 脚本。

脚本将 import nltk(及其语料库)将 AIML patterns 或“问题”链接到 PYTHON templates 或“答案”?

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

【问题讨论】:

    标签: python nltk aiml pandorabots


    【解决方案1】:

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

    我使用符号/分隔符来
    1. 标记需要修改的响应。
    2. 使用分隔符将响应分成需要修改的部分和不需要修改的部分。
    3. 在我的例子中,可修改的部分是 php 函数调用,其中函数已经预定义。
    4. 然后,我将来自 api 的响应与未修改的 bot 响应结合起来,并将其呈现给客户端。

    最终输出是我基本上能够将目标响应转换为 php 调用。


    示例:
    在我的例子中,我在响应的开头使用“#”将响应标记为可修改。我使用“%”标记要修改的段的开头和结尾,并使用“,”分隔函数调用, 和参数。

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

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

    算法:

     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。希望这可以帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多