如何在AIML中实现聊天机器人的姓名谎言检测功能
AIML姓名谎言检测优化实现
你需要的功能完全可以实现,核心是在第二个分类里增加名字匹配判断逻辑,通过AIML的<condition>标签对比用户当前输入的名字和已存储的名字,分情况返回不同回复。
修改后的完整代码
<category> <pattern>MY NAME IS *</pattern> <template> cool name! <think> <set name="name"><star/></set> </think> </template> </category> <category> <that>cool name</that> <pattern>MY NAME IS *</pattern> <template> <condition name="name" value="<star/>"> <li>I know you are <get name="name"/></li> <li>I thought you are <get name="name"/></li> </condition> </template> </category>
逻辑说明
- 第一个分类:首次接收用户姓名时,回复"cool name!"并将姓名存入
name变量(冗余的naem变量已删除)。 - 第二个分类:当用户再次发送姓名时,通过
<condition>标签判断:- 如果当前输入的姓名(
<star/>)和存储的name值一致,返回"I know you are [名字]" - 如果不一致,返回"I thought you are [之前的名字]"
- 如果当前输入的姓名(
测试验证
场景1(不同姓名)
HUMAN: My name is jessop ROBOT: cool name! HUMAN: My name is siemens ROBOT: I thought you are jessop
场景2(相同姓名)
HUMAN: My name is jessop ROBOT: cool name! HUMAN: My name is jessop ROBOT: I know you are jessop
内容的提问来源于stack exchange,提问作者Paulo Evan
相关产品推荐
相关产品推荐

