2016-08-04 37 views
0

我想將python腳本集成到我的pandorabot中,寫入aiml如何在Python中使用AIML

我知道,你可以標記aiml語法與javascript,但我還沒有發現任何python文檔,除了以下,使用<oob>(出界)標籤,在後臺運行的服務:

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

<mrl>標籤代表myrobot lab,它是實際機器人的program-ab,java framework的一部分。

但我想用我的app網絡單靠...

我也碰到pyAiml,但現在我還沒有看到它是如何幫助我實現我的目標。

我的目標

我想用python因爲它操縱NLTKhttp://www.nltk.org/),自然語言工具包,它處理龐大的文學語料庫,我想這個庫集成到我的機器人功能。

可以說我有一個<pattern>PYTHON</pattern>,它會運行一個python腳本。

腳本,它反過來又會import nltk(及其文集),連接AIML patterns,或 「問題」 爲PYTHON templates,或 「答案」?

有關我如何實現這一目標的任何線索?提前謝謝了。

回答

2

雖然我沒有使用python與pandorabots一起工作的經驗,但我確實使用了php,這就是我在概念上提出的。目的是相似的,但對我來說,我需要從外部API的pandorabot的迴應信息,下面是我做過什麼:

我使用的符號/分隔符
1.標誌需要響應被修改。
2.使用分隔符將響應分成需要修改的部分和不需要修改的部分。
3.可修改的部分在我的情況下是php函數調用,其中函數已經預定義。
4.然後,我將api的響應與未修改的機器人響應結合起來並呈現給客戶端。

最終輸出是我基本上能夠將一個aiml響應轉換爲一個php調用。


示例:
以我情況下,我使用的「#」的響應的開始標記的響應爲可修改予使用。‘%’標記我想修改的段的開始和結束,並使用','來分隔函數調用和參數。

所以存儲AIML響應看上去像:

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

ALGO:

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。希望這可以幫助。