Chaquopy 不支持 AIML
Posted
技术标签:
【中文标题】Chaquopy 不支持 AIML【英文标题】:Chaquopy won't support AIML 【发布时间】:2021-05-20 09:43:40 【问题描述】:我正在尝试使用应该使用 Python 核心的 android Studio 制作一个 AI 聊天机器人。我学习了如何使用 Chaquopy 在 Android Studio 中运行 Python 脚本,但是当我运行导入aiml
库的.py
文件时,总是出现“找不到输入匹配”错误。这是我使用 Chaquopy 在 Android Studio 中运行的文件 home.py 的代码:
import aiml
kernel = aiml.Kernel()
kernel.learn("std_startup.xml")
kernel.respond("load aiml b")
def response(message):
res = kernel.respond(message)
if res is None or res=="":
return "Sorry"
else:
return res
这是std_startup.xml
<aiml version="2.0" encoding="UTF-8">
<category>
<pattern>LOAD AIML B</pattern>
<template>
<learn>basic_chat.xml</learn>
</template>
</category>
</aiml>
这是 basic_chat.xml
<aiml version="2.0" encoding="UTF-8">
<category>
<pattern>HELLO</pattern>
<template>
<random>
<li>Hey there!</li>
<li>H1!</li>
<li>Hello!</li>
</random>
</template>
</category>
</aiml>
Android项目activity中的代码是:
if (!Python.isStarted())
Python.start(new AndroidPlatform(this));
Python python = Python.getInstance();
PyObject pythonFile = python.getModule("home");
PyObject response = pythonFile.callAttr("response", message.toString());
button.setText(response.toString());
所有文件都在同一个目录中。 Chaquopy 非常适合简单的 python 程序,当我在 cmd 上运行它时,home.py
工作得很好。我已经尝试将代码中的.xml
更改为.aiml
,但它仍然不起作用。我还尝试更改目标版本。
我究竟做错了什么?还是 ?请提出任何更改
【问题讨论】:
【参考方案1】:Android 应用的当前目录可能在任何地方,但不太可能是包含您的数据文件的目录。因此,不要使用简单的文件名传递 std_startup.xml,而是使用相对于 __file__
的路径,如 the FAQ 中所述。
我不知道如何评估 std_startup.xml 中的文件名。如果它们相对于 std_startup.xml 文件的位置,那么您当前的方法应该可以正常工作。如果它们是相对于当前目录的,那么您可能需要以编程方式生成 std_startup.xml 文件,以便它可以包含 basic_chat.xml 的绝对路径。
【讨论】:
【参考方案2】:尝试直接学习basic.aiml文件。并将扩展名更改为 .aiml
【讨论】:
以上是关于Chaquopy 不支持 AIML的主要内容,如果未能解决你的问题,请参考以下文章
chaquopy 是不是支持 SequenceMatcher