1

我正在尝试使用应该使用 Python 核心的 Android Studio 制作一个 AI 聊天机器人。我学习了如何使用 Chaquopy 在 Android Studio 中运行 Python 脚本,但是当我运行.py导入aiml库的文件时,总是出现“未找到输入匹配”错误。这是我使用 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项目活动中的代码是:

    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 程序,home.py当我在 cmd 上运行它时效果很好。我已经尝试在代码中更改.xml.aiml,但它仍然不起作用。我还尝试更改目标版本。我究竟做错了什么?还是 Chaquopy 不支持 AIML?请提出任何更改

4

2 回答 2

0

Android 应用程序的当前目录可能在任何地方,但不太可能是包含您的数据文件的目录。因此,不要使用简单的文件名传递 std_startup.xml,而是使用相对于 的路径__file__,如FAQ 中所述

我不知道如何评估 std_startup.xml 中的文件名。如果它们相对于 std_startup.xml 文件的位置,那么您当前的方法应该可以正常工作。如果它们是相对于当前目录的,那么您可能需要以编程方式生成 std​​_startup.xml 文件,以便它可以包含 basic_chat.xml 的绝对路径。

于 2021-02-17T14:48:01.423 回答
-1

尝试直接学习basic.aiml文件。并将扩展名更改为 .aiml

于 2021-03-19T12:33:00.937 回答