如何通过 Python 使用 AIML
How to use AIML with Python
我想将 python
脚本集成到我用 aiml
编写的 pandorabot
中。
我知道您可以使用 javascript
标记 aiml
语法,但我没有找到任何关于 python
的文档,除了以下使用 <oob>
(越界)标签,运行后台宁服务:
<oob>
<mrl>
<service>python</service>
<method>exec</method>
<param>myfuction()<param>
</mrl>
</oob>
<mrl>
tags 代表 myrobot lab,它是 program-ab
的一部分,java framework
代表实际的机器人。
但我想只在网络上使用我的 app
...
我也遇到了 pyAiml
,但目前我还没有看到它如何帮助我实现我的目标。
我的目标:
我想使用 python
因为它操纵 NLTK
(http://www.nltk.org/),一个处理大量文学语料库的自然语言工具包,我想将这个库集成到我的机器人功能。
假设我有一个 <pattern>PYTHON</pattern>
,它会 运行 一个 python 脚本。
脚本会 import nltk
(及其语料库),将 AIML patterns
或 "questions" 链接到 PYTHON templates
,或 "answers"?
关于我如何实现这一目标的任何线索?非常感谢。
虽然我没有使用 python 与 pandorabots 一起工作的经验,但我确实使用过 php,这就是我在概念上想出的。 objective 类似,但在我的例子中,我需要为来自外部 api 的潘多拉机器人响应添加信息,以下是我所做的:
我用symbols/delimiters到
1.标记需要修改的响应。
2. 使用分隔符将响应分成需要修改的部分和不需要修改的部分。
3. 在我的例子中,可修改的部分是 php 函数调用,其中函数已经预定义。
4. 然后,我将 api 的响应与未修改的机器人响应结合起来,并将其呈现给客户端。
最终输出是我基本上能够将 aiml 响应翻译成 php 调用。
示例:
在我的例子中,我在响应的开头使用“#”来将响应标记为可修改。我使用“%”来标记我要修改的段的开头和结尾,并使用“,”来分隔函数调用, 和参数。
所以存储的 aiml 响应看起来像:
<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。希望这可以帮助。
我想将 python
脚本集成到我用 aiml
编写的 pandorabot
中。
我知道您可以使用 javascript
标记 aiml
语法,但我没有找到任何关于 python
的文档,除了以下使用 <oob>
(越界)标签,运行后台宁服务:
<oob>
<mrl>
<service>python</service>
<method>exec</method>
<param>myfuction()<param>
</mrl>
</oob>
<mrl>
tags 代表 myrobot lab,它是 program-ab
的一部分,java framework
代表实际的机器人。
但我想只在网络上使用我的 app
...
我也遇到了 pyAiml
,但目前我还没有看到它如何帮助我实现我的目标。
我的目标:
我想使用 python
因为它操纵 NLTK
(http://www.nltk.org/),一个处理大量文学语料库的自然语言工具包,我想将这个库集成到我的机器人功能。
假设我有一个 <pattern>PYTHON</pattern>
,它会 运行 一个 python 脚本。
脚本会 import nltk
(及其语料库),将 AIML patterns
或 "questions" 链接到 PYTHON templates
,或 "answers"?
关于我如何实现这一目标的任何线索?非常感谢。
虽然我没有使用 python 与 pandorabots 一起工作的经验,但我确实使用过 php,这就是我在概念上想出的。 objective 类似,但在我的例子中,我需要为来自外部 api 的潘多拉机器人响应添加信息,以下是我所做的:
我用symbols/delimiters到
1.标记需要修改的响应。
2. 使用分隔符将响应分成需要修改的部分和不需要修改的部分。
3. 在我的例子中,可修改的部分是 php 函数调用,其中函数已经预定义。
4. 然后,我将 api 的响应与未修改的机器人响应结合起来,并将其呈现给客户端。
最终输出是我基本上能够将 aiml 响应翻译成 php 调用。
示例:
在我的例子中,我在响应的开头使用“#”来将响应标记为可修改。我使用“%”来标记我要修改的段的开头和结尾,并使用“,”来分隔函数调用, 和参数。
所以存储的 aiml 响应看起来像:
<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。希望这可以帮助。