上次教了女兒做了一個簡易版的Siri,盡管做出了聊天的功能,但是所有的聊天都是提前設定好的。為了彌補這個缺點,這次我教女兒做一個稍微智能點的聊天機器人。由于Scratch是一個很簡單的編程語言,目前來說,要用其做出現在用深度學習技術做出的智能聊天功能還不太現實。
先看看效果:
這次依然是用微信視頻教學。
視頻一接通,女兒照例賣一會兒萌,逗得我哈哈大笑。
笑完我就開始說話啦,“小寶寶,這次咱們把那個聊天機器人改進改進吧?”
她也覺得有必要,“好啊好啊,我也覺得那個好簡單。”
“這次可以用‘鏈表’,這個功能,把你想說的回答放進去,然后利用‘隨機’這個功能就可以跟別人聊天啦。”
“‘鏈表’是啥?”她不解。
我給她解釋,“‘鏈表’就像一個盒子,你把要說的話放在里面,每次回答別人的時候,你就從里面拿出一句話來,你可以看著盒子拿,也可以閉著眼拿。”
她眼神一亮,“哦,我明白啦!就是潘多拉盒子,每次拿出來的東西都不一樣。”
“對的,現在我們依然設置背景舞臺和小貓咪吧,這個你會嗎?”
“我會我會!這個簡單!你看!”
“然后你在建立一個‘鏈表’,在‘數據’模塊里。”
“弄好啦,你看!”
“不錯喲!你還學會把鏈表給隱藏了!”大家注意看‘聊天’前那個方框里沒有打鉤,這個鏈表就
不會出現在舞臺上,讓舞臺更美觀。
“那是!也不看看我老師是誰!”她得意地把我也夸了。
“然后你就可以用‘將加到聊天鏈表’這個塊,長方形框里可以隨便寫,為了能回復任何話,你可以用萬用回復句式,比如‘然后呢?’,‘醬紫!’,‘嗯嗯!’,‘接著說’等等。”
“那也太不尊重別人了吧?”女兒有點生氣。
“可是這樣稍微智能點嘛,等以后我教你用深度學習技術做個真正的智能聊天機器人。”
女兒有點懵逼,“深度學習是什么鬼?有多深?”
“哈哈,以后教你!你把你的代碼給我看看。”
這是她給我的代碼:
“不錯啊,都是萬用回復,這樣聊天會被人罵死的!”
“可是通用啊,最模糊的句子最通用。”她說的也有道理。
“這點我贊同,其實很多時候聊天最關鍵的是傾聽,如果能感同身受然后給出自己的見解最好了,但是這個沒那么容易。”
“然后寫什么呢?”
“你把‘偵測’模塊里的‘詢問并等待’放下面,表示開始聊天。”
這是她給我的代碼,很對。
“然后你要‘重復執(zhí)行’這個塊,在控制里,讓我們不停聊天。”
“當別人輸入了TA想說的話之后,你可以通過‘詢問并等待’這個塊給出回復,也可以換個造型。”
“然后呢?”她問我。
“你可以用‘聊天’鏈表里的句子了!”比如:
她開始思考,“為了隨機回復,需要用隨機塊。”然后給我代碼:
我提醒她,“但是‘鏈表’里可能不是10個句子,所以你可以把這個10改成‘鏈表’的長度。只需要用‘聊天’鏈表里的‘聊天的長度’這個塊就可以了。它會記錄你的鏈表里有多少句話。”
“哦!這么神奇!”然后她給我看她的代碼:
這是最終代碼:
下面就是測試效果啦!
“哈哈,好像還真有點智能,其實就是隨機使用萬用回復。”女兒一針見血。
“是啊,到目前為止,其實Scratch的大多數功能你都已經學會了。下次我教你和硬件相關的吧,通過Scratch代碼和電腦的攝像頭互動玩游戲。”
女兒很滿意,我們就接著聊別的去了。
項目地址:升級版Siri
下一次課,我會教女兒如何用Scratch寫代碼和攝像頭互動玩游戲。
轉載請注明:來自微信公眾號“君君玩科技”。