2016-07-28 14 views
2

私はチャットボットを書き込むためにPyAimlパッケージを試しています。私はA.L.I.C.Eからのデフォルトの目的ファイルすべてを備えた非常に基本的なプログラムを書いた。今のところ< >というタグを除いてすべて正常に動作します。セッションの問題だと思った。それから私はセッションを修正しました。しかし、まだ<と>の文脈の会話のためのタグで運がない。誰でもそれを動作させる方法を知っていますか?あるいは、PyAimlに<というバグがあり、そのタグの解析には>?あなたについてpyaimlは応答しません<that>タグ

testbot.py

import aiml 
import marshal 
import os 
from pprint import pprint 

BOOTSTRAP_FILE = "/var/www/html/chatbot/std-startup.xml" 
BOT_SESSION_PATH = "/var/www/html/chatbot/" 

sess_id = 'user_id_moshfiqur' 

while True: 
    k = aiml.Kernel() 
    k.bootstrap(learnFiles=BOOTSTRAP_FILE, commands="load aiml b") 

    if os.path.isfile(BOT_SESSION_PATH + sess_id + ".ses"): 
     sessionFile = file(BOT_SESSION_PATH + sess_id + ".ses", "rb") 
     sessionData = marshal.load(sessionFile) 
     sessionFile.close() 

     for pred, value in sessionData.items(): 
      k.setPredicate(pred, value, sess_id) 

    response = k.respond(raw_input(">> "), sessionID=sess_id) 

    sessionData = k.getSessionData(sess_id) 
    pprint(sessionData) 
    sessionFile = file(BOT_SESSION_PATH + sess_id + ".ses", "wb") 
    marshal.dump(sessionData, sessionFile) 
    sessionFile.close() 

    pprint("<< " + response) 

minimal.aiml

<aiml version="1.0.1" encoding="UTF-8"> 
    <category> 
     <pattern>TEST1</pattern> 
     <template>testing one</template> 
    </category> 
    <category> 
     <pattern>TEST2</pattern> 
     <that>testing one</that> 
     <template>Success</template> 
    </category> 
</aiml> 

答えて

0

:ここ

は私のボットプログラムと私がテストしてい非常に最小限AIMLファイルです<that>タグの問題は、AIMLの部分ではうまくいきます(それはあなたがそれを使用することを計画していた方法の場合)私が提供して来たtは、そのタグを使用する代わりです:

<category> 
     <pattern>TEST1</pattern> 
     <template>testing one<think> 
      <set name="xfunc">XTEST2</set> 
     </think></template> 
    </category> 

    <category> 
     <pattern>XTEST2</pattern> 
     <template>Success</template> 
    </category> 

    <category> 
     <pattern>TEST2</pattern> 
     <template><condition name="xfunc"> 
      <li value="xxnull"><srai>XDEFAULT ANSWER</srai></li> 
      <li value="*"><think> 
       <set var="temp"><get name="xfunc"/></set> 
       <set name="xfunc">xxnull</set> 
      </think><srai><get var="temp"/></srai></li> 
      <li><srai>XDEFAULT ANSWER</srai></li> 
     </condition></template> 
    </category> 

    <category> 
     <pattern>*</pattern> 
     <template><srai>XDEFAULT ANSWER</srai></template> 
    </category> 

    <category> 
     <pattern>XDEFAULT ANSWER</pattern> 
     <template>Bad input</template> 
    </category> 

上記の会話の次の部分につながる機能を保存し、それをできるようになりますそれをトリガーする変数に実際に使用されている答えがある場合に使用します。例えば、 "yes"と書かれたパターンがあり、多くのカテゴリで必要とされる状況で役に立ちます。 このコードをより流暢にするために、このコードをさらに改善する必要があることに注意してください。 あなたは、このが役に立ったと評価していた場合、私に教えてください、私はそれを拡張したい:)私にとって

+0

正直なところ、あなたの返事は私に複雑に見えます:)しかし、私ので、それはおそらくです目標を持つことはあまり経験がありません。あなたの答えを理解しようとします。私のオリジナルのソリューションに関しては、aimlに問題はないと言いましたが、なぜそれが機能していないのか分かりませんか?あなたはどのようにあなたの作品を作ったのですか?このソリューションを使用することによって? – sparrow

0
<category> 
    <pattern>TEST THAT</pattern> 
    <template>DO YOU LIKE MOVIES</template> 
</category> 

<category> 
    <pattern>YES</pattern> 
    <that>DO YOU LIKE MOVIES</that> 
    <template> What's your favorite movie? </template> 
</category> 

これが働いている...

関連する問題