杜文杰
摘 要 近年來(lái),互聯(lián)網(wǎng)技術(shù)的快速更新迭代與智能終端的大規(guī)模應(yīng)用,使互聯(lián)網(wǎng)中的資訊平臺(tái)飛速增加,新聞信息的報(bào)道量呈指數(shù)式增長(zhǎng),從而導(dǎo)致互聯(lián)網(wǎng)新聞資訊逐漸變得雜亂和臃腫。對(duì)于用戶來(lái)說(shuō),雖然能夠從新聞平臺(tái)的個(gè)性化推薦中獲取熱點(diǎn)新聞,但是這些推薦信息存在同質(zhì)化嚴(yán)重、無(wú)法追蹤此類(lèi)新聞發(fā)展趨勢(shì)等困難。因此,如何應(yīng)用大數(shù)據(jù)技術(shù)來(lái)處理和分析海量新聞數(shù)據(jù),為用戶提供并分析各個(gè)領(lǐng)域的新聞熱點(diǎn)分類(lèi),具有重要的研究意義。
關(guān)鍵詞 新聞;大數(shù)據(jù);Spark;聚類(lèi);熱點(diǎn)
引言
隨著大數(shù)據(jù)時(shí)代的到來(lái),各式各樣的新聞內(nèi)容呈爆炸式增長(zhǎng)[1]。面對(duì)海量的互聯(lián)網(wǎng)新聞資訊,用戶獲得了大量?jī)?nèi)容重復(fù)、雜亂無(wú)章的新聞信息。如何利用新聞內(nèi)容聚類(lèi)分析系統(tǒng)幫助用戶對(duì)各個(gè)領(lǐng)域的新聞信息進(jìn)行分類(lèi)并分析新聞熱點(diǎn),從而使用戶快速地獲得有價(jià)值的信息,就具有了重要的研究意義。
Spark是一個(gè)開(kāi)源的大數(shù)據(jù)分布式處理的平臺(tái),是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架,主要用于大規(guī)模數(shù)據(jù)的分布式存儲(chǔ)和計(jì)算,具有高效、方便、可交互、可擴(kuò)展性的特點(diǎn),同時(shí)又可以保證系統(tǒng)的高容錯(cuò)性和高可靠性[2]。如今,Spark架構(gòu)已經(jīng)在很多大型企業(yè)中得到了廣泛的應(yīng)用,并取得了非常良好的效果。因此,基于Spark技術(shù)來(lái)構(gòu)建新聞內(nèi)容聚類(lèi)及熱點(diǎn)研究系統(tǒng),可以有效減少新聞大數(shù)據(jù)的處理分析時(shí)間。
1相關(guān)理論與技術(shù)基礎(chǔ)
1.1 Spark
Spark最初誕生于美國(guó)加州大學(xué)伯克利分校(UC Berkeley)的AMP實(shí)驗(yàn)室,是一個(gè)可應(yīng)用于大規(guī)模數(shù)據(jù)處理的快速、通用引擎。2013年,Spark加入Apache孵化器項(xiàng)目后,開(kāi)始獲得迅猛的發(fā)展。Spark最初的設(shè)計(jì)目標(biāo)是使數(shù)據(jù)分析更快一一不僅運(yùn)行速度快,也要能快速、容易地編寫(xiě)程序。為了使程序運(yùn)行更快,Spark提供了內(nèi)存計(jì)算,減少了迭代計(jì)算時(shí)的開(kāi)銷(xiāo);雖然,Hadoop已成為大數(shù)據(jù)的事實(shí)標(biāo)準(zhǔn),但其MapReduce分布式計(jì)算模型仍存在諸多缺陷,而Spark不僅具備Hadoop MapReduce所具有的優(yōu)點(diǎn),且解決了Hadoop MapReduce的缺陷[1]。
1.2 Scrapy爬蟲(chóng)技術(shù)
Scrapy是利用Python語(yǔ)言實(shí)現(xiàn)的一個(gè)爬蟲(chóng)框架,用于抓取網(wǎng)頁(yè)內(nèi)容,提取結(jié)構(gòu)化數(shù)據(jù)并存儲(chǔ),它基于Twisted實(shí)現(xiàn)異步網(wǎng)絡(luò)通信,并且擁有多個(gè)中間件接口,可以接收用戶的個(gè)性化爬蟲(chóng)需求,靈活度高。同時(shí),它利用布隆過(guò)濾器實(shí)現(xiàn)URL去重,防止因URL數(shù)量不斷增加而出現(xiàn)運(yùn)行效率下降的問(wèn)題;還提供多種數(shù)據(jù)輸出格式,如JSON、XML等,能夠和不同的存儲(chǔ)系統(tǒng)連接;能夠自動(dòng)獲取網(wǎng)頁(yè)中的視頻、圖片等多媒體數(shù)據(jù)。基于這些優(yōu)勢(shì),Scrapy框架在各類(lèi)數(shù)據(jù)挖掘任務(wù)中被廣泛應(yīng)用。
1.3 K-Means聚類(lèi)算法
K-Means是一種聚類(lèi)算法,其中的K 值代表的是類(lèi)別的數(shù)目,Means 代表均值。因此可以將K-Means算法理解為通過(guò)求均值對(duì)于數(shù)據(jù)進(jìn)行聚類(lèi)的算法。K-Means算法對(duì)于K值進(jìn)行預(yù)先的設(shè)定,之后進(jìn)行文本之間的相識(shí)度計(jì)算,主要是樣本與中心之間的計(jì)算,最后達(dá)到將相似性最高的文本都劃分到同一集合的效果。此算法需要不停地進(jìn)行迭代操作來(lái)產(chǎn)生最優(yōu)的結(jié)果。
2系統(tǒng)總體設(shè)計(jì)
此次研究目標(biāo)是挖掘與追蹤各個(gè)新聞?lì)I(lǐng)域內(nèi)的熱點(diǎn)信息,因此系統(tǒng)需要首先利用Scrapy網(wǎng)絡(luò)爬蟲(chóng)技術(shù)來(lái)獲取新聞數(shù)據(jù),并將獲取到的新聞數(shù)據(jù)集進(jìn)行分詞和去停用詞等預(yù)處理操作,其次利用K-Means聚類(lèi)算法對(duì)各個(gè)領(lǐng)域的新聞進(jìn)行聚類(lèi)劃分,以形成不同領(lǐng)域的新聞數(shù)據(jù)聚類(lèi)集,然后對(duì)各個(gè)新聞聚類(lèi)進(jìn)行話題挖掘并追蹤熱度以便用戶能夠更加便捷地了解新聞資訊。
根據(jù)上述流程的描述,此分析系統(tǒng)主要分為4個(gè)模塊,即新聞數(shù)據(jù)獲取模塊、新聞數(shù)據(jù)預(yù)處理模塊、新聞數(shù)據(jù)聚類(lèi)模塊和新聞熱點(diǎn)提取模塊。系統(tǒng)架構(gòu)如圖1所示[2]。
3系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
3.1 新聞數(shù)據(jù)獲取
首先需要利用Scrapy網(wǎng)絡(luò)爬蟲(chóng)技術(shù)抓取源新聞數(shù)據(jù),數(shù)據(jù)獲取模塊被設(shè)計(jì)為僅收取新聞標(biāo)題、發(fā)布的時(shí)間、新聞內(nèi)容、用戶點(diǎn)贊數(shù)和評(píng)論數(shù)等有用信息,會(huì)過(guò)濾掉外部鏈接、廣告等與無(wú)關(guān)內(nèi)容,以便后續(xù)的模型訓(xùn)練。
3.2 新聞數(shù)據(jù)預(yù)處理
在完成新聞數(shù)據(jù)源的采集后,雖然此時(shí)的數(shù)據(jù)集中已沒(méi)有和系統(tǒng)目標(biāo)無(wú)關(guān)的文本內(nèi)容,但是由于計(jì)算機(jī)無(wú)法直接理解句子的內(nèi)容,還需要對(duì)文本數(shù)據(jù)進(jìn)行預(yù)處理操作,預(yù)處理操作分為分詞和去停用詞。分詞主要是針對(duì)新聞標(biāo)題和新聞的正文內(nèi)容,將其中的段落內(nèi)容按照規(guī)則切分為單個(gè)詞語(yǔ),切分后的詞語(yǔ)是文本向量化的基礎(chǔ)。經(jīng)過(guò)分詞操作之后,會(huì)出現(xiàn)很多與表征文本內(nèi)容不相關(guān)的詞語(yǔ),如語(yǔ)氣詞、關(guān)聯(lián)詞和標(biāo)點(diǎn)符號(hào)等,這些詞被統(tǒng)一稱作停用詞,他們的存在會(huì)模糊各個(gè)文檔之間的分類(lèi)界限,因此在下一步操作之前還需要將停用詞去除。
預(yù)處理得出的結(jié)果存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中[3]。
3.3 新聞數(shù)據(jù)聚類(lèi)
從MySQL數(shù)據(jù)庫(kù)中讀取預(yù)處理后的數(shù)據(jù),使用TF-IDF函數(shù)來(lái)計(jì)算詞條的權(quán)值,使用向量空間模型(VSM)將預(yù)處理后的數(shù)據(jù)集向量化,向量空間模型將文檔映射為一個(gè)特征向量,式中是不同的詞條項(xiàng),為在中的權(quán)值,其取值為在的出現(xiàn)頻率,具體公式為:
式中,是詞條在中出現(xiàn)頻率的函數(shù),是含有詞條的文檔數(shù)目,是所有文檔的數(shù)目。文檔中詞條出現(xiàn)的頻率越高,則文檔對(duì)內(nèi)容屬性的區(qū)分能力越強(qiáng),其權(quán)值也越大。
文檔與文檔的相似度計(jì)算公式為:
根據(jù)文檔間相似度,再利用K-Means聚類(lèi)算法對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類(lèi)分析。有數(shù)據(jù)集D,從D中任意選擇k個(gè)點(diǎn)作為初始聚類(lèi)中心,記為,聚類(lèi)算法步驟如下所示:
對(duì)剩余的每個(gè)樣本,分別對(duì)每個(gè)樣本與聚類(lèi)中心的相似性進(jìn)行計(jì)算,計(jì)算公為。若通過(guò)計(jì)算公式得到的結(jié)果越小則表明兩者間的相似性越強(qiáng),這樣把樣本劃分入與之相似性最強(qiáng)的聚類(lèi)里。再次聚對(duì)類(lèi)中的樣本相似度利用公式進(jìn)行計(jì)算,并求出其平均值,其中代表第類(lèi)含有樣本的數(shù)量。
反復(fù)進(jìn)行步驟(1)中的操作過(guò)程,當(dāng)準(zhǔn)則函數(shù)趨于穩(wěn)定之后停止聚類(lèi)算法的迭代[4]。
3.4 新聞熱點(diǎn)提取
(1)新聞話題熱度值計(jì)算
在獲得各領(lǐng)域新聞信息聚類(lèi)后,需要對(duì)各個(gè)新聞聚類(lèi)的熱度值進(jìn)行計(jì)算,本系統(tǒng)按照話題相關(guān)報(bào)道數(shù)量、話題相關(guān)報(bào)道集中度和話題相關(guān)報(bào)道來(lái)源數(shù)量三個(gè)維度來(lái)計(jì)算新聞資訊的熱度值,計(jì)算公式為:,式中,n與m分別表示與話題C相關(guān)的報(bào)道與來(lái)源的數(shù)量;與分別表示與話題C相關(guān)的最終報(bào)道與首次報(bào)道的時(shí)間;N與M分別代表在特定期限至內(nèi)獲得到的所有報(bào)道與來(lái)源的數(shù)量。
(2)熱點(diǎn)話題標(biāo)題抽取
熱點(diǎn)話題詞指能較大程度地代表本條新聞的詞語(yǔ),是能夠反映出新聞報(bào)道所闡述的主題。因此,熱點(diǎn)話題詞語(yǔ)的提取不僅僅要考慮詞頻、文檔頻率以及詞共現(xiàn)等方法,還要從語(yǔ)義方面對(duì)詞的權(quán)重進(jìn)行考量,熱點(diǎn)話題詞提取計(jì)算公式如下:,式中,表示在新聞中不同的詞匯合集,對(duì)處于新聞聚類(lèi)內(nèi)的每一條新聞按照上述計(jì)算公式提取出關(guān)鍵詞后統(tǒng)計(jì)詞頻,生成前個(gè)關(guān)鍵詞即可作為該新聞聚類(lèi)的熱點(diǎn)話題[5]。
4結(jié)束語(yǔ)
綜上所述,本文通過(guò)Scrapy網(wǎng)絡(luò)爬蟲(chóng)技術(shù)抓取海量新聞稿件并進(jìn)行預(yù)處理操作后,利用基于Spark系統(tǒng)架構(gòu)和K-Means聚類(lèi)算法對(duì)所抓取的各個(gè)領(lǐng)域的新聞熱點(diǎn)進(jìn)行分析與追蹤,并對(duì)每一類(lèi)新聞資訊進(jìn)行實(shí)時(shí)分析。最終能夠使用戶自主選擇關(guān)注不同領(lǐng)域的熱點(diǎn)話題,并有效提升了新聞熱點(diǎn)挖掘與追蹤的性能。
參考文獻(xiàn)
[1] CNNIC.第41次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[R].北京:中國(guó)互聯(lián)網(wǎng)信息中心,2018.
[2] 肖劍楠,劉夢(mèng)塵,劉世霞.新聞數(shù)據(jù)可視分析系統(tǒng)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2016,28(11):1863-1870.
[3] 萬(wàn)曉霞,趙佳.基于聚類(lèi)的網(wǎng)絡(luò)新聞熱點(diǎn)發(fā)現(xiàn)研究[J].現(xiàn)代計(jì)算機(jī),2015(26):36-39.
[4] 武永亮,趙書(shū)良,李長(zhǎng)鏡,等.基于TF-IDF和余弦相似度的文本分類(lèi)方法[J].中文信息學(xué)報(bào),2017,31(5):138-145.
[5] 李洪利,王箭.基于用戶關(guān)聯(lián)的熱點(diǎn)話題檢測(cè)方法[J].計(jì)算機(jī)與現(xiàn)代,2015(4):20-25.