李菲菲,王移芝
(北京交通大學 計算機與信息技術學院,北京 100044)
隨著移動互聯網的快速發展,網絡信息量特別是文本信息呈指數增長,因此如何精準有效地挖掘、組織和利用海量文本背后的有用信息成為一個熱門話題。文本聚類技術作為自然語言處理(natural language processing,NLP)的預處理步驟,對文本進一步分析和處理有著重要影響,比如信息檢索、生成文檔摘要等,在文本聚類方面,主題聚類[1]方法比傳統方法更有效。于是,隱含狄利克雷分布(latent Dirichlet allocation,LDA)在挖掘文檔中的隱含主題方面得到了越來越多的應用。
LDA[2]主題模型在2003年由普林斯頓大學的David M.Blei等提出,該模型是一種文本建模方法,能夠將每篇文檔的主題以概率分布的形式給出,用來識別大規模文本或者視頻中隱含的主題信息,在信息檢索、文本分類等領域應用非常廣泛。目前普遍認為應用基于吉布斯采樣[3]的LDA的最大問題是無法確定最優主題數目,然而主題數目的選取直接影響到LDA主題模型的性能,導致文檔分布表示存在精度誤差。
在大規模語料庫中,文檔集的聚類簇數通常與句子集中隱藏的主題數目一致,前者作為后者的先驗知識。根據頻繁詞網絡[4]隱含社區個數與文檔集隱含主題數相一致的特點,文中提出了一種以頻繁詞集網絡的社區劃分個數用來指定LDA主題模型主題輸入個數的方法,使得指定主題數更加接近文檔分布表征的隱含主題數目。
大量研究表明,LDA主題抽取效果[5]與潛在主題的數量直接相關,主題抽取的結果對主題數目非常敏感。在此基礎上,國內外大量學者展開了相關研究,通過若干方法確定最優主題數目,常用的有以下幾種方法:
(1)Griffiths等提出應用貝葉斯模型[6]確定最優主題結構的方法[7]。該方法依賴于吉布斯采樣的過程,但是計算非常耗時,在實際應用中效果不佳。
(2)層次狄利克雷過程(hierarchical Dirichlet processes,HDP)[8]將主題數目進行非參數化處理,它與LDA主題模型的差別在于:該模型可以通過訓練得到最優主題個數,并不需要其他參數。HDP雖然通過狄利克雷過程的非參數特征解決了LDA中主題數目的選取問題[9],但是該方法要求為同一個集合同時建立兩個模型:HDP模型和LDA模型;并且算法時間復雜性較高,在具體應用中效率不高。
通過分析以上方法,筆者認為針對LDA最優主題數目的確定,主要存在時間復雜性較高、效率低等問題。基于此,提出一種以頻繁詞網絡的社區劃分結果作為文檔聚類簇數,并以該簇數確定LDA主題個數K的方法。
LDA主題模型是一種基于EM算法的經典語義分析模型,能夠對高維文檔降維并提取隱含語義信息。它以詞袋(BOW)模型為基礎,這種模型將文檔轉化為一種詞向量,有效地將復雜的語義知識轉變為易于理解的數字信息。并且該模型的詞袋方法并未考慮到詞語之間的次序關系,這就簡化了模型,使得問題變得簡單,也為后人改進LDA模型提供了思路。LDA主題模型在自然語言處理領域中是一種能夠進行文本語義挖掘的統計模型[10]。它可以用來發現文檔隱藏的主題,將詞項空間表達的文檔約簡為主題空間的低維表示,并實現信息檢索、文本分類等。該模型是一種可以隨機生成可觀測數據的文本建模方法,首先拆解文檔為詞的集合,通過計算得到文檔在主題上的低維向量分布,并根據主題分布對文檔分類或計算主題相關性等。關于語料庫中的每一篇文章,LDA定義了以下生成過程:
(1)對語料庫中的每篇文檔,從主題分布中抽取一個主題;
(2)從步驟1中被抽到的主題所對應的單詞分布中提取一個單詞;
(3)重復步驟1和2,直到覆蓋所有單詞。
LDA代表的概率模型為:

(1)
通過對LDA主題模型的深入討論可知,LDA模型主要是針對特定語料庫,并人工指定語料級別參數α和β,通過一種半監督學習來確定模型,并根據模型生成文檔。其中α和β所表示的詳細信息如下:
α:分布p(θ)需要一個向量參數,即狄利克雷分布的參數,用于生成一個主題向量;
β:每個主題對應的單詞概率分布矩陣表示為p(w|z)。
由于主題個數能夠影響到LDA主題模型的主題抽取查準率、查全率以及主題獨立性,如果直接指定主題個數,則可能使得LDA不能得到較好的聚類效果,使其在某些領域的應用效果往往差強人意。所以,需要首先確定最優主題個數K。
文中方法以頻繁詞網絡[11]為基礎,其基本思想為:在大規模文檔集中,如果兩個詞(例如蘋果與喬布斯、)頻繁出現在同一篇文檔或同一個句子中,則認為這兩個詞是語義相關的。共同出現的一組詞,通常會被用來表述同一個主題。構建頻繁詞網絡可分為三個步驟:數據預處理[12]、頻繁詞集挖掘、構建頻繁詞網絡。數據預處理部分主要對文章進行分詞[13],并過濾掉一些停用詞和常見的噪音,利用頻繁詞集挖掘算法挖掘文本中的頻繁詞集,然后利用頻繁詞集中詞的共現關系構建詞共現網絡[14]。最后采用社區發現算法對詞共現網絡進行社區劃分[15],劃分出的每一個社區就是一個主題。具體過程如下文所述。
1.4.1 數據預處理
文檔數據的預處理包括對文本分詞及過濾停用詞、噪聲等[16]。
(1)分詞。
中文語義理解中,詞是最小的語義表達單位。但是中文句子與英語或其他語言有所不同,單詞與單詞之間并沒有分隔符,所以中文分詞相對比較困難,因此,分詞是文本處理中的關鍵一步。分詞的方法有很多種,中文分詞工具也有很多種,比如中科院的NLPIR/ICTCLAS漢語分詞系統、Java開源工具Jcseg等等。
文中使用的是經典漢語分詞工具(開源)IKAnalyzer。IKAnalyzer結合詞典分詞和文法分析算法的中文詞組組件,對中文分詞支持較好。它具有以下特性:分詞速度較快,對大規模文本分詞具有重要意義;可以對多種格式的數據進行處理(中文、英文、數字、日期等);支持用戶詞典擴展定義。
(2)過濾停用詞、噪聲。
停用詞是指在自然語言處理中具有一定作用,但是又沒有什么實際意義的詞語。這些詞通常以較高的頻率出現,從而影響文本的處理。此外,文本中經常會出現一些高頻詞,如“了”、“的”、“是”、“也”等,這些高頻詞會對文本造成強烈的干擾,因此也應該和停用詞一塊兒過濾掉。文中采用搜狗發布的停用詞庫作為基本停用詞庫。
1.4.2 挖掘頻繁詞集
頻繁項集是文本挖掘領域內一項重要的處理手段。該模型假設,在大規模的文檔集合中,如果某些詞頻繁出現在同一篇文檔或句子中,則可以近似認為這些詞是語義相關的,并且它們出現的頻次越高,相關程度越高。共同出現的一組詞,通常會用來表述同一個主題。例如,在同一時間段的文本中,“數學”、“政治”、“英語”、“專業課”這組詞以較高頻率共同出現在同一篇文章中,包含這四個詞的文本很可能和考研這一主題相關。
文中使用FP-GROWTH算法[17]挖掘k頻繁詞集。在進行頻繁詞集的挖掘時,根據輸入教育類數據的文本數量來調整SUP支持度的大小。k為1的頻繁詞集沒有體現出特征詞的共現關系,因此將其忽略,k為2的頻繁詞集包含了大量噪聲,故對教育文本進行觀察時發現,絕大部分文本至少有三個特征詞,因此將k為2的頻繁項集忽略,只保留k大于或等于3的頻繁詞集。
1.4.3 構建頻繁詞共現網絡
利用k(k≥3)頻繁詞集中的共現關系構建網絡,得到基于頻繁詞集的詞共現網絡。社區(community)是復雜網絡中一種常見的現象,社區內節點聯系緊密,社區間節點聯系稀疏。在社交網絡中,社區表現為一系列具有相似興趣的用戶群體;在科學引文網絡中,社區表現為描述相似內容的引文集合;在生物醫學網絡中,社區表現為描述同一病癥的DNA或染色體集合。而在以頻繁詞集為基礎構建的詞共現網絡中,同一社區內的詞,通常描述同一主題,即主題以社區的結構出現。
文中對文檔集中的k(k≥3)頻繁詞集構建頻繁詞共現網絡,即當兩個詞出現在同一頻繁詞對時,將這兩個詞量化為圖中的兩個點,并認為這兩個點之間有一條邊。這樣,根據頻繁詞對構建了文檔集對應的頻繁詞共現網絡。
文中使用基于模塊度[18]的社區劃分算法(BGLL)[19]對詞共現網絡進行社區劃分。作為經典的社區劃分算法,BGLL有如下優點:
(1)BGLL是一種無監督社區劃分算法,不需要指定社區數目;
(2)相對于Fast-Newman[20]等算法,BGLL算法可以處理百萬級節點。文中以1.4.3生成的頻繁詞共現網絡為基礎,采用BGLL算法對該詞共現網絡進行社區劃分。
實驗數據來源于實驗組網絡抓取,采用網絡爬蟲技術在20余個教育網站上抓取各類教育信息(文章),共計79 463條數據。按內容完整性、主題性強弱、主題分布是否均勻等原則,篩選出3 318條數據作為實驗數據,其中10%的數據集用于測試集評估模型,剩余數據用于訓練模型。
通過對文檔集標題、簡介、關鍵詞等數據的分析,課題組對3 318條數據進行主題打標簽,專家鑒定,共獲得主題22個。
由于課程簡介最能體現出課程的特點,因此以課程簡介作為語料庫進行實驗。首先進行頻繁詞集的挖掘,選取最小支持度MINSUP為0.01,頻繁詞集挖掘部分結果見表1。

表1 頻繁詞集部分結果

續表1
然后對頻繁詞集構建詞共現網絡,使用BGLL對詞共現網絡進行社區劃分。取模塊度為0.48時(模塊度最大)的社區劃分方式作為最后的實驗結果,此次實驗共發現18個社區,故以18作為LDA主題個數的指定。其中部分主題結果如表2所示。

表2 部分主題結果
除了使用Fast-Newman算法對詞共現網絡圖做社區劃分,文中則采用BGLL對詞共現網絡進行社區劃分,其中Fast-Newman算法得出的社區個數為16,BGLL算法得出的社區個數為18個。
以查準率和查全率來評價主題抽取效果,查準率用于評價LDA主題抽取正確主題數占所有抽取主題數的比例,查全率用于評價LDA主題抽取正確主題數占專家預先標注的主題個數。
公式如下:
(2)
(3)
其中,Textract表示LDA抽取的有效主題數;Tcorrect表示LDA抽取的正確主題數;Tstandard表示專家標注的主題個數。
不同主題個數下對應的查準率與查全率如表3所示。

表3 不同主題個數下的查準率和查全率
由表3可知,通過BGLL算法得出的主題個數k(18)略好于Fast-Newman算法得出的主題個數(16),具有最高的查準率和較高的查全率,效果相對較好。
在概率語言模型中,困惑度[21]是一種用來評估語言模型優劣的指標,其基本思想是給測試集賦予較高概率值的語言模型,且較小的困惑度意味著模型對新文本具有較好的預測作用,并且在一定程度上,困惑度會隨著潛在主題數量的增加呈現遞減的規律。文中以困惑度評價LDA主題模型的優劣。在LDA主題模型中,困惑度的計算公式如下所示:

(4)
其中,D表示待訓練文檔數據集,一共有M篇文檔;Nd表示每篇文檔d中的單詞數量;wd表示文檔d中的詞;p(wd)表示詞wd在文檔w中的頻率。
實驗取主題個數范圍為[10,200],步長為10,分別在訓練數據上訓練模型,最終的困惑度-主題個數曲線如圖1所示。

圖1 不同k值下的LDA模型困惑度
從圖1可以看出,當主題數目k為19時,LDA的困惑度指標達到最小值,這與文中實驗的結果18個主題較為接近,從而證明了文中方法的有效性。
按照文獻[5]科技情報分析中LDA主題模型最優主題個數確定方法的研究,參數設置和算法過程如文中所述。不同k值下的LDA模型方差值如圖2所示,不同k值下的LDA模型Perplexity-Var值如圖3所示。

圖2 不同k值下的LDA模型方差值

圖3 不同k值下的LDA模型Perplexity-Var值
由圖3可知,k取20時LDA主題效果最好,這與文中方法取得的最優k值18基本一致,驗證了該方法的正確性。
在大數據背景下,為了更準確地分析和處理海量文本數據,根據頻繁詞網絡隱含社區個數與文檔集隱含主題數相一致的特點,提出了一種以頻繁詞集網絡的社區劃分個數用來指定LDA主題模型主題輸入個數的方法。實驗結果表明,該方法可以以一種無監督聚類方式得到文檔聚類簇數并對主題數目做指定,顯著提升了主題查準率和查全率,并得到較好的聚類效果,相對智能地得到最優的主題分布。但文中只是針對教育網站上抓取的數據進行了實驗分析,并未針對其他類型的數據集進行方法的驗證,如微博新聞、短文本文檔等。接下來,將著重于在多種數據集上驗證該方法的正確性。