李夢杰,劉建國,郭強,李仁德,湯曉雷
(1. 上海理工大學 復雜系統(tǒng)科學研究中心,上海 200093;2. 上海財經(jīng)大學 科研實驗中心,上海 200433;3. 滬江教育科技股份有限公司,上海 201203)
主題發(fā)現(xiàn)也被稱為主題抽取或主題識別,目的是處理和分析大規(guī)模信息并且使用戶能夠以最快速有效的方式了解信息內(nèi)容、發(fā)現(xiàn)信息中的主題[1-2]。主題發(fā)現(xiàn)[3]能在一定程度上挖掘出文本之間的關(guān)聯(lián)信息[4],從而得以被廣泛地運用到非結(jié)構(gòu)化數(shù)據(jù)的挖掘中。文獻[5-8]對在線數(shù)據(jù)庫和科技文獻的研究熱點以及研究進展進行了主題發(fā)現(xiàn)。文獻[9-12]則分別基于新浪網(wǎng)頁、雅虎新聞、百度知道等問答系統(tǒng)以及YouTube視頻網(wǎng)站的Web文本完成了主題發(fā)現(xiàn)的工作。而文獻[13-17]則基于用戶自產(chǎn)生的文本如微博、博客、推文、用戶評論等進行主題發(fā)現(xiàn)。在互聯(lián)網(wǎng)教育領(lǐng)域中,文本作為教育大數(shù)據(jù)中一種特質(zhì)的類型,最真實、直接地反映了學習者的學習動機、認知發(fā)展、情感態(tài)度、學習體驗[18]。互聯(lián)網(wǎng)教育平臺海量課程的涌現(xiàn)使得課程的投放者和課程的學習者無法逐一對其認知完全,并且,課程豐富而復雜的描述信息多是自然語言的文本表述,這些都給我們認識和了解當下在線課程背后的知識分布以及結(jié)構(gòu)特征帶來了挑戰(zhàn)。因此,對于在線課程海量描述性文本信息的挖掘就顯得十分必要,而此時非結(jié)構(gòu)化教育大數(shù)據(jù)的主題發(fā)現(xiàn)就會展示出它的高效性以及重要性[17,19-20]。 當前,互聯(lián)網(wǎng)教育平臺的課程種類繁多,大多用文本進行課程內(nèi)容描述。無論是平臺管理者,還是消費者,都很難通過閱讀課程描述信息對所有的課程進行全面了解。
本文爬蟲抓取某日語特色社團所選的共1 479門課程的描述信息網(wǎng)頁數(shù)據(jù),采用文本挖掘的方法對課程的文本信息進行主題發(fā)現(xiàn)的實證研究。首先對爬蟲抓取的文本信息進行數(shù)據(jù)的預處理,包括數(shù)據(jù)的清洗、中文的分詞、特征的選擇等;其次,利用主題模型對文本進行數(shù)值化的表示;然后,基于文本之間的距離進行無監(jiān)督的文本聚類;最后,進行主題發(fā)現(xiàn)。實驗結(jié)果發(fā)現(xiàn)這些課程基于不同距離閾值的聚類呈現(xiàn)出不同層次的共16個主題,并且可按主題被劃分為9個類別。由于課程是來自于學日語的社團,所以有88.3%的課程主題都與語言學習相關(guān),并且主題的內(nèi)容也更多反映出了學習者的學習目的。
課程的描述信息主要包括課程名稱、學習目標、適用人群、課程特色等字段,基于當前國內(nèi)某互聯(lián)網(wǎng)教育學習平臺所提供的API,利用Python爬蟲抓取數(shù)據(jù),最終得到1 479篇文檔作為本文的數(shù)據(jù)基礎(chǔ),數(shù)據(jù)的時間窗口為2015年7月1日至2015年12月31日。
Web文本數(shù)據(jù)由于存在非結(jié)構(gòu)化、動態(tài)更新等問題,給數(shù)據(jù)的清洗和預處理帶來了很多困難。例如中文描述文本與一些特殊字符“#、&”、HTML標記、各種超鏈接的URL等混合在一起,需要使用正則表達式進行過濾和刪除;另外,Web 2.0的普及造成網(wǎng)絡(luò)流行語的不斷涌現(xiàn),數(shù)據(jù)清洗的時候需要人工將網(wǎng)絡(luò)語翻譯成規(guī)范文本表達,如“小白”要被翻譯成“初學者”等;而且,在語言類的知識里隨處可見英文縮寫和簡寫,這些同樣需要被譯成對應(yīng)的中文表達,如“J.test”,“PETS”要被翻譯成“實用日本語鑒定考試”,“全國英語等級考試”。本文的研究選用了來自5個不同專業(yè)背景的志愿者對這些數(shù)據(jù)進行清洗和規(guī)范化處理。
對清洗后的文本信息再進行下一步的預處理工作,文本的預處理工作圍繞圖1的預處理框架圖展開。
圖1 預處理框架圖Fig.1 Preprocessing frame diagram
因為中文詞無間隙,語法結(jié)構(gòu)特殊,所以為了提取非結(jié)構(gòu)化的文本數(shù)據(jù)中的有效信息,首先要利用中文分詞算法將這些非結(jié)構(gòu)化的描述性文本轉(zhuǎn)化成結(jié)構(gòu)化的數(shù)據(jù)?,F(xiàn)有的中文分詞算法分為基于規(guī)則的分詞方法、基于統(tǒng)計的分詞方法和基于理解的分詞方法[21]。Jieba分詞算法基于規(guī)則和統(tǒng)計相結(jié)合,本文采用Python的Jieba分詞模塊對語料進行分詞。
由于使用的語料為互聯(lián)網(wǎng)教育領(lǐng)域中以日語學習類為主的語料,專業(yè)性較強,這將會給分詞工作帶來如下困難:歧義的消除問題,比如“五十音圖”是切分為“五十/音圖”還是整體作為一個專有名詞;未登錄詞的識別問題,實驗中發(fā)現(xiàn)語料中有很多專業(yè)術(shù)語和網(wǎng)絡(luò)新詞,這些需要通過結(jié)合實際情況和專業(yè)背景,建立貼合語料的自定義詞典,從而提高分詞的準確性;分詞過程中還有關(guān)于未登錄詞和登錄詞的識別順序問題,比如“商務(wù)英語”是應(yīng)該作為未登錄詞進行優(yōu)先的識別還是應(yīng)該按原有的登錄詞直接切分為“商務(wù)/英語”,這些也同樣需要根據(jù)實際需求更改自定義詞典中的詞頻,詞頻越大對應(yīng)的詞就能優(yōu)先被切分出來。
比如,對于“零基礎(chǔ)或者有日語五十音圖基礎(chǔ)、打算鞏固并進一步學習的日語興趣愛好者”這句話,不添加自定義詞典的情況下,會被分成“零/基礎(chǔ)/或者/有/日語/五十/音圖/基礎(chǔ)/、/打算/鞏固/并/進一步/學習/的/日語/興趣/愛好者”,可以看出“零”“五十”“音圖”這些詞都失去了在語境中的本來意義,而如果將“零基礎(chǔ)”“五十音圖”加入到自定義詞典并且在分詞的過程中讀取自定義詞典,這句話則會被切分成“零基礎(chǔ)/或者/有/日語/五十音圖/基礎(chǔ)/、/打算/鞏固/并/進一步/學習/的/日語/興趣/愛好者”,顯然后者的分詞結(jié)果更有效。
基于對原始語料的初步了解,首先建立了含有324個詞條的自定義詞典,并不斷地調(diào)整詞頻的大小和繼續(xù)擴充自定義詞典,使得分詞結(jié)果盡可能準確。最后建立了總共含有575個詞條的自定義詞典。
數(shù)據(jù)的清洗和預處理排除掉了一些無效的測試子班和只有課程名稱的描述文檔,最終得到1 472篇有效的文本文檔?;谝呀⒑玫淖远x詞典,利用Python的Jieba分詞包,對這1 472個有效的文檔進行了分詞。
在分詞的過程中,類似“我們、在、的、是、太”等出現(xiàn)頻率太高卻沒有太大意義或者類別色彩不強的詞,需要被過濾掉從而減少存儲空間和計算時間。并且一些類似于“掌握、學習、課程、熟練”等與主題不相關(guān)的詞也需要被過濾以減噪。使用停用詞庫之前,比如“提升閱讀能力、聽力、翻譯、口譯等各項技能”這句話,會被分成“提升/閱讀/能力/、/聽力/、/翻譯/、/口譯/等/各項/技能”,而加入了停用詞庫以后的結(jié)果是“閱讀/聽力/翻譯/口譯”,可以看出剔除掉了“提升”、“各項”等無效信息后,分詞結(jié)果內(nèi)容顯得精煉、集中。
實驗除了加入通用的中文停用詞庫過濾無效信息以外,還針對語料的特點以及實際需求建立了貼合語料的停用詞庫,對初步的分詞結(jié)果進行減噪,停用詞庫共包含2 827個詞條。分詞結(jié)果確定以后,將自然語言的文本信息轉(zhuǎn)化為計算機能夠理解和存儲的數(shù)據(jù)類型。
對文本的表示有多種模型,如向量模型、布爾模型和概率模型。空間向量模型可以較好地實現(xiàn)文本的抽象[22]?;诮y(tǒng)計的代表性方法——向量空間模型(vector space model,VSM)[23]根據(jù)詞頻建立向量,并使用 TF-IDF(term frequency and inverse document frequency)給每個向量的特征詞計算權(quán)重。
TF-IDF算法由Salton等[24]首先提出,用于評估某個字或某個詞對于一個語料庫中的一個文本的重要程度。對于給定的文本文檔,詞頻表示為
式中,分子表示詞wij(文檔dj中的第i個詞)出現(xiàn)的次數(shù),分母表示文檔dj中所有詞之和。反文檔頻率為指總文檔的數(shù)目D與包含有詞語wij的文檔的數(shù)目求商之后的自然對數(shù)值,的值越大表示詞wij的重要性越大、越關(guān)鍵。
對分詞后的1 472篇文檔進行過濾停用詞,然后用空間向量表示,對每篇文檔選擇權(quán)重較大的前20個詞作為關(guān)鍵詞,得到總共1 472個多維特征詞向量。
由于TF-IDF算法會忽略詞項之間的語義相關(guān)性以及文本集合的內(nèi)部結(jié)構(gòu),而文本分類的重要工具 LDA(latent dirichlet allocation)[25- 26]加入了對語義信息的考慮,利用詞袋模型針對文檔的內(nèi)部結(jié)構(gòu)以及文檔之間的結(jié)構(gòu)進行建模[27],并且相較于 pLSA(probabilistic latent semantic analysis)[28-29],LDA不僅進行了貝葉斯的改進,還能通過直接分析詞的語義內(nèi)涵,在不增加計算量的情況下對新加入的語料進行識別。
由于實驗中課程的文本描述內(nèi)容比較短,對語料進行了特征的選擇后,很多文檔向量的特征詞不足20個,而LDA主題建模能一定程度上減少數(shù)據(jù)稀疏性問題。故采用LDA對文檔集進行主題建模,將文檔表示成不同比例題的混合,為后面文本文檔的有效相似性測量奠定基礎(chǔ)。
Blei等[30]在2003年提出三層貝葉斯的概率主題模型LDA,該模型將文檔集中的每一篇文檔都視為若干個主題的混合分布,而每個主題是給定的詞匯表中詞語的一個分布[31]。
圖2 LDA的圖模型表示Fig.2 LDA graph model representation
圖中的空心點表示隱含變量,實心點表示可觀察值,矩形表示重復過程。大矩形表示文檔集(總共M篇文檔)中的每篇文檔從狄利克雷分布中反復抽取主題分布θ;小矩形表示從主題分布中反復抽樣產(chǎn)生文檔的詞,一共抽取N個詞。一篇文檔dj的產(chǎn)生過程可以表示為兩個過程:a.從狄利克雷分布p(θ|α)隨機選擇一個k維的向量θj,表示文檔dj中的主題混合比例;b.根據(jù)特定的主題比例對文檔 dj中的每個詞進行反復抽樣,得到 p(wij|θj,β)。
對于給定的文檔集,wij(第j篇文檔中的第i個詞)表示可以被觀察到的已知變量,α是每篇文檔下主題的多項分布的狄利克雷先驗參數(shù),反映了文檔集合中主題的相對強弱;β是每個主題下特征詞的多項分布的狄利克雷先驗參數(shù),代表了所有主題自身的概率分布;而第j篇文檔中的第i個詞的主題變量zij、第j篇文檔下的主題分布隱含變量θj(k維向量,k為主題個數(shù))和第k個主題下的特征詞的分布φk(v維向量,v為詞的總數(shù))都是需要根據(jù)觀察到的變量來學習估計的。主題和特征詞的聯(lián)合概率為
在實驗過程中,整個文檔集(即1 472個特征詞向量的集合)作為輸入內(nèi)容進行LDA訓練。主題數(shù)K需要在模型訓練前指定。實驗中,選取使得模型的困惑度Q取最小值時的主題數(shù)[31-33]。
式中:V為文檔集中的總詞數(shù);p(w)表示單詞wij在所有主題的分布值與該詞所在文檔的主題分布的乘積。
通過反復多次的LDA訓練,得到困惑度隨不同主題個數(shù)的變化如圖3所示。圖中,困惑度最小時對應(yīng)的主題個數(shù)為230,故最后設(shè)定K=230。對于經(jīng)驗參數(shù)α和β,參照文獻[32]設(shè)置為α=50/k,β=0.01。LDA最重要的是得到對兩組參數(shù)的估計,分別是各主題下詞語的概率分布φ和各文檔的主題概率分布θ[34],這些估計值也就是LDA訓練之后通過采樣得到的輸出結(jié)果。實驗中采用吉布斯抽樣(Gibbs sampling)[32]的方法,每次選取概率向量的一個維度,給定其他維度的變量值抽樣確定當前維度的值,不斷地迭代,直至收斂,輸出待估參數(shù)[35]。
設(shè)定迭代次數(shù)為2 000,最后得到的參數(shù)估計結(jié)果如下:
圖3 不同主題個數(shù)的困惑度Fig.3 Perplexity of different topics
a. 一個K×V的矩陣φ,表示每個主題下生成每個詞的概率。K表示主題的個數(shù)為230,V表示文檔集中所有不同詞的個數(shù)為2 173。
b. 一個M×K的矩陣θ,表示文檔集中每個文檔生成主題的概率,M表示文檔的總數(shù)為1 472,K是主題數(shù)。
表1列出了LDA訓練之后得到的230個主題中的前 4 個主題(分別為 Topic 0th,Topic 1th,Topic 2th,Topic 3th),F(xiàn)req(Frequency 的縮寫)對應(yīng)的數(shù)值越大表示該主題產(chǎn)生該詞的概率越大,如前4個主題產(chǎn)生“能力考”一詞的概率為0.270 6,“思維”一詞的概率為0.109 1,“應(yīng)試”一詞的概率為0.334 8,“考試”一詞的概率為0.522 6,即可認為前4個主題與“能力考”、“思維”、“應(yīng)試”、“考試”這4個詞最相關(guān)。
表1 Top 4個主題Tab.1 Top 4 topics
對1 472篇課程描述信息文檔進行LDA訓練后,得到了每篇文檔在230個主題上的分布,即1 472×230的主題概率分布矩陣θ,可看作是每篇文檔在230維主題空間上的分量值。因為每篇文檔在230個主題上的分布都是從一個分布中通過吉布斯采樣得來的[30],且衡量兩個概率分布之間距離的指標——Kullback-Leible散度不僅考慮了分布的數(shù)值大小,還能反映分布的特征,且測量精度通常要優(yōu)于余弦距離等,故采用KL距離來度量文檔之間的距離。當兩個隨機分布相同時,它們的KL距離為零,當兩個隨機分布的差別增大時,它們的KL距離也會增大。又因為KL距離不具有對稱性,于是本文采用更平滑的KL距離的變形式 JS(Jensen-Shannon divergence)距離[36]計算文檔之間兩兩的距離。相較于KL距離,JS距離的計算結(jié)果是對稱的,并且結(jié)果落在區(qū)間[0,1]之間,更適合作距離計算。JS距離的計算公式如下:
層次聚類可以對文本聚類實行無監(jiān)督的學習,能夠在不事先指定聚類數(shù)的情況下對樣本進行分析。本文采用基于矩陣、分步進行的凝聚層次聚類方法[35]對1 472門課程的描述性文本進行聚類,并采用JS距離測量通過主題模型得到的文檔–主題矩陣中文檔之間的距離。
具體的算法步驟為:
a. 將每個課程都劃分為一個簇;
b. 計算課程的文本文檔兩兩之間的JS距離;
c. 當課程i的文本文檔和課程j的文本文檔之間的JS距離小于等于閾值時,開始第一步的合并;
d. 依次執(zhí)行直到把所有滿足該條件閾值的課程合并完;
e. 增大閾值,按上述方法繼續(xù)合并,直到最后一步所有的課程合并為一個簇。
而對于合并過程中兩個簇之間距離的取值,采用平均鏈的方法,取兩個簇中兩兩課程的文本文檔的JS距離的平均值。
DVI
DVI DVI
圖4為根據(jù)鄧恩指數(shù)(DVI)[37]對聚類的全過程裁剪之后的聚類過程圖。黑色的橫線是由 確定的距離閾值,即距離閾值為0.71時,聚類最有效。圖4展現(xiàn)了最后15步的聚類過程,實心點分布的密集性表明了樣本量的多少。樣本容量為m和n的兩個簇進行 的計算, 的計算公式為
圖4 最后15步的聚類結(jié)果Fig.4 Last 15 steps of the clustering result
分子表示兩個簇的最短距離(類間距離),分母表示任意簇中的最大距離(類內(nèi)距離),DVI的值越大,即類間距離小的同時類內(nèi)距離大,表示相應(yīng)的聚類效果越好。
實驗中的1 472門課程根據(jù)文本文檔的JS距離進行聚類,可被劃分為2類,分別為圖4中距離為0.952和1.1時的合并點。從圖4可以看出,隨著距離閾值的增大,簇與簇之間的合并變得遲緩,距離的跨度越來越大。
從采用的凝聚層次聚類方法的原理看,距離閾值的不斷增大才使得原本可能不被歸為一個簇的樣本歸屬于同一個簇。聚類的有效性是建立在合適的類內(nèi)距和類間距的基礎(chǔ)上。于是從最后一步聚類倒推,尋找最佳聚類效果的距離閾值。
將距離閾值小于0.71的聚類過程剪裁掉,得到最后9步的一個聚類結(jié)果,如圖5所示。至此,完成了對1 472門課程的一個有效聚類。
圖5 最后9步的聚類結(jié)果Fig.5 Last 9 steps of the clustering result
隨后對照圖5的結(jié)果,可視化每個簇內(nèi)的所有課程對應(yīng)的特征詞信息。即對于圖5中表現(xiàn)出的 樣 本 量 分 別 為 13,11,35,8,105,391,676,47,186的9個簇,使用關(guān)鍵詞提取的方法篩選出簇內(nèi)課程的特征詞中頻率最大的關(guān)鍵詞作為該簇的主題;而對于橫線(距離閾值大于0.71)以上的聚類點,分別再以涵蓋不低于80%的特征詞信息的詞匯人工概括為新的主題,主題的擬定由來自7個不同專業(yè)背景的志愿者完成。最后,得到主題發(fā)現(xiàn)的結(jié)果如圖6所示。
圖6的主題發(fā)現(xiàn)結(jié)果表明,來自于日語社團的1 472門課程最終被劃分為了9個小類,所屬的主題依次為股票投資、語文素養(yǎng)、職業(yè)技能、音樂、實用外語、語言考試、語言基礎(chǔ)、日語考級、日韓英。其中“股票投資”、“語文素養(yǎng)”等主題與“日語”并不相關(guān)。并且所有的主題最終歸屬于兩個大的類別,一個是能力素養(yǎng)類,一個是語言素養(yǎng)類。語言類課程的主題并沒有與類似“詞匯”、“語法”、“作文”等反映知識內(nèi)容的詞強相關(guān),而是與“考試”、“基礎(chǔ)”、“考級”等字樣重合較多,所以更多地表達了學習者的學習目的。另一方面,從聚類簇中樣本量的角度看,88.3%的課程都是關(guān)于語言學習類的,這一特點符合日語社團這個數(shù)據(jù)背景。還值得關(guān)注的是,從課程數(shù)量的百分率上看,9個子類中語言考試類和語言基礎(chǔ)類的課程相對多而集中。
圖6 主題發(fā)現(xiàn)結(jié)果Fig.6 Results of topic discovery
本文針對某互聯(lián)網(wǎng)教育平臺的課程進行了主題發(fā)現(xiàn)和聚類研究。實驗以自主爬取的日語社團課程的詳情介紹頁面為研究基礎(chǔ),并通過文本預處理、主題表示、層次聚類等步驟完成了對1 472門課程潛藏在語義中的主題發(fā)現(xiàn)工作以及基于課程描述性文本的主題分布聚類。結(jié)果表明,1 472門課程可被劃分為主題不同的9個類別,并且這1 472門課程隸屬于不同層次的共16個主題,從這些語義中發(fā)現(xiàn)的主題更多反映出了學習者的學習目的。而其中88.3%的課程主題都與語言學習類相關(guān),這也契合了數(shù)據(jù)來自于日語學習社團這個大背景。
本文通過停用詞庫、自定義詞典等大量的文本減噪處理,基于LDA的文本表示方法增強文本主題信息的使用,完全基于距離的探索性無監(jiān)督層次聚類,對互聯(lián)網(wǎng)教育平臺課程潛藏在語義中的主題進行了發(fā)現(xiàn),直接、客觀地挖掘出了課程的特征以及學習者的學習目的。并且基于日語學習社團的課程所發(fā)現(xiàn)出的除日語學習以外的多樣主題也能幫助平臺更好地了解學習者選擇課程背后隱含的主題關(guān)注點和興趣點[38]所在,能夠指導平臺進行下一步課程的投放和課程的個性化推薦,以及為日后產(chǎn)品的設(shè)計提供科學的依據(jù)。
研究的不足主要為實驗中預處理階段的一些數(shù)據(jù)的清洗,以及自定義詞典和停用詞庫的建立對實驗結(jié)果的影響程度無法定量衡量。如何對文本進行更好的表示和更有效的聚類,值得進一步研究。