王佳莉
筆者所在學(xué)校在2020年下半年建立了人工智能實(shí)驗(yàn)室,在其暢言AI實(shí)驗(yàn)平臺(tái)中,學(xué)生對(duì)自然語(yǔ)言處理中的四大名著分詞頗有興趣,并產(chǎn)生了疑問:中文分詞和詞頻統(tǒng)計(jì)的核心算法是什么?針對(duì)這種情況,筆者利用Python編程,幫助學(xué)生掌握詞頻統(tǒng)計(jì)中的枚舉算法。
● 核心素養(yǎng)的培養(yǎng)
語(yǔ)文核心素養(yǎng)由語(yǔ)言能力、思維能力、審美情趣、文化修養(yǎng)四個(gè)維度組成。在思維能力方面,筆者希望從“孫悟空”這個(gè)人物的高詞頻中解讀出作者期待從人物角色中表達(dá)的情感及寫作目的,并從兩個(gè)學(xué)科的核心素養(yǎng)出發(fā),找到兩者之間的共性與交叉點(diǎn),即通過詞頻數(shù)據(jù)分析,了解吳承恩在《西游記》中想要表達(dá)的重點(diǎn)。這是本節(jié)課跨學(xué)科教學(xué)最終要達(dá)到的目的。
● Python編程教學(xué)中存在的問題
①教學(xué)形式單一。很多教師采用先例題演示后學(xué)生操作的傳統(tǒng)教學(xué)模式,導(dǎo)致課堂氛圍沉悶,學(xué)生感到枯燥乏味。②課例枯燥。很多教師在Python編程教學(xué)中所用的課例較枯燥,沒有結(jié)合初中生的年齡特點(diǎn)。③缺少靈活、高效的教學(xué)策略。
● 教學(xué)設(shè)計(jì)與實(shí)施
本節(jié)課的教學(xué)活動(dòng)設(shè)計(jì)以學(xué)生實(shí)踐探究為主,以學(xué)生為中心,教師在此過程主要起到引導(dǎo)作用。課題為“西游No.1,花落誰(shuí)家——詞頻統(tǒng)計(jì)中的枚舉算法”。
1.項(xiàng)目提出,認(rèn)識(shí)枚舉算法
(1)激趣導(dǎo)入
師:(播放《西游記》主題曲)剛剛聽到的這首歌,出自哪里?(學(xué)生回答并簡(jiǎn)單介紹《西游記》)《西游記》里師徒四人,誰(shuí)被作者提得最多?你統(tǒng)計(jì)過師徒四人分別在小說里各出現(xiàn)多少次嗎?老師帶來了《西游記》這本書,如果現(xiàn)在讓你數(shù)“孫悟空”出現(xiàn)的次數(shù),你可以嗎?能描述一下自己數(shù)的過程嗎?(學(xué)生嘗試描述“數(shù)”的過程)
(2)詞頻統(tǒng)計(jì)
教師活動(dòng):講解詞頻統(tǒng)計(jì),即“統(tǒng)計(jì)一個(gè)詞語(yǔ)在某篇文章中出現(xiàn)的次數(shù)”。
學(xué)生活動(dòng):小組合作,在西游記.txt文檔中,快速統(tǒng)計(jì)出“孫悟空”出現(xiàn)的次數(shù),并填寫在學(xué)習(xí)單中(教師在PPT中明確任務(wù)目標(biāo))。
教師分析學(xué)生的查找過程,師生共同整理手工查找詞頻的思路。
(3)枚舉法
總結(jié):枚舉法的算法思想是利用計(jì)算機(jī)運(yùn)算速度快的特點(diǎn),對(duì)要解決的問題中的所有可能答案一一列舉,并進(jìn)行判斷,滿足條件的保留,不滿足的丟棄,最后得到符合要求的答案。
2.項(xiàng)目分析與算法設(shè)計(jì),理解枚舉算法
(1)自然語(yǔ)言描述枚舉法
師生活動(dòng):以“孫悟空在旁聞聽,喜得他抓耳撓腮,眉花眼笑”為例,用語(yǔ)言描述“孫悟空”一詞人工枚舉的過程。
師生總結(jié):描述人工“數(shù)”的方法,其實(shí)就是用自然語(yǔ)言描述枚舉算法。描述過程中有重復(fù)的部分,如一直用自然語(yǔ)言描述會(huì)顯得煩瑣且冗長(zhǎng),可改用流程圖描述。
(2)枚舉法對(duì)應(yīng)流程圖
師:流程圖是用圖形符號(hào)來描述解決問題的過程。請(qǐng)一名同學(xué)上來,根據(jù)自然語(yǔ)言描述人工枚舉算法的過程,粘貼流程圖。
教師引導(dǎo)學(xué)生從人工枚舉過渡到流程圖,學(xué)生根據(jù)人工枚舉過程,自主完成流程圖。學(xué)生完成流程圖后發(fā)現(xiàn)新問題——流程圖只實(shí)現(xiàn)了單個(gè)詞語(yǔ)的判斷,并沒有實(shí)現(xiàn)“逐個(gè)列舉”和“逐個(gè)驗(yàn)證”。教師引導(dǎo)學(xué)生補(bǔ)出流程線,實(shí)現(xiàn)列表中的循環(huán)。師生共同總結(jié)算法思路和流程圖。
(3)人工枚舉與計(jì)算機(jī)編程枚舉對(duì)比
師生競(jìng)賽,看誰(shuí)先完成“豬八戒”一詞出現(xiàn)次數(shù)的統(tǒng)計(jì)。師與生的競(jìng)賽,實(shí)則是人工枚舉和計(jì)算機(jī)程序枚舉的競(jìng)賽。通過競(jìng)賽,可發(fā)現(xiàn)計(jì)算機(jī)程序枚舉的優(yōu)勢(shì)——高速運(yùn)算、快速處理、可重復(fù)執(zhí)行算法。
提問:這段程序里蘊(yùn)含了什么奧秘,能讓計(jì)算機(jī)如此快速、高效地計(jì)算出次數(shù)呢?(學(xué)生回答)
3.項(xiàng)目實(shí)施,完善程序?qū)崿F(xiàn)枚舉算法
①流程圖與Python編程。學(xué)生活動(dòng):運(yùn)用“詞頻統(tǒng)計(jì)”程序,通過程序與流程圖的對(duì)應(yīng)關(guān)系,理解每條代碼的含義。
②列表與變量。教師活動(dòng):通過動(dòng)畫演示,幫助學(xué)生理解列表與變量的概念。
③遍歷列表——循環(huán)結(jié)構(gòu)。教師活動(dòng):介紹Python列表中的循環(huán)。
④學(xué)生按不同角色完成程序。學(xué)生活動(dòng):小組內(nèi)4人各自選擇不同人物名稱為枚舉條件,并獨(dú)立完成程序中“☆☆☆”的填空。
4.項(xiàng)目?jī)?yōu)化,修改枚舉算法迭代程序
①發(fā)現(xiàn)問題。學(xué)生質(zhì)疑:發(fā)現(xiàn)探究結(jié)果的問題——“孫悟空”全文僅出現(xiàn)126次。教師活動(dòng):播放《孫悟空》小視頻,引導(dǎo)學(xué)生發(fā)現(xiàn)問題所在,即師徒四人均有別稱。
②迭代程序。學(xué)生活動(dòng):利用邏輯運(yùn)算符or,完善程序,并將人物的別稱全部寫進(jìn)程序,進(jìn)而實(shí)現(xiàn)程序的迭代。
5.項(xiàng)目總結(jié),拓展研究視角歸納枚舉算法
①項(xiàng)目總結(jié)。師生總結(jié)詞頻統(tǒng)計(jì)的意義。
②枚舉算法的其他有趣應(yīng)用。教師提問:《紅樓夢(mèng)》的后四十回到底是不是曹雪芹寫的?你能用今天所學(xué)的技術(shù)來解決這一問題嗎?
③全課總結(jié),情感升華。
● 總結(jié)
1.課堂知識(shí)與其他學(xué)科巧妙融合
蘇科版初中信息技術(shù)教材對(duì)枚舉算法只是簡(jiǎn)單介紹了其概念和應(yīng)用,傳統(tǒng)的案例很難吸引學(xué)生的興趣,而運(yùn)用枚舉算法與文藝相結(jié)合對(duì)《西游記》中師徒四人的詞頻進(jìn)行統(tǒng)計(jì),能夠讓學(xué)生感覺到技術(shù)嚴(yán)謹(jǐn)又有趣。
2.巧設(shè)陷阱,知識(shí)點(diǎn)螺旋上升
初次統(tǒng)計(jì)師徒四人的詞頻,既讓學(xué)生體驗(yàn)到成功的喜悅,又帶給學(xué)生新的思考:明明程序是對(duì)的,可為什么統(tǒng)計(jì)出的結(jié)果卻明顯錯(cuò)誤呢?教師適時(shí)給出學(xué)習(xí)支架,讓學(xué)生通過小視頻的提示迅速找到解決問題的關(guān)鍵,從算法學(xué)習(xí)回歸到真實(shí)的問題情境中,從而提升程序迭代的意識(shí)。
3.拓寬技術(shù)的應(yīng)用面
對(duì)于詞頻統(tǒng)計(jì)和枚舉算法,在總結(jié)環(huán)節(jié)筆者給學(xué)生列舉了新的應(yīng)用視角,激發(fā)學(xué)生對(duì)詞頻統(tǒng)計(jì)和枚舉算法的學(xué)習(xí)興趣,引導(dǎo)學(xué)生靈活運(yùn)用所學(xué)知識(shí)解決實(shí)際問題,拓寬了學(xué)生的技術(shù)應(yīng)用面。