Chaquopy не поддерживает AIML

Я пытаюсь создать чат-бота AI с помощью Android Studio, который должен использовать ядро ​​Python. Я научился запускать сценарии Python в Android Studio с помощью Chaquopy, но когда я запускаю свой .py файл, который импортирует библиотекуaiml, всегда обнаруживается ошибка «Совпадение не найдено» для ошибки ввода. Вот мой код для файла home.py, который я запускаю в Android Studio с помощью Chaquopy:

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 в коде, но это все равно не работает. Еще попробовал поменять аймл версию. Что я делаю неправильно? Или Чакопи просто не поддерживает AIML? Пожалуйста, предложите любые изменения


person ank266    schedule 17.02.2021    source источник


Ответы (2)


Текущий каталог приложения Android может быть где угодно, но вряд ли это каталог, содержащий ваши файлы данных. Поэтому вместо передачи std_startup.xml с простым именем файла используйте путь относительно __file__, как описано в FAQ.

Я не знаю, как оцениваются имена файлов в std_startup.xml. Если они относительно местоположения файла std_startup.xml, тогда ваш текущий подход должен работать нормально. Если они относятся к текущему каталогу, вам может потребоваться программно сгенерировать файл std_startup.xml, чтобы он мог содержать абсолютный путь к basic_chat.xml.

person mhsmith    schedule 17.02.2021

Попробуйте напрямую изучить файл basic.aiml. И измените расширение на .aiml

person Victor Titan    schedule 19.03.2021