AIML - парсинг пользовательских входных данных как переменная в Python
Я работаю над проектом AIML для отдыха и наткнулся на пандоработов. Мне было интересно, есть ли способ проанализировать переменную из пользовательского ввода в другие языки (в данном случае python) или фреймворк, чтобы мы могли выполнять дальнейшие манипуляции через сторонние API с помощью любых шаблонов?
Например, я хочу получить дату от пользователя и затем передать ее в API календаря Google. Есть ли способ извлечь переменную date и проанализировать ее в API календаря Google на Python (или на любом другом языке)?
<category><pattern># 1 MAY 2016 #</pattern>
<think>{{ date }}</think> #is there a way to parse "1 May 2016" as a
#variable date in python?
<template>...
</template>
</category>
В конечном счете, цель, которую я пытаюсь достичь, будет иметь такой разговор:
User: Hi bot, could you check if I am available on 1 May 2016?
Bot: Nope, you have a gathering at Mike's! #(<--- Response rendered after
checking user's schedule on 1 May via google calendar )
Я исследовал движок шаблонов как усы, но, видимо, он не общается с AIML (точнее, с xml) Есть ли кто-нибудь, кто может указать мне хороший пример / учебник, который может помочь мне начать?
ps: я использую pandorabots API и python2.7
2 ответа
В API pyAIML найдите ключевое слово "предикаты":
- kernel.getPredicate ('дата')
- kernel.getBotPredicate ('Дат')
он возвращает предикат, который был установлен с помощью
<set name="date"><star/></set>
Тогда вы можете легко разобрать его с помощью Python.
Но это подводит меня ближе к вопросу: для чего мне нужен AIML? Какова добавленная стоимость AIML здесь?
Я также искал информацию для такого похожего вопроса. С помощью ответа @Berry Tsakala... я смог найти решение своей проблемы. Вот подробная и улучшенная версия приведенного выше примера... которая может быть полезна для других, имеющих такой же вопрос...
<category><pattern>Hi bot, could you check if I am available on *</pattern>
<template>Let me check your schedules on <set name="date"><star/></set>
</template>
</category>
Затем в вашем скрипте Python вы можете сохранить его в переменной как,
import aiml
kernel = aiml.Kernel()
kernel.learn("std-startup.xml")
kernel.respond("load aiml b")
while True:
try:
kernel.respond(raw_input("Enter your message >> "))
appointment_date = kernel.getPredicate('date')
print appointment_date
Не стесняйтесь вносить какие-либо исправления в ответ, если вы обнаружите какие-либо ошибки или если вам нужны какие-либо улучшения. Надеюсь, что вы найдете ее полезной:)