第 4 周 · 第 1 课 · 50-60 分钟
搭一个基于规则的聊天机器人
用老派的方式设计一个聊天机器人,靠关键词、意图和决策树,并发现它为什么需要一条兜底回复,来应付所有它没被设计去处理的情况。
- 材料
- 在网页浏览器中打开的这节课 · 纸和笔,或者一个记事应用
- 本课
- 进行中
会自动保存在这台设备上
你将能够做到
- 说明基于规则的聊天机器人如何用关键词猜出用户的意图。
- 把一组意图和回复画成一棵决策树。
- 说明聊天机器人为什么需要一条兜底回复,来应对它听不懂的消息。
- 把基于规则的聊天机器人和从样例中学习的人工智能作比较。
想一想
一家比萨店的聊天窗口对「你们几点关门?」立刻作答,可当你打「你们开到什么时候?」时,它却回「抱歉,我没听懂」。这两个问题意思一样。为什么一个管用,另一个却失灵?
记住你的猜想,到最后你就能准确说出问题出在哪里。
做个预测
预测一下:如果一个聊天机器人只认识关键词「关门」,顾客能用多少种不同的说法问到打烊时间,却一次都不用这个词?
- 关键词
- 聊天机器人在消息里寻找的重要词语,用来弄清这个人想要什么,比如「营业时间」或「价格」。
- 意图
- 这个人真正想做或想问的事情,比如「查营业时间」,哪怕他用了很多不同的说法。
- 决策树
- 一组分叉的「是/否」或「如果/那么」选择,把一条消息一路引到一个回复,就像流程图一样。
- 兜底回复
- 当聊天机器人没匹配上任何关键词或意图时给出的保底回答,比如「抱歉,我没听懂。」
关键词:聊天机器人盯着的那些词
基于规则的聊天机器人并不像你那样理解语言。相反,是由人给它一份要寻找的关键词清单。当你的消息里含有「营业时间」「开门」或「关门」这样的关键词时,机器人就挑出人为那个词写好的回复。
这样又快又好预料,但很脆弱。如果你换个说法问同一件事,关键词不在其中,机器人就完全察觉不到。
- 关键词「营业时间」→ 回复营业时间
- 关键词「价格」或「多少钱」→ 回复菜单价格
- 关键词「退款」→ 回复退换货政策
意图:这个人真正想要的东西
词语背后是意图,也就是这个人真正想做的事。「你们几点关门?」「你们开到很晚吗?」和「你们开到什么时候?」是三句不同的话,却只有一个意图:查清营业时间。
好的聊天机器人设计,会把许多关键词和说法归到同一个意图之下。你给一个意图挂上的关键词越多,机器人能接住的提问方式就越多,但仍然得由人事先把它们都想到。
- 意图「查营业时间」匹配的关键词:营业时间、开门、关门、打烊、多晚、什么时候
- 意图「找地址」匹配:在哪、地址、怎么走、位置
- 意图「下单」匹配:下单、买、外送、自取
决策树与兜底回复:把一条消息送到一个回复
基于规则的聊天机器人沿着决策树走:先查第一个意图的关键词;找到了就给出那个回复;没找到就查下一个意图,依次沿着分支往下。每个分支的末端,都是一条由人写好的回复。
但没有哪份关键词清单能覆盖所有可能的消息。当什么都匹配不上时,这棵树就走到了最后一个分支:兜底回复。它是一句诚实的「我没听懂」,在好的设计里还会加上一点提示,说明机器人能帮上什么。要是没有兜底回复,一条没匹配上的消息就会得不到任何回应。
- 消息「你们开到什么时候?」里没有「营业时间」这个关键词 → 落到兜底回复
- 兜底回复:「抱歉,我可以帮你查营业时间、地址和订单。可以试着问问这几项。」
例题讲解
跟着一条消息走过这棵树
- 有人给机器人设好了三个意图:「查营业时间」(关键词:营业时间、开门、关门)、「找地址」(在哪、地址)和「下单」(下单、外送)。
- 一位顾客打字:「大号比萨多少钱?」
- 分支 1:里面有营业时间、开门或关门吗?没有。继续。
- 分支 2:里面有在哪或地址吗?没有。继续。
- 分支 3:里面有下单或外送吗?没有。继续。
- 没有任何分支匹配上,于是这棵树走到兜底回复:「抱歉,我没听懂。我可以帮你查营业时间、地址和订单。」而顾客真正想要的是价格,那是一个从没被赋予机器人的意图。
要点:基于规则的机器人只能回答有人事先设好的意图;其他任何内容都会落到兜底回复,哪怕在人看来那个问题清清楚楚。
收到的消息
- If 提到营业时间、开门或关门:
回复:「我们上午 11 点到晚上 10 点营业。」
- If 提到在哪或地址:
回复:「我们在主街 5 号。」
- If 提到下单或外送:
回复:「上网下单或拨打 555-1234。」
- If 以上都没匹配上:
兜底回复:「抱歉,我没听懂。我可以帮你查营业时间、地址和订单。」
一棵决策树,从顶部收到的消息开始,向下依次经过每个意图的一次判断。节点 1 问:「这条消息里有营业时间、开门或关门吗?」如果有,该分支止于回复「我们上午 11 点到晚上 10 点营业。」如果没有,就往下到节点 2:「里面有在哪或地址吗?」如果有,该分支止于「我们在主街 5 号。」如果没有,就到节点 3:「里面有下单或外送吗?」如果有,该分支止于「上网下单或拨打 555-1234。」如果没有,最后一个分支就是兜底回复:「抱歉,我没听懂。我可以帮你查营业时间、地址和订单。」每一个「是」分支都是一片叶子,带着人写好的回复;最后那个「否」分支永远是兜底回复,好让任何消息都不会没人应答。
每个意图就是一次判断;最后一个分支是兜底回复,接住所有没匹配上的内容。
| 顾客的消息 | 找到关键词了吗? | 结果 |
|---|---|---|
| 你们几点关门? | 关门 | 匹配「查营业时间」 |
| 你们开到很晚吗? | 开门 | 匹配「查营业时间」 |
| 你们开到什么时候? | none | 落到兜底回复 |
| 还在供餐吗? | none | 落到兜底回复 |
一张表,显示同一个意图「查营业时间」可以有很多种问法。各行:「你们几点关门?」含有关键词「关门」,所以匹配上了。「你们开到很晚吗?」含有「开门」,所以匹配上了。「你们开到什么时候?」不含任何列出的关键词,所以没匹配上,落到兜底回复。「还在营业吗?」同样不含任何列出的关键词,也没匹配上。这一课的启示是:多加关键词能接住更多说法,但得由人把它们全都想到。
活动
基于规则的聊天机器人搭建器
从一个模板出发,搭出一个能用的基于规则的聊天机器人,包含意图、关键词、一个追问分支和一条兜底回复,并在实时预览中测试它,预览会明确显示是哪条规则匹配上了。
- 先选一个模板,然后编辑欢迎语、意图(关键词 + 回复)、一个追问分支,以及兜底回复。
- 留意决策树的结构图和检查结果:死路、无法到达的节点,以及缺少兜底回复。
- 在实时预览里测试你的机器人:试试普通问题、意料之外的输入,以及要求找真人。
回答开放时间、借书和借书证的问题。
搭建你的机器人
意图(按顺序检查)
- 追问分支
决策树结构
- ▸ Welcome: Welcome to the school library helper! I can help with hours, renewing a book, or getting a library card.
- If keyword [hours, open, close, time] → Opening hours
- If keyword [renew, overdue, extend, keep] → Renew a book
- ? Is your book already overdue? (type 'yes' or 'no')
- → [yes, overdue, late] Overdue
- → [no, not] Not overdue
- If keyword [card, join, sign up, register] → Library card
- ▸ Fallback: Sorry, I didn't catch that. I can only help with a few topics — try a keyword, or type 'help' to reach a person.
检查
所有检查都通过:没有死路、没有到不了的节点,也不缺兜底回复。
实时预览
Please don't type personal information (full name, address, phone). I only answer general questions.
发一条消息来测试你的机器人。可以试关键词、意料之外的消息,或者「找真人」。
检查你的理解
回答这些题,检验你是否理解基于规则的聊天机器人怎样工作。
Question 1. 在聊天机器人里,「意图」是什么?
Question 2. 判断这句话是对还是错。
基于规则的聊天机器人需要一条兜底回复,好让它匹配不上的消息也能得到某种回应。
Question 3. 把基于规则的聊天机器人回复一条消息的各个步骤排成正确顺序。
- 1.收到来自这个人的一条消息
- 2.机器人逐个分支地,拿消息去比对每个意图的关键词
- 3.如果某个分支匹配上了,机器人就发出那个分支的回复
- 4.如果没有分支匹配上,机器人就发出兜底回复
已回答 0 / 3
自己动手试试
把你自己的聊天机器人难住
拿上你设计的聊天机器人,试着把它难住。找出三条真人可能会发、而你的关键词却接不住的消息。
- 写出三条消息,它们表达的都是你的机器人本该处理的意思,却避开了你所有的关键词。
- 把每一条都在你的树里走一遍,确认它确实落到了兜底回复。
- 对每一条判断:加一个关键词就能解决吗,还是它差别太大、根本没法靠规则接住?
做到这样就算成功
- 三条消息,人一看就懂,却都落到了兜底回复。
- 对每一条,都注明加个关键词能否解决。
- 一个明确的、单靠关键词解决不了的例子。
反思
输入时会保存在这台设备上
请不要写私人信息。你的回答只保存在这个浏览器里,不会发送到任何地方。
小结
基于规则的聊天机器人用关键词匹配来猜出用户的意图,把消息沿决策树导向回复,并对所有匹配不上的内容使用兜底回复。
- 关键词是机器人盯着的那些词;意图才是这个人真正想要的东西。
- 决策树每个分支检查一个意图,最后止于一条兜底回复。
- 基于规则的机器人只处理有人设好的意图,其余的全都会漏掉。
七至八年级延伸内容
从规则走向学习
大型的真实聊天机器人并不只靠关键词清单。许多都使用在成千上万条真实消息上训练出来的机器学习,因此即便是没人手工录入过的说法,它们也能识别出意图。
与你那个基于规则的机器人相比,说出基于学习的聊天机器人的一个优点和一个风险。想一想,如果训练用的消息里没有包含某些人的说话方式,会发生什么。
完成这一课
- Attempt the knowledge check(未完成)
- Save a reflection (recommended)(未完成)
先做一下知识检查,才能完成这一课。