Как использовать AIML с Python

Я хотел бы интегрировать python скрипты в мой pandorabot написано в aiml,

Я знаю, что вы можете пометить aiml синтаксис с javascript, но я не нашел никакой документации по python, кроме следующего, который использует <oob> (за пределами) теги, работающие в фоновом режиме

<oob>
  <mrl>
    <service>python</service>
    <method>exec</method>
    <param>myfuction()<param>
  </mrl>
</oob>

<mrl>теги обозначает лабораторию Myrobot, и это является частью program-ab, java framework для реальной робототехники.

Но я хотел бы использовать мой app исключительно в сети...

Я тоже сталкивался pyAiml, но на данный момент я не понимаю, как это поможет мне достичь своей цели.

МОЯ ЦЕЛЬ:

Я хочу использовать python потому что это манипулирует NLTK ( http://www.nltk.org/), Natural Language Toolkit, который обрабатывает огромный литературный корпус, и я хотел бы интегрировать эту библиотеку с моими возможностями бота.

допустим, у меня есть <pattern>PYTHON</pattern>, и он будет запускать скрипт Python.

сценарий, в свою очередь, будет import nltk (и его корпус), связывающий AIML patternsили "вопросы" к ПИТОНУ templatesили "ответы"?

какие-либо подсказки о том, как я мог бы достичь этого? Спасибо заранее.

1 ответ

Решение

Хотя у меня нет опыта работы с python в сочетании с пандоработами, но я работал с php, и это то, что я придумал концептуально. Цель была аналогичной, но в моем случае мне нужно было добавить информацию для ответа pandorabot от внешнего API, и вот что я сделал:

Я использовал символы / разделители для
1. Отметьте ответ, который необходимо изменить.
2. Использовал разделители для разделения ответа на части, которые нужно изменить, и части, которые не нужно изменять.
3. Модифицируемые части были в моем случае вызовами функций php, где функции уже были предопределены.
4. Затем я объединил ответ от API с неизмененным ответом бота и передал его клиенту.

Конечным результатом было то, что я в основном смог перевести целенаправленный ответ на вызов php.


Пример:
В моем случае я использовал "#" в начале ответа, чтобы пометить ответ как модифицируемый. Я использовал "%", чтобы отметить начало и конец сегмента, который я хотел изменить, и использовал "," для разделения вызова функции. и параметры.

Таким образом, сохраненный прицел был похож на:

<template>#Response to be modified %method call,param1% continued response.</template>

Алго:

 So for every response,check if it contains a # at the beginning,  
  If it does, remove the #   (for php I used substr ($response,1) )
   Extract the function call (for php I used explode($str, '%') ) 
    Process function call.

Я полагаю, что вы можете использовать аналогичную логику для извлечения запроса и отправки его в nltk. Надеюсь это поможет.

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