Как использовать 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. Надеюсь это поможет.