andelf / PyAIML

PyAIML is an interpreter for AIML (Artificial Intelligence Markup Language). cloned from sf.net.
Other
351 stars 173 forks source link

Aimlparser does not pass the value of BOT_NAME #3

Open liangnet opened 9 years ago

liangnet commented 9 years ago

In aimlparser.py, while parser process the tag, it only cascade the string "BOT_NAME" to self._current ... So, the aiml agent will not respond the user for the inputs embedded agent's name. for example, assume the agent is named as Chancy, users' utterance is "Chancy你好" and one pattern is 你好, the agent will not respond the user because the aimlparser only replace the bot tag with BOT_NAME instead of bot name assignment like in the kernel.py

andelf commented 9 years ago

Fix needed. :)

andelf commented 9 years ago

Can you post minimal test cases here?

liangnet commented 9 years ago

Ok, but, Can you tell me how I can obtain the minimal test cases? By a uni-test code in this project or any bug from PyAIML? Your efforts has made this version of PyAIML to be a better one.

andelf commented 9 years ago

Can you provide an aiml file and the corresponding input, like files in example* dirs. I havan't come up with how to unit-test complex input and aiml files.

liangnet commented 9 years ago
<?xml version="1.0" encoding="UTF-8"?>
<!-- English Words in pattern tag should be UPPERCASE -->
<aiml>
    <category>
    <pattern><bot name="name"/> *</pattern>
        <template>
        <random>
            <li>Yeah, </li>
            <li>Um, </li>
            <li>That's me. </li>
        </random>
        <sr/>
        </template>
    </category>
    <category>
        <pattern>沒有</pattern>
        <template>
            <random>
                <li>好吧</li>
                <li>還狡辯</li>
            </random>
        </template>
    </category>
    <category>
        <pattern>說個笑話來聽</pattern>
        <template>
            <random>
                <li>嗯好</li>
                <li>呵呵</li>
                <li>王老先生有快遞</li>
                <li>你先說</li>
            </random>
        </template>
    </category>
    <category>
        <pattern>你叫什麼名字</pattern>
        <template>
            <random>
                <li>我是你爸爸</li>
                <li>討厭,你都忘了我了</li>
                <li>名字不重要,重要的是我的人是你的</li>
            </random>
        </template>
    </category>
    <category>
        <pattern>你今年幾歲</pattern>
        <template>永遠的18歲青春肉體</template>
    </category>
    <category>
        <pattern>你*幾歲</pattern>
        <template>
            <random>
                <li>我也不知道</li>
                <li>我18</li>
            </random>
        </template>
    </category>
    <category>
        <pattern>I AM THE GOD</pattern>
        <template>Bull Shit</template>
    </category>
    <category>
        <!-- Demo Show Time -->
        <pattern>今天星期幾*</pattern>
        <template>
            <date format="E"/>.
        </template>
    </category>
    <category> 
        <pattern>*新聞*</pattern> 
        <template> 
            <random> 
                <li>看看有没有什么新闻。</li> 
                <li>新华网是国内比较权威的新闻网站。</li> 
            </random> 
            http://tw.news.yahoo.com/ 
        </template> 
    </category>
    <category> 
        <!-- Demo Play Music -->
        <pattern>*MUSIC*</pattern> 
        <template>
            現在為您播放
            <system>
                play ../../testData/audio/madonna_original.mp3
            </system> 
        </template> 
    </category>
    <category>
        <pattern>你好</pattern>
        <template>Good Time</template>
    </category>
    <category>
        <pattern><bot name="name"/></pattern>
        <template>Good Time</template>
    </category>

    <category>
        <pattern>誇獎</pattern>
        <template>謝謝誇獎</template>
    </category>

    <category>
        <pattern>其他</pattern>
        <template>是在棒什麼啦</template>
    </category>

    <category>
        <pattern>好*</pattern>
        <template>
            <think><set name="star"><star index="1"/></set></think>
            <condition name="star">
                <li value="啊"><srai>你好</srai></li>
                <li value="呀"><srai>你好</srai></li>
                <li value="棒棒"><srai>誇獎</srai></li>
                <li value="萌"><srai>調戲</srai></li>
                <li value="萌啊"><srai>調戲</srai></li>
                <li value="聰明"><srai>誇獎<get name="star" /></srai></li>
                <li value="善良"><srai>誇獎<get name="star" /></srai></li>
                <li value="歷害"><srai>誇獎<get name="star" /></srai></li>
                <li value="文藝"><srai>誇獎<get name="star" /></srai></li>
                <li value="牛逼"><srai>誇獎<get name="star" /></srai></li>
                <li value="強"><srai>誇獎<get name="star" /></srai></li>
                <li value="聰明啊"><srai>誇獎<get name="star" /></srai></li>
                <li value="善良啊"><srai>誇獎<get name="star" /></srai></li>
                <li value="歷害啊"><srai>誇獎<get name="star" /></srai></li>
                <li value="文藝啊"><srai>誇獎<get name="star" /></srai></li>
                <li value="牛逼啊"><srai>誇獎<get name="star" /></srai></li>
                <li value="強啊"><srai>誇獎<get name="star" /></srai></li>
                <li><srai>其他</srai><sr/></li> 
            </condition>
        </template>
    </category>

    <category><pattern>HI *</pattern><template><srai>你好<star/></srai> </template></category>
    <category><pattern>HELLO *</pattern> <template><srai>你好<star/></srai></template></category>
    <category><pattern>HI</pattern><template><srai>你好</srai></template></category>
    <category><pattern>HELLO</pattern><template><srai>你好</srai></template></category>

    <category>
        <pattern>晚安</pattern>
        <template>
            <random>
                <li>晚安</li>
                <li>Sleep tight~</li>
                <li>晚安,祝你夢到妹紙~</li>
            </random>
        </template>
    </category>
    <category> <pattern>*晚安</pattern> <template><srai>晚安</srai> </template> </category>
    <category> <pattern>*晚安*</pattern> <template><srai>晚安</srai> </template> </category>
    <category> <pattern>晚安*</pattern> <template><srai>晚安</srai> </template> </category>

    <!-- <bot name="name"/> will be split into three chunks that BOT, _, and Name while passing to JieBa   -->
    <category>
        <pattern><bot name="name"/>你好</pattern>
        <template>Can I help you?</template>
    </category>

    <category>
        <pattern><bot name="name"/> IS MY NAME</pattern>
        <template>What a coincidence! I am <bot name="name"/> too.</template>
    </category>

    <category>
        <pattern>WHAT IS YOUR NAME</pattern>
        <template>我是<bot name="name"/></template>
    </category>

    <category>
        <pattern>你叫什麼名字</pattern>
        <template>
            <srai>WHAT IS YOUR NAME</srai>
        </template>
    </category>
</aiml>