问题描述
我正在尝试使用应该使用 Python 核心的 Android Studio 制作 AI 聊天机器人。我学会了如何使用 Chaquopy 在 Android Studio 中运行 Python 脚本,但是当我运行导入 functools.singledispatch()
库的 .py
文件时,总是出现“未找到匹配的输入”错误。这是我使用 Chaquopy 在 Android Studio 中运行的文件 home.py 的代码:
aiml
这是 std_startup.xml
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
这是basic_chat.xml
<aiml version="2.0" encoding="UTF-8">
<category>
<pattern>LOAD aimL B</pattern>
<template>
<learn>basic_chat.xml</learn>
</template>
</category>
</aiml>
Android 项目活动中的代码为:
<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>
所有文件都在同一目录中。 Chaquopy 非常适合简单的 python 程序,当我在 cmd 上运行它时, 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());
运行良好。我已经尝试将代码中的 home.py
更改为 .xml
但它仍然不起作用。我也尝试更改aml版本。
我究竟做错了什么?还是 Chaquopy 只是不支持 aimL?请提出任何更改
解决方法
Android 应用程序的当前目录可以在任何地方,但不太可能是包含您的数据文件的目录。因此,不要使用简单的文件名传递 std_startup.xml,而是使用相对于 __file__
的路径,如 the FAQ 中所述。
我不知道 std_startup.xml 中的文件名是如何计算的。如果它们相对于 std_startup.xml 文件的位置,那么您当前的方法应该可以正常工作。如果它们相对于当前目录,那么您可能需要以编程方式生成 std_startup.xml 文件,以便它可以包含 basic_chat.xml 的绝对路径。
,尝试直接学习basic.aiml文件。并将扩展名更改为 .aiml