如何创建一个聊天机器人,将输入内容组织到所选模板中?

时间:2019-03-30 16:16:44

标签: chatbot

我想创建一个聊天机器人,该机器人会问一些问题,根据他们的回答,它们会沿着一棵模板树行进。我在编码领域不是很有经验,所以如果我的行话不正确,请原谅!

这是一个例子。

我想根据用户在聊天机器人中的输入来编写自定义报告。假设用户想要一些日常的自定义动机。

您今天感觉如何? 根据用户输入,可分为以下几类: “好-坏-悲伤-高兴-激动”等

根据具体情况,我们沿着“模板树”行进,因此,如果用户输入“ Pretty Good”,并且分类为“ Good”,那么“ BAD”类别下将存在的任何模板都将被忽略。

然后,我们提出诸如“您叫什么名字?”之类的问题,这些问题将作为变量存储,一旦我们根据输入内容找到正确的模板,它们就会被合并到文本模板中。

构建此平台的最佳平台是什么?确实是聊天机器人吗?

非常感谢您的帮助!

我尝试了Pandorabots,但它似乎过于线性-在输入>响应模型中,条件逻辑并不多。我已经准备好研究和学习,因此有关哪种平台/方法的任何提示将非常有帮助!

2 个答案:

答案 0 :(得分:2)

Pandorabots使用AIML创建聊天机器人,您当然可以在其中执行条件逻辑。这是一些可以满足您要求的代码:

<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">

<category>
    <pattern>HI</pattern>
    <template>
        Hi there. What is your name?
    </template>
</category>

<category>
    <pattern>*</pattern>
    <that>WHAT IS YOUR NAME</that>
    <template>
        <think><set name="name"><star/></set></think>
        How are you feeling today?
    </template>
</category>

<category>
    <pattern>*</pattern>
    <that>HOW ARE YOU FEELING TODAY</that>
    <template>
        <think><set name="mood"><star/></set></think>
        <condition name="mood">
            <li value="good">That's great <get name="name"/>.</li>
            <li value="bad">Sorry to hear that <get name="name"/>. Can I help?</li>
            <li value="sad">Cheer up <get name="name"/>, it's a beautiful day!</li>
            <li value="happy">Oh wow <get name="name"/>. I'm so pleased for you!</li>
            <li value="excited">Amazing <get name="name"/>! What's happened?</li>
            <li>The day is yours to command <get name="name"/>.</li>
        </condition>
    </template>
</category>

</aiml> 

示例对话如下:

enter image description here

使用模式标签,您也可以使用Pandorabots将相似的答案组合在一起。用应该触发模板的所有情感来创建名为“好”和“坏”的集合。 “好”集的示例:

[
    ["amazing"],
    ["good"],
    ["happy"],
    ["great"]
]

然后使用这样的类别:

<category>
    <pattern>I FEEL <set>good</set></pattern>
    <template>Great to hear!</template>
</category>

<category>
    <pattern>I FEEL <set>bad</set></pattern>
    <template>Sorry to hear that. Can I help?</template>
</category>

希望有帮助。 Pandorabots的FAR能力远胜于输入-响应,我凭借使用AIML和Pandorabots拥有世界上最人性化的对话式AI赢得了四次Loebner奖。

答案 1 :(得分:0)

由于您已经尝试过Pandorabots,所以我假设您熟悉XML和aiml,这就是为什么我提议使用程序O Program O on Github aiml有一个功能调用,可用于建立交互式树形聊天。 请在下面查看我的示例。尽管我想您可能在研究中遇到了艾米尔。

<?xml version = "1.0" encoding = "UTF-8"?>
  <aiml version = "1.0.1" encoding = "UTF-8"?>
    <category>
      <pattern>hi</pattern>
      <template>How are you feeling today?</template>  
    </category>

    <category>
      <pattern>GOOD</pattern>
      <that>How are you feeling today?</that>
      <template>Nice, I like it that way.</template>
   </category>

   <category>
     <pattern>BAD</pattern>
     <that>How are you feeling today?</that>
     <template>
       <randon>
         <li>Ok! I think you need an appointment with a doctor?</li
         <li>How exactly are you feeling?</li>
      </random>       
    </template>
  </category> 

  <category>
    <pattern>SAD_</pattern>
    <that>How are you feeling today?</that>
    <template>
     <randon>
       <li>Ok! what happened?</li
       <li>how can i help?</li>
     </random>       
    </template>
  </category>

  <category>
   <pattern>HAPPY_</pattern>
   <that>How are you feeling today?</that>
   <template>
   <randon>
     <li>great! its good for you</li
     <li>thats what up.</li>
    </random>       
   </template>
 </category>
</aiml>