郭英杰 千博



摘要:當(dāng)前人類處于信息爆炸的時(shí)代,對(duì)于海量的文本數(shù)據(jù),可以利用人工智能的工具來提高數(shù)據(jù)分析處理的效率,來挖掘海量數(shù)據(jù)的寶藏。文章主要對(duì)文本的主題分類算法進(jìn)行研究,通過改進(jìn)分類方法并提出可視化方案,使主題分類具有更好的應(yīng)用價(jià)值。首先通過利用LDA主題分類算法進(jìn)行處理,并提出了一些改進(jìn)方法使分類效果更優(yōu),并最終生成可視化的主題分類結(jié)果,進(jìn)而用于推薦系統(tǒng)、數(shù)據(jù)挖掘、數(shù)據(jù)分析等領(lǐng)域。
關(guān)鍵詞:自然語言處理:主題分類;數(shù)據(jù)可視化
自然語言處理是機(jī)器學(xué)習(xí)中的熱門領(lǐng)域,隨著Internet上數(shù)據(jù)產(chǎn)出的速度越來越快,文本挖掘廣泛用于特征抽取、語義關(guān)系挖掘、文本聚類等領(lǐng)域,并且在實(shí)踐的基礎(chǔ)上對(duì)文本挖掘的算法進(jìn)行了豐富的研究和改進(jìn)。本文給出一個(gè)基于文檔主題生成模型(Latent Dirichlet Allocation,LDA)的主題挖掘的完整應(yīng)用,通過爬蟲來抓取特定網(wǎng)站的數(shù)據(jù),在數(shù)據(jù)預(yù)處理(包括分詞、去停用詞、詞頻計(jì)算、特征向量化)后,利用LDA主題分類算法進(jìn)行處理,并通過對(duì)分類過程優(yōu)化和算法改進(jìn),得到良好的主題分類效果,最終利用玫瑰圖等可視化方式推送給用戶,進(jìn)而將結(jié)果利用在知識(shí)存儲(chǔ)、推薦系統(tǒng)、數(shù)據(jù)分析等場(chǎng)景。本文最后以某老人健康網(wǎng)站為例,應(yīng)用該系統(tǒng)展示分類效果。
1 數(shù)據(jù)采集與預(yù)處理
1.1獲取數(shù)據(jù)源
獲取數(shù)據(jù)源的方式多種多樣,為了面向數(shù)據(jù)不斷積累的互聯(lián)網(wǎng),本節(jié)設(shè)計(jì)了爬蟲組件來靈活獲取數(shù)據(jù)源。爬蟲[1],是按照一定規(guī)則來自動(dòng)抓取萬維網(wǎng)信息的程序或者腳本,是獲取信息的有效方式之一。本文設(shè)計(jì)了基于雙阻塞隊(duì)列的并行化爬蟲策略,對(duì)某老人健康網(wǎng)站持續(xù)爬取,截至當(dāng)前積累了16 430篇有關(guān)老人養(yǎng)老、健康等方面的文章。
1.2文本預(yù)處理
對(duì)于文本預(yù)處理來說,首先需要對(duì)文本分詞,對(duì)于中文的分詞處理比拉丁系語言難度更大。和大部分西方語言不同,書面漢語的詞語之間沒有明顯的空格標(biāo)記,句子是以字串的形式出現(xiàn)。把字串變?yōu)樵~串難點(diǎn)在與消除歧義[2],本文使用Jieba分析系統(tǒng),其python版本最高可以完成1.5 MB每秒的分詞速度。
其次對(duì)于原始文本來說,帶有很多噪聲,這時(shí)運(yùn)用停用詞過濾的技術(shù)進(jìn)行文本預(yù)處理[3]。停用詞除了不會(huì)讓日常用詞等噪聲影響分析結(jié)果外,同時(shí)也極大降低了計(jì)算規(guī)模。預(yù)處理的最后一步,就是建立詞袋模型,這是對(duì)語料集的特征向量化,為隨后的計(jì)算做準(zhǔn)備。
2 文本主題分類
2.1 LDA主題模型
LDA為3層貝葉斯概率模型[4],包含文章、主題、詞語3層結(jié)構(gòu),一種無監(jiān)督的機(jī)器學(xué)習(xí)算法。在LDA中,主題是指在文本集合內(nèi)具有隱含相關(guān)性的詞語的組合,適用于文字信息的提煉和歸納。LDA建模過程的概率圖模型如圖l所示,其中,陰影部分里的圓圈表示觀測(cè)變量,陰影外的圓圈表示隱含變量,箭頭表示變量之間的關(guān)聯(lián)。
LDA主題建模的核心思想認(rèn)為,一篇文檔的生成是一個(gè)“以一定概率選擇了某個(gè)主題,并從這個(gè)主題中以一定概率選擇某個(gè)詞語”的過程。在LDA中參數(shù)αfalse和βfalse由用戶憑經(jīng)驗(yàn)事先給定,LDA的概率圖模型可以得到聯(lián)合分布率公式:
求解的常用方法包含EM算法、Gibbs抽樣法等。本文采用Gibbs抽樣法[5],其核心思想為每次只排除當(dāng)前維度,然后給定其他維度的變量值采樣,再用這些采樣來估算出當(dāng)前維度的值。不斷重復(fù)迭代上述過程直到收斂,得到待估參數(shù)。
2.2用TF-IDF改進(jìn)系統(tǒng)
對(duì)于LDA來說,可以發(fā)現(xiàn)潛在的主題,但是在分析過程中會(huì)有很大的噪聲,這些噪聲并不是常見的停用詞,而是一些在文檔中出現(xiàn)的某些干擾詞,所以需要從“大局觀”的角度來去除燥聲,而TF_IDF[6]在這計(jì)算詞匯重要度方面表現(xiàn)優(yōu)異,可以通過對(duì)文檔集進(jìn)行非重要詞過濾,同時(shí)保留重要度最高的那部分即可。
3 數(shù)據(jù)分析
3.1主題分類結(jié)果
本文系統(tǒng)使用python開發(fā),其中算法部分利用scikit-learn和numpy等開源框架實(shí)現(xiàn),可視化部分利用G2[7]提供的工具。并利用采集的16 430個(gè)相關(guān)文章作為原始語料,進(jìn)行分析處理和結(jié)果展示。對(duì)語料分為10個(gè)主題分析,并展示每類主題前8個(gè)關(guān)鍵詞(見表2)。
3.2數(shù)據(jù)可視化
“一圖勝干言”是數(shù)據(jù)可視化[8]在數(shù)據(jù)分析等領(lǐng)域作用的簡(jiǎn)短體現(xiàn),便于我們得知其中隱藏的各種聯(lián)系,進(jìn)而便于展示和做出決策。主題分類輸出的南丁格爾玫瑰圖可視化結(jié)果如圖2所示,可以推斷出在該網(wǎng)站上,老人的飲食結(jié)構(gòu)和心腦疾病是最受關(guān)注的,老人保健和運(yùn)動(dòng)相關(guān)主題其次。
4 結(jié)語
本文通過運(yùn)用分詞、停用詞過濾、數(shù)據(jù)可視化等手段建立了基于LDA算法對(duì)互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行主題分類系統(tǒng),通過對(duì)大量文本數(shù)據(jù)的主題模型建立,可以分析主題趨勢(shì)和用戶關(guān)注點(diǎn)。在大數(shù)據(jù)場(chǎng)景下,分布式處理是提高效率的有效手段,今后可以利用spark等開源分布式處理軟件,提高本系統(tǒng)應(yīng)對(duì)互聯(lián)網(wǎng)海量數(shù)據(jù)的能力。