羅晶
“十年樹木,百年樹人”,教育的根本目的在于增強(qiáng)學(xué)生的能力,使學(xué)生成為人才。為了提高學(xué)生的信息素養(yǎng),培養(yǎng)未來的創(chuàng)造性人才,學(xué)生不但要學(xué)習(xí)現(xiàn)代技術(shù),也要具備人文素養(yǎng),使各種復(fù)雜知識在人文精神的燭照下融會貫通。如何在教學(xué)中介入文化價值,并運(yùn)用現(xiàn)代教育技術(shù)提高學(xué)生的文化素質(zhì)呢?這里我們以《三國演義》小說為例,讓學(xué)生閱讀學(xué)習(xí),然后通過Python 編程進(jìn)行分析。
《三國演義》是中國古典四大名著之一,亦是中國第一部長篇?dú)v史章回小說。它以人物為載體,形象地演繹了中國傳統(tǒng)文化的基本精神,即仁、義、禮、智、信、勇等中國傳統(tǒng)文化價值體系中的核心因素。那么,如何準(zhǔn)確快捷地將這部長篇?dú)v史章回小說中的信息提取出來,并以生動的方式呈現(xiàn)給學(xué)生呢?這就需要用到詞云圖。
認(rèn)識詞云圖
詞云圖是文本可視化的一種方式,借助相應(yīng)的網(wǎng)站工具,對復(fù)雜的文本信息(如單詞表、例句、課文)進(jìn)行加工處理,詞匯出現(xiàn)頻率越高,字號越大,這樣的詞匯就是高頻實(shí)義詞,也是信息材料關(guān)注的焦點(diǎn),最后以圖形化的形式出現(xiàn)??傮w來說,詞云圖有如下功能。
·提煉:提煉呈現(xiàn)實(shí)義詞
·排序:按頻率高低決定詞匯顯示的大小,出現(xiàn)次數(shù)越多,默認(rèn)字號越大
·突顯:對高頻實(shí)義詞起到突顯的作用
·圖像化:對整體外觀形成特定的圖像
Python 代碼和環(huán)境選擇
Python 相對其他代碼,簡單、易學(xué)、好上手,對語法要求不高,便于學(xué)生進(jìn)行學(xué)習(xí)實(shí)踐
Python jieba 第三方庫選擇
Python 對于文章分析有眾多庫, 其中中文庫包括yaha(啞哈)、jieba(結(jié)巴)、基于HMM 模型的中文分詞、genius 中文分詞等。通過使用,我們發(fā)現(xiàn),jieba 庫目前應(yīng)用比較廣,遇到問題容易找到解決方案,是優(yōu)秀中文分詞第三方庫,于是決定應(yīng)用jieba 庫。jieba 分詞有3 種模式,分別為精確模式、全模式和搜索引擎模式。
·精確模式:把文本精確切分開,不存在冗余單詞。
·全模式:把文本中所有可能的詞語都掃描出來,有冗余。
·搜索引擎模式:在精確模式基礎(chǔ)上,對長詞再次切分。
Python wordcloud第三方庫選擇
學(xué)生完成分析后需要進(jìn)行展示,然后由大家討論。為了展示更加美觀,我們選擇使用wordcloud。wordcloud庫是Python 詞云展示第三方庫,以詞語為基本單位,更加直觀和藝術(shù)地展示文本。它可以將文本中詞語出現(xiàn)的頻率作為一個參數(shù)繪制詞云,而詞云的大小、顏色、形狀等都是可以設(shè)定的。
wordcloud 有3 個常見函數(shù):wordcloud.WordCloud()、wordcloud.ImageColorGenerator()和wo r d c l o u d . r a n d om_ c o l o r _ f u n c ( )。wo r d c l o u d .WordClud() 代表一個文本對應(yīng)詞云的對象,要區(qū)分大小寫,全小寫是庫,大寫+ 小寫是對象,可以根據(jù)文本中詞語出現(xiàn)的頻率等參數(shù)繪制詞云。詞云的形狀、字體、尺寸和顏色都可以設(shè)定,一個詞云就是一個wordcloud 對象。wordcloud.ImageColorGenerator() 可基于彩色圖像生成相應(yīng)彩色,而wordcloud.random_color_func() 則生成隨機(jī)顏色。
JupyterHub應(yīng)用環(huán)境
Jupyter 是一款基于Python 的web notebook 服務(wù),目前大多Python 數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)愛好者都在使用這款服務(wù)。其特性其實(shí)與IPython Notebook 差不多。準(zhǔn)確說IPython Notebook 是一款提供增強(qiáng)型交互功能的shell,而Jupyter 除了IPython 的功能,還加入了普通編輯器的通用功能,是一款帶代碼交互的動態(tài)文檔web 編輯器。
由于Jupyter 只支持單用戶的使用場景,作為教師,我們需要看到學(xué)生的應(yīng)用實(shí)踐結(jié)果,需要多用戶場景,因此,只支持單用戶的Jupyter 可能不適用,于是有了JupyterHub。支持多用戶的Jupyter Notebook 服務(wù)器,用于創(chuàng)建、管理、代理多個Jupyter Notebook 實(shí)例,具有擴(kuò)展性和可定制性。
課程設(shè)計流程
第一步:課堂導(dǎo)引
提前1 周讓學(xué)生閱讀《三國演義》,然后在課堂上讓學(xué)生各抒己見,分析自己對《三國演義》的看法。也許有的學(xué)生喜歡曹操,有的學(xué)生喜歡諸葛亮,還有的學(xué)生喜歡對某個事件進(jìn)行分析,對此,我們都需要鼓勵。
第二步:講解與實(shí)踐
在實(shí)踐之前,我們需要向?qū)W生介紹Python 中jieba 庫及其分詞原理,以及wordcloud 應(yīng)用方法,包括如何控制底色,如何把文字載入,如何生成指定圖片類型等。在制作時,首先要引用jieba 庫,把《三國演義》小說導(dǎo)入變量,然后將導(dǎo)入的變量應(yīng)用jieba 進(jìn)行分詞(圖1)。
接著,應(yīng)用wordcloud 將已經(jīng)匯總的詞進(jìn)行分析排序,把排序結(jié)果應(yīng)用圖片進(jìn)行展示(圖2)。
學(xué)生制作完成后,我們可以收集學(xué)生的作品,以此檢驗(yàn)學(xué)生是否完成《三國演義》分詞及分析,是否掌握了相關(guān)的Python 知識。
第三步:擴(kuò)展思考
很多學(xué)生在分析的時候,主要是針對人物進(jìn)行的。我們可以把我們認(rèn)為重要的人物進(jìn)行一次統(tǒng)計。
首先,用jieba 把詞進(jìn)行分割(圖3)。
分割完成之后,把指定人物用循環(huán)進(jìn)行統(tǒng)計,然后改變數(shù)據(jù)類型,變?yōu)榱斜恚▓D4)。
將列表進(jìn)行排序,最后用print統(tǒng)一輸出,便可得出人物的相關(guān)數(shù)據(jù)(圖5)。
我們還可以讓學(xué)生擴(kuò)展思考:如何完成《三國演義》出場圖?如何完成《三國演義》關(guān)系圖?
總結(jié)
作為主要的人工智能語言,掌握Python 對于學(xué)生今后的發(fā)展非常重要。在教學(xué)實(shí)踐中利用Python 制作詞云圖,既可以呈現(xiàn)文本的關(guān)鍵信息和主要內(nèi)容,還可以將現(xiàn)代技術(shù)與人文素養(yǎng)相結(jié)合,提高學(xué)生的綜合素質(zhì)和能力。需要注意的是,利用Python 制作詞云圖,要求學(xué)生有一定的英語基礎(chǔ),并且熟悉鍵盤操作。