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