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

Не стесняйтесь вносить какие-либо исправления в ответ, если вы обнаружите какие-либо ошибки или если вам нужны какие-либо улучшения. Надеюсь, что вы найдете ее полезной:)

Другие вопросы по тегам