上次教了女儿做了一个简易版的Siri,尽管做出了聊天的功能,但是所有的聊天都是提前设定好的。为了弥补这个缺点,这次我教女儿做一个稍微智能点的聊天机器人。由于Scratch是一个很简单的编程语言,目前来说,要用其做出现在用深度学习技术做出的智能聊天功能还不太现实。
先看看效果:
这次依然是用微信视频教学。
视频一接通,女儿照例卖一会儿萌,逗得我哈哈大笑。
笑完我就开始说话啦,“小宝宝,这次咱们把那个聊天机器人改进改进吧?”
她也觉得有必要,“好啊好啊,我也觉得那个好简单。”
“这次可以用‘链表’,这个功能,把你想说的回答放进去,然后利用‘随机’这个功能就可以跟别人聊天啦。”
“‘链表’是啥?”她不解。
我给她解释,“‘链表’就像一个盒子,你把要说的话放在里面,每次回答别人的时候,你就从里面拿出一句话来,你可以看着盒子拿,也可以闭着眼拿。”
她眼神一亮,“哦,我明白啦!就是潘多拉盒子,每次拿出来的东西都不一样。”
“对的,现在我们依然设置背景舞台和小猫咪吧,这个你会吗?”
“我会我会!这个简单!你看!”
“然后你在建立一个‘链表’,在‘数据’模块里。”
“弄好啦,你看!”
“不错哟!你还学会把链表给隐藏了!”大家注意看‘聊天’前那个方框里没有打钩,这个链表就
不会出现在舞台上,让舞台更美观。
“那是!也不看看我老师是谁!”她得意地把我也夸了。
“然后你就可以用‘将加到聊天链表’这个块,长方形框里可以随便写,为了能回复任何话,你可以用万用回复句式,比如‘然后呢?’,‘酱紫!’,‘嗯嗯!’,‘接着说’等等。”
“那也太不尊重别人了吧?”女儿有点生气。
“可是这样稍微智能点嘛,等以后我教你用深度学习技术做个真正的智能聊天机器人。”
女儿有点懵逼,“深度学习是什么鬼?有多深?”
“哈哈,以后教你!你把你的代码给我看看。”
这是她给我的代码:
“不错啊,都是万用回复,这样聊天会被人骂死的!”
“可是通用啊,最模糊的句子最通用。”她说的也有道理。
“这点我赞同,其实很多时候聊天最关键的是倾听,如果能感同身受然后给出自己的见解最好了,但是这个没那么容易。”
“然后写什么呢?”
“你把‘侦测’模块里的‘询问并等待’放下面,表示开始聊天。”
这是她给我的代码,很对。
“然后你要‘重复执行’这个块,在控制里,让我们不停聊天。”
“当别人输入了TA想说的话之后,你可以通过‘询问并等待’这个块给出回复,也可以换个造型。”
“然后呢?”她问我。
“你可以用‘聊天’链表里的句子了!”比如:
她开始思考,“为了随机回复,需要用随机块。”然后给我代码:
我提醒她,“但是‘链表’里可能不是10个句子,所以你可以把这个10改成‘链表’的长度。只需要用‘聊天’链表里的‘聊天的长度’这个块就可以了。它会记录你的链表里有多少句话。”
“哦!这么神奇!”然后她给我看她的代码:
这是最终代码:
下面就是测试效果啦!
“哈哈,好像还真有点智能,其实就是随机使用万用回复。”女儿一针见血。
“是啊,到目前为止,其实Scratch的大多数功能你都已经学会了。下次我教你和硬件相关的吧,通过Scratch代码和电脑的摄像头互动玩游戏。”
女儿很满意,我们就接着聊别的去了。
项目地址:升级版Siri
下一次课,我会教女儿如何用Scratch写代码和摄像头互动玩游戏。
转载请注明:来自微信公众号“君君玩科技”。