微博數(shù)據(jù)挖掘與分析算法的研究與實(shí)現(xiàn)_第1頁
微博數(shù)據(jù)挖掘與分析算法的研究與實(shí)現(xiàn)_第2頁
微博數(shù)據(jù)挖掘與分析算法的研究與實(shí)現(xiàn)_第3頁
微博數(shù)據(jù)挖掘與分析算法的研究與實(shí)現(xiàn)_第4頁
微博數(shù)據(jù)挖掘與分析算法的研究與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1章緒論1.1研究背景和意義互聯(lián)網(wǎng)在這幾年中正在進(jìn)行這十分快速的發(fā)展,根據(jù)中國互聯(lián)網(wǎng)網(wǎng)絡(luò)信息中心發(fā)布的互聯(lián)網(wǎng)統(tǒng)計(jì)報(bào)告來看,我國的網(wǎng)民數(shù)量在2012年已經(jīng)達(dá)到了5.38億人次。網(wǎng)民表現(xiàn)異?;钴S,網(wǎng)絡(luò)輿情洶涌澎湃,網(wǎng)絡(luò)輿情安全已成為新的非傳統(tǒng)安全問題,其對國家安全的威脅正日益凸顯。網(wǎng)絡(luò)輿情是指某一時(shí)間段內(nèi),網(wǎng)民對某一特定事件的意見總和。隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)輿情對社會(huì)影響日益增大,己成為社會(huì)輿論的一種重要表現(xiàn)形式。網(wǎng)絡(luò)即是社會(huì)輿論的匯聚平臺(tái)也是擴(kuò)散平臺(tái)。網(wǎng)絡(luò)媒體,尤其是微博與其他傳統(tǒng)媒體相比,具有進(jìn)入門檻低、開放度高、傳播速度快等特點(diǎn)。隨著網(wǎng)絡(luò)的普及,網(wǎng)民規(guī)模的不斷擴(kuò)大,網(wǎng)民己成為現(xiàn)代社會(huì)重要的輿論力量,對社會(huì)發(fā)展產(chǎn)生了重要的影響。同時(shí),我們也應(yīng)意識(shí)到,微博對政府和大眾來說都是一把‘雙刃劍’,如果網(wǎng)絡(luò)出現(xiàn)突發(fā)輿情,但是政府相關(guān)部門反應(yīng)滯后或者處理不當(dāng),很可能會(huì)引發(fā)人民群眾的強(qiáng)烈不滿并帶來惡劣的影響,對社會(huì)穩(wěn)定和諧構(gòu)成嚴(yán)重威肋。而網(wǎng)絡(luò)輿論傳播速度快,信息真?zhèn)坞y辨的特點(diǎn),也容易引發(fā)網(wǎng)上造謠、惡意煽動(dòng)等事件。這也對現(xiàn)代的輿情管理部門提出了新的要求,因?yàn)橐坏?yīng)對不力,其產(chǎn)生的破壞力將是巨大的。網(wǎng)絡(luò)作為社會(huì)輿情的主要載體,每天都有海量的輿情信息在網(wǎng)絡(luò)中快速傳播,但是這些信息真?zhèn)坞y以確定,容易被某些不法分子利用引發(fā)網(wǎng)上造謠、惡意煽動(dòng)等違法活動(dòng),為社會(huì)安定和諧帶來負(fù)面影響。在當(dāng)前風(fēng)云變幻的國際關(guān)系,以及我們國家正處于改革轉(zhuǎn)型期這一特殊國情這一現(xiàn)實(shí)下。不斷涌現(xiàn)涉及老百姓切身利益的熱點(diǎn)、焦點(diǎn)問題[fgl。所以網(wǎng)絡(luò)上會(huì)有對當(dāng)前社會(huì)不正當(dāng)不公平現(xiàn)象的揭露,也有對現(xiàn)狀不滿的清緒發(fā)泄,更具體的還有對某些事件的情況反映。如果政府部門不能及時(shí)發(fā)現(xiàn)這些問題并作出應(yīng)對措施,就會(huì)失去最佳的矛盾解決時(shí)機(jī)。因此,公安部門對網(wǎng)絡(luò)輿情的實(shí)時(shí)監(jiān)控十分重要。面對網(wǎng)絡(luò)輿情的發(fā)展現(xiàn)狀,公安部門肩負(fù)管理網(wǎng)絡(luò)、引導(dǎo)輿論的使命,既不能視之為洪水猛獸進(jìn)行圍堵,也不能束手無策,放任自流。而應(yīng)該對網(wǎng)絡(luò)輿情進(jìn)行實(shí)時(shí)的輿情監(jiān)控和輿論引導(dǎo),及時(shí)了解輿論動(dòng)向,傾聽基層民意,為維護(hù)網(wǎng)絡(luò)穩(wěn)定作出貢獻(xiàn),更好的為人民服務(wù)。但現(xiàn)有網(wǎng)絡(luò)輿情監(jiān)控軟件不能全面、準(zhǔn)確、及時(shí)對微博進(jìn)行監(jiān)控,不能滿足公安部門的實(shí)際需求。為了保證公安部門對微博的不良信息進(jìn)行有效的管控,本文研究了針對公安部門的微博輿情監(jiān)控系統(tǒng),自動(dòng)地對微博輿情進(jìn)行挖掘分析,為公安部門提供全面有效及時(shí)的微博輿情監(jiān)測。公安部門微博輿情監(jiān)控系統(tǒng)的實(shí)現(xiàn),能夠幫助公安部門正確應(yīng)對網(wǎng)絡(luò)輿情。能自動(dòng)對微博輿情進(jìn)行采集和分析,幫助公安部門對微博輿情進(jìn)行正確的引導(dǎo)和管理,盡量減少不良影響,并建立針對微博輿情突發(fā)事件的快速應(yīng)對機(jī)制,提高公安部門應(yīng)對水平。在以下幾個(gè)方面具有重要的現(xiàn)實(shí)意義:①了解民意②決策參考③社會(huì)監(jiān)督(反腐倡廉)④危機(jī)預(yù)防⑤危機(jī)管理⑥宣傳引導(dǎo)。我國的互聯(lián)網(wǎng)發(fā)展十分迅速,網(wǎng)民數(shù)量日益上升,使用微博的用戶逐步遞增,發(fā)展十分快速,其中,不免有些人利用微博的零門檻、廣泛性、即時(shí)性和匿名性等特點(diǎn)肆意的傳播淫穢色情和低俗信息,甚至是反動(dòng)信息來污染社會(huì)環(huán)境,特別是未成年身心健康。因此,如何的對微博中有害的信息進(jìn)行及時(shí)監(jiān)測與分析成為了當(dāng)前新聞媒體監(jiān)控的當(dāng)務(wù)之急。如何從海量的信息中提取出有價(jià)值的信息,并且對負(fù)面消極以及虛假反動(dòng)的信息進(jìn)行及時(shí)監(jiān)測與跟蹤,已經(jīng)成為了輿情監(jiān)測的重中之重,其中最為常用的方法就是利用數(shù)據(jù)挖掘技術(shù)。數(shù)據(jù)挖掘技術(shù)是一個(gè)多學(xué)科的交叉領(lǐng)域,以數(shù)學(xué)算法為核心,綜合了統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等多門學(xué)科。通過數(shù)據(jù)挖掘技術(shù),所得的結(jié)果因?yàn)榕懦巳藶榈母蓴_而十分具有客觀性。作為一種對數(shù)據(jù)進(jìn)行深層次分析的方法,可以通過對各類數(shù)據(jù)庫以及數(shù)據(jù)倉庫中的大量數(shù)據(jù)進(jìn)行處理,排除有噪聲、模糊數(shù)據(jù)的影響,分析和發(fā)現(xiàn)數(shù)據(jù)中蘊(yùn)含的可靠的、有價(jià)值的、新穎的、可以吸引人們注意力的有效信息。用戶可以將所得規(guī)律運(yùn)用到實(shí)際工作中,達(dá)到指定良好決策,提高工作效率,提升企業(yè)效益的目的[7]。尤其是數(shù)據(jù)分析領(lǐng)域,數(shù)據(jù)挖掘技術(shù)從提出起就在該領(lǐng)域取得了相當(dāng)大的成功。綜上,對于輿情監(jiān)測與分析系統(tǒng),要充分借助于數(shù)據(jù)挖掘技術(shù),建立完善的輿情監(jiān)控體系,提高輿情監(jiān)測的科學(xué)性和有效性。1.2國內(nèi)外研究現(xiàn)狀1.2.1國內(nèi)外輿情監(jiān)測研究現(xiàn)狀近年來,世界上各個(gè)國家都十分重視關(guān)于網(wǎng)絡(luò)信息的形成、傳播以及熱點(diǎn)發(fā)現(xiàn)等方面的技術(shù)。目前在網(wǎng)絡(luò)輿情研究主要有兩個(gè)方面:一個(gè)基于自然語言處理技術(shù)的研究,另一個(gè)是從數(shù)據(jù)挖掘的角度考慮,根據(jù)相關(guān)算法對信息進(jìn)行聚合和分類[8]。(1)國外輿情的研究現(xiàn)狀國外輿情研究相對于國內(nèi)起步很早,大約在19世紀(jì)初就開始,到了20世紀(jì)中期,輿情研究理論已經(jīng)走向成熟。其中最為著名的就是美國TDT研究項(xiàng)目[9]。TDT中的熱點(diǎn)話題檢測與跟蹤的基本思想源于1996年,由不同大學(xué)的研究人員開始定義話題檢測與跟蹤研究的內(nèi)容并進(jìn)行開發(fā)[10]。(2)國內(nèi)輿情的研究現(xiàn)狀目前我國對于網(wǎng)絡(luò)輿情的研究還處于起步和探索階段,缺乏有效的預(yù)警與分析方法,如人民網(wǎng)輿情、新天輿情等比較先進(jìn)的輿情分析系統(tǒng)都是建立在信息挖掘技術(shù)的基礎(chǔ)上的。Web信息挖掘技術(shù)的出現(xiàn)和發(fā)展,為解決網(wǎng)絡(luò)輿情問題提供了有效的技術(shù)手段。在國內(nèi),輿情概念最早由天津社會(huì)科學(xué)院研究所提出。并且隨之建立了我國第一個(gè)正式研究網(wǎng)絡(luò)輿情的研究機(jī)構(gòu),天津市社會(huì)科學(xué)院輿情研究所。在隨后的發(fā)展中,我國陸續(xù)成立了眾多輿情研究機(jī)構(gòu)或者提供輿情監(jiān)控的公司??傮w來說,這些單位可分為四類[11]。在以上幾類機(jī)構(gòu)中,其中北京拓爾思公司和北大方正電子政務(wù)公司比較出色。這些系統(tǒng)在結(jié)構(gòu)上基本都包括輿情信息的采集,信息的分析和處理以及輿情服務(wù)等幾個(gè)部分。在輿情信息采集方面,這類技術(shù)也發(fā)展迅速,在傳統(tǒng)的方法基礎(chǔ)上又出上了許多各具特色的技術(shù)。根據(jù)國內(nèi)外研究,其發(fā)展方向有如下幾種:增量型爬蟲,聚焦性爬蟲,用戶個(gè)性化爬蟲和基于Agent的爬蟲。增量型爬蟲:互聯(lián)網(wǎng)的網(wǎng)頁信息一致處于不斷的變化之中,網(wǎng)頁被刪除、網(wǎng)頁被更改或者更加網(wǎng)頁都是時(shí)時(shí)刻刻在發(fā)生。與普通類型爬蟲不一樣的是,增量型爬蟲在保持不斷的爬取新的網(wǎng)頁的同時(shí)也在更新已經(jīng)存在的網(wǎng)頁。聚焦型爬蟲:相對于通用網(wǎng)絡(luò)爬蟲覆蓋面太廣,所爬取的信息包含了大量的用戶不關(guān)心的信息,這樣不僅浪費(fèi)了大量的網(wǎng)絡(luò)資源以及存儲(chǔ)資源,用戶體驗(yàn)也不夠好。聚焦網(wǎng)絡(luò)爬蟲主要是是為了應(yīng)對不同領(lǐng)域、不同背景的用戶對數(shù)據(jù)需求不同而產(chǎn)生的。聚焦網(wǎng)絡(luò)爬蟲并不追求很大覆蓋面,它需要根據(jù)一定的網(wǎng)頁解析算法和鏈接過濾條件定向有目的的抓取一些相關(guān)的網(wǎng)頁資源。然后根據(jù)一定的搜索策略獲取下一步的URL,重復(fù)這個(gè)過程直到給定的條件達(dá)到。用戶個(gè)性化爬蟲:相對于聚焦型爬蟲,用戶個(gè)性化爬蟲更加注重于基于用戶興趣知道以及用戶交互方面。基于Agent的爬蟲:利用智能Agent的自主性、交互性、自發(fā)性、主動(dòng)性等特點(diǎn)與信息采集技術(shù)相結(jié)合,能夠使得爬蟲更加具有靈活性和適應(yīng)能力。1.2.2針對海量信息的數(shù)據(jù)挖掘研究及發(fā)展趨勢(1)數(shù)據(jù)挖掘研究現(xiàn)狀數(shù)據(jù)挖掘一詞得到真正意義上的廣泛流傳,是在第一屆“知識(shí)發(fā)現(xiàn)和數(shù)據(jù)挖掘”國際學(xué)術(shù)會(huì)議上。數(shù)據(jù)挖掘是一種需要利用各種方法,從大量數(shù)據(jù)集中提取出非平凡的、隱含的、潛在有用的信息、模式或規(guī)則的處理過程。數(shù)據(jù)挖掘不是一個(gè)簡單的動(dòng)作,而是一個(gè)以數(shù)據(jù)為驅(qū)動(dòng)的循序漸進(jìn)的數(shù)據(jù)探索過程。數(shù)據(jù)挖掘的技術(shù)基礎(chǔ)是機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué),被提取的信息可以有很多類型,有關(guān)聯(lián)型、聚類模型、總結(jié)型等。近年來,針對海量的微博信息相關(guān)的研究已成為了熱點(diǎn)研究方向,并取得了一定的進(jìn)展,相關(guān)的挖掘算法大致可以從分為以下幾個(gè)方面:在情感分析和挖掘方面,Read等研究了在情感分析中符號所起到的作用[12]。Wang研究對情感進(jìn)行分類通過利用圖的分類方法,把粒度細(xì)化到哈希標(biāo)簽中[13]。Guerra等提出了一種學(xué)習(xí)方法,該學(xué)習(xí)方法通過利用圖模型以及隨機(jī)游走模型來進(jìn)行實(shí)時(shí)的情感分析[14]。在熱點(diǎn)話題監(jiān)測與跟蹤方面,區(qū)別傳統(tǒng)的新聞媒體,微博的文本長度短,信息量少,特征關(guān)鍵詞不足以表示文本。針對微博的這種情況,很多學(xué)者進(jìn)行了多方面的研究和嘗試。陸榮等對微博數(shù)據(jù)稀疏性的處理辦法是通過利用LDA模型進(jìn)行隱主題建模,通過該模型來計(jì)算各個(gè)文本之間的相似度[15]。但是由于LDA模型需要對主題進(jìn)行反復(fù)抽樣,這樣將導(dǎo)致計(jì)算量過大,進(jìn)而影響處理數(shù)據(jù)的速度。CuneeytGurcanAkcora等提出了一種通過EmotionCentroid及SetSpaceModel的方法來發(fā)現(xiàn)Twitter中的熱點(diǎn)[16]。楊震等采用短文本層次化聚類去發(fā)現(xiàn)熱點(diǎn)話題,具體方法是將每一個(gè)本文看成一個(gè)字符串,并根據(jù)字符串的自身特性直接計(jì)算每個(gè)文本之間的相似性,進(jìn)而在次基礎(chǔ)上進(jìn)行層次化聚類[17]。Sasa和Miles等采用了一種新的算法,該算法可以快速地處理海量數(shù)據(jù)并且能夠不失精度[18]。ZitaoLiu等基于part-of-speech和HowNet擴(kuò)展單詞的語義特征,提出了一種特征選擇方法,該方法更加適合短文本從而改進(jìn)了聚類效果[19]。Ramage等更加注重個(gè)性化用戶信息的需求,提出了一種基于LDA的半監(jiān)督學(xué)習(xí)模型與Twitter特性化相結(jié)合的方法[20]。(2)數(shù)據(jù)挖掘的發(fā)展趨勢(一)數(shù)據(jù)預(yù)處理:未來的預(yù)處理可能會(huì)成規(guī)?;源_定分布式的、大的、復(fù)雜時(shí)間數(shù)據(jù)的新型有效模式。在現(xiàn)實(shí)世界中海量的數(shù)據(jù)必然包含中大量的噪聲、無效、重復(fù)等無效數(shù)據(jù),對這類數(shù)據(jù)的前期處理直接影響著聚類的效果,作為數(shù)據(jù)挖掘的重要的第一步,必須要對這個(gè)關(guān)鍵環(huán)節(jié)嚴(yán)加處理。(二)復(fù)雜數(shù)據(jù)對象:數(shù)據(jù)挖掘滲透到人類生活的各個(gè)領(lǐng)域,數(shù)據(jù)類型日益豐富,現(xiàn)有的可用的數(shù)據(jù)挖掘技術(shù)被限制為僅挖掘數(shù)據(jù)的傳統(tǒng)格式。在未來的發(fā)展趨勢中,數(shù)據(jù)挖掘技術(shù)將發(fā)揮潛力,重點(diǎn)探索有關(guān)復(fù)雜數(shù)據(jù)對象的挖掘,如高維數(shù)據(jù)挖掘、噪聲挖掘等。(三)Web挖掘:這一方向的主力軍是大型互聯(lián)網(wǎng)公司,如現(xiàn)在的Google和百度,還有社交及時(shí)通訊公司。他們更注重算法帶來的實(shí)際的搜索性能,提升熱點(diǎn)分析的能力,相應(yīng)的垂直搜索以及網(wǎng)絡(luò)輿情監(jiān)控等應(yīng)用得到了發(fā)展。1.3研究內(nèi)容和研究目標(biāo)(1)相關(guān)技術(shù)理論研究研究以數(shù)據(jù)挖掘(DataMining)技術(shù)、中文分詞技術(shù)、數(shù)據(jù)倉庫(DataWarehouse)技術(shù)、網(wǎng)絡(luò)爬蟲技術(shù)為技術(shù)手段的輿情監(jiān)測與分析系統(tǒng)。(2)獲取微博輿情信息方面不同于傳統(tǒng)的新聞、博客、論壇的信息獲取,對于具有海量的用戶以及信息,很強(qiáng)的實(shí)時(shí)性的微博來說,需要專門對獲取微博的頁面信息進(jìn)行設(shè)計(jì)。普通的網(wǎng)絡(luò)爬蟲并不很好的滿足本系統(tǒng)的需求,研究眾多的開源爬蟲框架,例如Nutch、Crawler4j、WebCollector等爬蟲框架,分析每一個(gè)特性和適用場合,需要設(shè)計(jì)出專門針對微博的網(wǎng)絡(luò)爬蟲。并且對于獲取的半結(jié)構(gòu)化的頁面信息,能夠很好的進(jìn)行抽取出所有的內(nèi)容。本部分研究內(nèi)容主要包括:對多種爬蟲框架的研究;對網(wǎng)絡(luò)爬蟲爬行策略的研究;對網(wǎng)絡(luò)爬蟲解析頁面算法的研究;(3)微博輿情信息分析方面本文重點(diǎn)研究內(nèi)容之一,借鑒傳統(tǒng)的方法對微博進(jìn)行熱點(diǎn)話題發(fā)現(xiàn)的研究成果,針對微博信息的特點(diǎn),研究通過K-means算法以及詞共現(xiàn)原理相結(jié)合的方法來識(shí)別主題詞挖掘熱點(diǎn)話題。本部分研究內(nèi)容主要包括:對抽取出的頁面信息進(jìn)行原始數(shù)據(jù)預(yù)處理,研究中文分詞技術(shù)對其進(jìn)行中文分詞,通過相對詞頻以及詞頻增加率兩個(gè)因素相結(jié)合計(jì)算詞的權(quán)重,然后獲取主題詞列表,最后利用本文提出的方法進(jìn)行聚類。通過改進(jìn)相關(guān)的文本處理技術(shù),提出了一種基于K-means算法與詞共現(xiàn)度相結(jié)合的方法去識(shí)別主題詞來挖掘熱點(diǎn)話題,是突發(fā)事件話題更加細(xì)化,從而提供輿情監(jiān)測的話題精度。(4)輿情信息的展示方面研究通過基于MVC模式的SSH2(Struts2+Spring+Hibernate)框架以及基于Flash的OpenFlashChart2開源報(bào)表組件來對輿情信息分析結(jié)果進(jìn)行可視化的直觀展示。1.4論文的章節(jié)安排本論文共分為五個(gè)章節(jié),結(jié)構(gòu)安排如下:第一章:本章簡單地介紹了論文的研究目的和意義,網(wǎng)絡(luò)輿情研究國內(nèi)外的研究現(xiàn)狀以及發(fā)展趨勢,并總結(jié)了本論文的研究內(nèi)容和目標(biāo),最后介紹了論文的結(jié)構(gòu)。第二章:本章介紹了輿情監(jiān)測與分析平臺(tái)在開發(fā)過程中所涉及到關(guān)鍵技術(shù):從微博開放平臺(tái)API以及網(wǎng)絡(luò)爬蟲技術(shù)兩方面介紹了信息提取技術(shù)。從數(shù)據(jù)挖掘的概念,過程和方法三方面介紹了數(shù)據(jù)挖掘。簡單介紹了中文分詞技術(shù)。最后從特點(diǎn)、數(shù)據(jù)組織、體系結(jié)構(gòu)方面介紹了數(shù)據(jù)倉庫技術(shù)。第三章:介紹了輿情監(jiān)測與分析平臺(tái)的模型設(shè)計(jì),包括需求分析、總體流程以及系統(tǒng)體系結(jié)構(gòu)。并簡單介紹了信息采集模塊,基于K-means算法和詞共現(xiàn)的信息分析模塊以及輿情展示模塊。第四章:對本文以上所提出了輿情監(jiān)測與分析模型設(shè)計(jì)進(jìn)行了實(shí)現(xiàn),具體為實(shí)現(xiàn)了信息采集的過程,對本文提出了基于K-means算法和詞共現(xiàn)的熱點(diǎn)話題發(fā)現(xiàn)方法進(jìn)行了實(shí)驗(yàn)和測試。最后展示了輿情展示模塊。最后,在結(jié)論部分對本文研究與實(shí)現(xiàn)的輿情監(jiān)測與分析平臺(tái)所做的工作進(jìn)行了研究成果總結(jié),指出了系統(tǒng)平臺(tái)的不足以,并對將來可以做出的更改和進(jìn)一步的工作進(jìn)行了展望。第2章 相關(guān)技術(shù)理論研究2.1信息提取技術(shù)2.1.1針對微博開放平臺(tái)API爬取信息因?yàn)槟壳靶吕宋⒉┳罹哂杏绊懥Γ驗(yàn)楸鞠到y(tǒng)數(shù)據(jù)來源選擇為新浪微博,以下所述微博若沒有特別指明均為新浪微博。新浪微博開放平臺(tái)有著海量的用戶以及強(qiáng)大的傳播能力,它可以為第三方合作用戶提供強(qiáng)大的應(yīng)用和完善的服務(wù)。該平臺(tái)擁有海量的用戶資源,截止到2013年3月底,微博用戶數(shù)已達(dá)到5.56億,活躍用戶數(shù)高達(dá)5000萬;多種SDK,包括C++、PHP、Java、ActionScript、Python等流行語言的軟件開發(fā)工具包。開發(fā)者可以創(chuàng)建各種具有創(chuàng)新力的站內(nèi)應(yīng)用、無線應(yīng)用、專業(yè)版應(yīng)用,以下為應(yīng)用的創(chuàng)建和發(fā)布的總體流程圖2-1。圖2-1微博API開發(fā)總流程圖無論是新浪微博還是國內(nèi)其他三大微博,其開放平臺(tái)的使用都是需要登錄以及認(rèn)證授權(quán)后才可以使用。目前各個(gè)微博開放平臺(tái)的授權(quán)機(jī)制都是通過OAUTH認(rèn)證來實(shí)現(xiàn)的。新浪微博的各個(gè)功能,例如發(fā)微博、傳照片、加關(guān)注,甚至是搜索功能都可以通過API來實(shí)現(xiàn)。如表2-1所示OAUTH2.0的授權(quán)流程。

表2-1OAUTH2授權(quán)流程圖2.1.2網(wǎng)絡(luò)爬蟲技術(shù)由于所有的開放平臺(tái)都會(huì)限制開發(fā)者對自身資源的使用。這是因?yàn)榛诎踩缘目紤]。每個(gè)平臺(tái)對API的限制策略基本相同。由于新浪微博API調(diào)用的限制,因?yàn)楸鞠到y(tǒng)還會(huì)利用直接通過web網(wǎng)絡(luò)爬蟲技術(shù)爬取數(shù)據(jù)。在當(dāng)今時(shí)代,網(wǎng)絡(luò)已經(jīng)深入人心,網(wǎng)絡(luò)已經(jīng)成為人們獲取信息的重要途徑。然后隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)上的信息也成指數(shù)級的增長,人們想要從海量的信息中獲取到自己所需要的信息是一件十分困難的事情,因此相關(guān)的搜索引擎技術(shù)也就應(yīng)運(yùn)而生,例如中國的百度和國外的谷歌都是該領(lǐng)域的巨人,簡單的來說搜索引擎就是把網(wǎng)絡(luò)上的信息數(shù)據(jù)進(jìn)行收集整理的系統(tǒng),這個(gè)系統(tǒng)的一個(gè)重要功能就是給用戶提供一個(gè)可查詢的入口。人們可以通過搜索引擎很方便的獲取到自己所需的信息。在搜索引擎中,如何獲取收集信息,就是該節(jié)所要介紹的網(wǎng)絡(luò)爬蟲。世界上第一個(gè)網(wǎng)絡(luò)爬蟲是webCrawler,是1994年出現(xiàn)?,F(xiàn)如今,已經(jīng)有了很多的類似的公司存在,每一個(gè)公司都會(huì)把他們自己開發(fā)的網(wǎng)絡(luò)爬蟲系統(tǒng)作為自己的商業(yè)機(jī)密不對外開放。網(wǎng)絡(luò)爬蟲簡單來說就是按照一種給及的規(guī)則,自動(dòng)的在互聯(lián)網(wǎng)上抓取相關(guān)信息的程序。本文介紹兩種爬蟲,一種是通用型爬蟲,一種是聚焦型爬蟲[21]。它們的工作流程圖如圖2-2下:圖2-2通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲流程圖如圖2-2所示,通用的網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲在開始的流程中基本上沒有什么區(qū)別,都是從一個(gè)或者若干個(gè)初始的URL開始,將該初始URL列表放入待爬去隊(duì)列。然后開始從待爬去隊(duì)列中開始循環(huán)拿出一個(gè)URL,打開這個(gè)URL的連接,開始下載該URL對應(yīng)的頁面,然后開始解析該頁面的所有的新的連接,獲取到新的所有的鏈接后,通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)的爬蟲在這一步開始出現(xiàn)區(qū)別。因?yàn)橥ㄓ镁W(wǎng)絡(luò)爬蟲覆蓋面太廣,所爬取的信息包含了大量的用戶不關(guān)心的信息,這樣不僅浪費(fèi)了大量的網(wǎng)絡(luò)資源以及存儲(chǔ)資源,用戶體驗(yàn)也不夠好。聚焦網(wǎng)絡(luò)爬蟲主要是是為了應(yīng)對不同領(lǐng)域、不同背景的用戶對數(shù)據(jù)需求不同而產(chǎn)生的。聚焦網(wǎng)絡(luò)爬蟲并不追求很大覆蓋面,它需要根據(jù)一定的網(wǎng)頁解析算法和鏈接過濾條件定向有目的的抓取一些相關(guān)的網(wǎng)頁資源。然后根據(jù)一定的搜索策略獲取下一步的URL,重復(fù)這個(gè)過程直到給定的條件達(dá)到。對于網(wǎng)絡(luò)爬蟲還有網(wǎng)頁搜索策略、網(wǎng)頁分析算法、重新訪問策略[22][23],平衡禮貌策略等。(1)網(wǎng)頁搜索策略對網(wǎng)頁的搜索方法一般有三種形式,分別是廣度優(yōu)先、最佳優(yōu)先和深度優(yōu)先,這幾種搜索方式各有利弊,但是其中最常見的是廣度優(yōu)先和最佳優(yōu)先相結(jié)合的方式,深度優(yōu)先由于常會(huì)使爬蟲產(chǎn)生陷入問題而不會(huì)被單獨(dú)使用。圖2-3頁面鏈接關(guān)系圖1)廣度優(yōu)先搜索廣度優(yōu)先搜索是一種簡單的圖的搜索算法之一,該策略的具體實(shí)現(xiàn)較為簡單。簡答來將,就是在抓取的過程中,先對當(dāng)前的一層進(jìn)行搜索,在完成該層同一級的所有網(wǎng)頁后,才開始從上一層獲取的所有鏈接中進(jìn)行下一層的搜索,以此類推,一層一層的搜索下去,直到指定的條件出現(xiàn)。這種搜索策略設(shè)計(jì)和實(shí)現(xiàn)比較簡單。但是有一個(gè)缺點(diǎn)就是隨著抓取的網(wǎng)頁越多,不相關(guān)的網(wǎng)頁也講大量的出現(xiàn),這個(gè)時(shí)候算法的效率將大打折扣。對于圖2-3頁面鏈接關(guān)系圖,廣度優(yōu)先的搜索路徑為:A-BC-DE2)深度優(yōu)先搜索深度優(yōu)先搜索也是一種簡單的圖的搜索算法之一,這個(gè)設(shè)計(jì)較為簡單。對于具體的網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)來說,就是從起始網(wǎng)頁開始,獲取這個(gè)網(wǎng)頁中所有的URL中,然后從這些URL中選擇一個(gè)URL再次進(jìn)入。就這樣一層一層的往深處爬取,直到一條線路達(dá)到盡頭再去處理另外一條路線。但是這種爬取的策略所獲得的網(wǎng)頁的價(jià)值比較低,因?yàn)殡S著層數(shù)的深入,網(wǎng)頁的重要程度相對于初始網(wǎng)頁要大大降低,網(wǎng)頁的價(jià)值都會(huì)相應(yīng)降低,因此對于這種策略,很少被使用。對于圖2-3頁面鏈接關(guān)系圖,深度優(yōu)先搜索路徑為:ABD-E-C(2)相關(guān)的開源爬蟲框架Nutch是一個(gè)開源的基于Lucene的Java實(shí)現(xiàn)的搜索引擎,由兩個(gè)部分組成,一個(gè)是全文搜索和Web爬蟲。Nutch是目前最好的爬蟲之一,支持分布式處理。但是對于獲取微博內(nèi)容由于需要實(shí)現(xiàn)模擬登陸過程,使用Nutch實(shí)現(xiàn)較為困難。Crawler4j是由YasserGanjisaffar開發(fā)的,用Crawler4j進(jìn)行爬取網(wǎng)頁,用戶只需要提供爬蟲的初始種子、線程的數(shù)量和對每個(gè)頁面的自定義操作即可。但是雖然Crawler4j提供了精簡的用戶接口,但是沒有自己的一套插件機(jī)制來定制自己的爬蟲,如果需要爬取微博的內(nèi)容,Crawler4j依然需要用戶自己實(shí)現(xiàn)模擬登陸的代碼,這方面就需要去修改它的源代碼去實(shí)現(xiàn)完成。WebCollector開源爬蟲內(nèi)核是結(jié)合了Nutch的爬取邏輯以及Crawler4j的用戶接口兩個(gè)優(yōu)點(diǎn),自己設(shè)計(jì)了一套插件機(jī)制,實(shí)現(xiàn)了一個(gè)爬蟲內(nèi)核,雖然也需要用戶在爬取微博時(shí)自己實(shí)現(xiàn)登陸的代碼,但是相對上兩個(gè)開源框架來說,WebCollector小而精,更加容易去實(shí)現(xiàn),將自己的插件嵌入它的內(nèi)核中。2.2數(shù)據(jù)挖掘理論基礎(chǔ)數(shù)據(jù)挖掘作為一種多學(xué)科交叉的技術(shù),可以被多種方法定義。這個(gè)詞是在一屆“只是發(fā)現(xiàn)和數(shù)據(jù)挖掘”國際會(huì)議上得到了廣泛的流傳。但是同時(shí)有部分學(xué)者認(rèn)為數(shù)據(jù)挖掘只是數(shù)據(jù)中的只是發(fā)現(xiàn)的一個(gè)過程,另有一部分認(rèn)為這兩個(gè)詞為同義詞。數(shù)據(jù)挖掘是一種需要利用各種方法,從大量數(shù)據(jù)集中提取出非平凡的、隱含的、潛在有用的信息、模式或規(guī)則的處理過程[24]。數(shù)據(jù)挖掘不是一個(gè)簡單的動(dòng)作,而是一個(gè)以數(shù)據(jù)為驅(qū)動(dòng)的循序漸進(jìn)的數(shù)據(jù)探索過程。數(shù)據(jù)挖掘的技術(shù)基礎(chǔ)是機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué),被提取的信息可以有很多類型,有關(guān)聯(lián)型、聚類模型、總結(jié)型等。2.2.1數(shù)據(jù)挖掘概念“啤酒與尿布”--數(shù)據(jù)挖掘史上最經(jīng)典的故事,也形象生動(dòng)的說明了數(shù)據(jù)挖掘的意義。數(shù)據(jù)挖掘即探索數(shù)據(jù)本身的潛力,從而找出數(shù)據(jù)間的聯(lián)系并提供給決策者有分析價(jià)值的統(tǒng)計(jì)結(jié)果、預(yù)測結(jié)果等。一般來說,數(shù)據(jù)挖掘的定義可分為兩類,一個(gè)是從技術(shù)角度定義,另一個(gè)是從商業(yè)角度定義[25]。數(shù)據(jù)挖掘的技術(shù)定義:從大量數(shù)據(jù)中挖掘有趣模式和知識(shí)的過程。它包括了以下幾個(gè)關(guān)鍵含義:數(shù)據(jù)源必須是真實(shí)大量的;目標(biāo)是發(fā)現(xiàn)用戶所關(guān)注的知識(shí);發(fā)現(xiàn)的知識(shí)是可被接受、易于理解、能夠應(yīng)用的;發(fā)現(xiàn)的知識(shí)無需適合各種復(fù)雜情況,僅需支持特定的業(yè)務(wù)問題即可。數(shù)據(jù)挖掘的商業(yè)定義:作為高新商業(yè)信息處理技術(shù)的代表,數(shù)據(jù)挖掘主要對商業(yè)數(shù)據(jù)庫中大量業(yè)務(wù)數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換、剖析和模型化處理,從中找出在輔助商業(yè)利益決策中起關(guān)鍵性作用的數(shù)據(jù)。商業(yè)的根本還在于利潤,所以挖掘的常見用途為客戶行為分析,購買力分析,風(fēng)險(xiǎn)預(yù)警分析等。2.2.2數(shù)據(jù)挖掘過程數(shù)據(jù)挖掘不是簡單的一個(gè)動(dòng)作,而是一個(gè)過程。數(shù)據(jù)挖掘的跨行業(yè)標(biāo)準(zhǔn)過程CRISP-DM將數(shù)據(jù)挖掘過程分為六個(gè)階段[25]。第一階段:業(yè)務(wù)理解。其主要任務(wù)為從業(yè)務(wù)角度理解項(xiàng)目的背景、目的和要求,將理解轉(zhuǎn)化為能夠使用數(shù)據(jù)挖掘方法實(shí)現(xiàn)的問題,并制定出完成目標(biāo)的工作方案。第二階段:數(shù)據(jù)理解。開始從數(shù)據(jù)源收集原始數(shù)據(jù),考查數(shù)據(jù)質(zhì)量,對數(shù)據(jù)形成初步的意向。第三階段:數(shù)據(jù)準(zhǔn)備。從收集到的原始數(shù)據(jù)著手,形成最終用于挖掘的數(shù)據(jù)集,在這個(gè)過程中會(huì)使用到數(shù)據(jù)清理、數(shù)據(jù)轉(zhuǎn)換等多種方法。第四階段:建立模型。依據(jù)目標(biāo)問題選定合適的建模方法,通過實(shí)驗(yàn)分析校對參數(shù)值,使其達(dá)到最優(yōu)狀態(tài)。這個(gè)階段里,一些建模方法對數(shù)據(jù)格式、數(shù)據(jù)細(xì)節(jié)有既定要求,有時(shí)也會(huì)面臨重新選取數(shù)據(jù)的情況。第五階段:模型評估。全面評估模型的質(zhì)量,回顧建模過程中的每個(gè)步驟,確保模型解決問題與業(yè)務(wù)目標(biāo)一致,并明確如何進(jìn)一步使用模型。第六階段:模型實(shí)施。以友好的交互方式展現(xiàn)模型挖掘出的知識(shí),使用戶能快速靈活配置應(yīng)用模型。在這六個(gè)階段中,前五個(gè)階段都不是簡單的線性關(guān)系,先后順序在實(shí)現(xiàn)目標(biāo)的過程中也會(huì)不同,各個(gè)階段都是循環(huán)往復(fù)、持續(xù)改進(jìn)的。2.2.3數(shù)據(jù)挖掘方法數(shù)據(jù)挖掘技術(shù)的研究方向主要是所應(yīng)用的算法以及知識(shí)的發(fā)現(xiàn)過程。在這些方向上,通過融合統(tǒng)計(jì)學(xué)、人工智能、機(jī)器學(xué)習(xí)等多個(gè)知識(shí)領(lǐng)域,提出了包括預(yù)測和評估、分類、聚類等多種數(shù)據(jù)挖掘的算法[25]。統(tǒng)計(jì)分析方法:該方法主要用來實(shí)現(xiàn)數(shù)據(jù)知識(shí)總結(jié)以及關(guān)系型數(shù)據(jù)挖掘。該方法對數(shù)據(jù)表中的不同屬性進(jìn)行統(tǒng)計(jì)分析,找到它們間的關(guān)系。這類分析方法可采用主要成分分析、回歸分析的分析方法。分類:該方法是要根據(jù)數(shù)據(jù)庫中數(shù)據(jù)對象的共同特點(diǎn),并按照分類模式將這些數(shù)據(jù)對象劃分到不同類當(dāng)中,這個(gè)過程也叫做“學(xué)習(xí)”,其目的是將數(shù)據(jù)庫中的數(shù)據(jù)項(xiàng)通過分類模型映射到某個(gè)給定的類別,有了分類模型,即可對新加入的數(shù)據(jù)進(jìn)行自動(dòng)預(yù)測并歸類。這類分析方法可采用決策樹、神經(jīng)網(wǎng)絡(luò)等。關(guān)聯(lián)規(guī)則:該方法是描述數(shù)據(jù)庫中數(shù)據(jù)項(xiàng)之間所存在的內(nèi)在關(guān)系的規(guī)則,在一個(gè)事務(wù)中,由于某些屬性數(shù)據(jù)的出現(xiàn)而導(dǎo)致另外一些屬性數(shù)據(jù)的出現(xiàn),即隱藏在各個(gè)數(shù)據(jù)項(xiàng)間的關(guān)聯(lián)。找到關(guān)聯(lián)后要對找到的關(guān)聯(lián)規(guī)則進(jìn)行正確性評估,評估時(shí)需要采用支持度和可信度兩項(xiàng)來作為評估參數(shù)。評估的意義在于確保這些根據(jù)已有數(shù)據(jù)獲得的關(guān)聯(lián)規(guī)則可以成功運(yùn)用到將來相似的情況中。聚類分析:把數(shù)據(jù)庫中的一組數(shù)據(jù)根據(jù)數(shù)據(jù)間的相似性和差異性分成若干類,其最終目的是確保構(gòu)成每一個(gè)類中的數(shù)據(jù)之間的相似性盡可能大,而不同類間數(shù)據(jù)的相似性盡可能小,這個(gè)分類的過程稱為聚類。聚類方法涉及到分類簇?cái)?shù)以及初始化基礎(chǔ)項(xiàng)兩個(gè)參數(shù),不同方法對于這兩個(gè)參數(shù)的依賴程度不相同。通過對特定的數(shù)據(jù)庫中數(shù)據(jù)的聚類,我們會(huì)發(fā)現(xiàn)數(shù)據(jù)屬性之間可能存在的相互關(guān)系和數(shù)據(jù)的分布情況。2.3中文分詞中文分詞(ChineseWordSegmentation)指的是將一個(gè)漢字序列切分成一個(gè)一個(gè)單獨(dú)的詞。分詞就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。對于輿情監(jiān)測與分析系統(tǒng)來說,做好中文分詞至關(guān)重要。本系統(tǒng)需要通過對主題詞的分析來進(jìn)行輿情監(jiān)測與分析,所以就需要中文分詞功能。在各類中文分詞器中,中科院分詞器ICTCLAS較為優(yōu)秀。該分詞器是在中科院計(jì)算技術(shù)研究所多年研究工作積累的基礎(chǔ)上,研制出的分詞器,主要功能包括中文分詞,詞性標(biāo)注,命名實(shí)體識(shí)別,新詞識(shí)別,同時(shí)支持用戶詞典。2.4數(shù)據(jù)倉庫DW技術(shù)數(shù)據(jù)倉庫的概念最早出現(xiàn)在20世紀(jì)80年代中期,是由著名學(xué)者W.H.Inmon在《建立數(shù)據(jù)倉庫》一書中提出的,因此他也被稱作“數(shù)據(jù)倉庫之父”;世界上最早的數(shù)據(jù)倉庫則是由NCR公司為全世界最大連鎖超市Wal-Mart在1981年建立的[26]。2.4.1DW主要特點(diǎn)與傳統(tǒng)的數(shù)據(jù)庫以及聯(lián)機(jī)事務(wù)處理相比,數(shù)據(jù)倉庫中的數(shù)據(jù)有以下一些特點(diǎn)[27]。(1)數(shù)據(jù)組織面向主題這種數(shù)據(jù)組織方式可以在較高的層次上完整一致地描述所要分析的對象,并且能刻畫出各個(gè)分析對象在其領(lǐng)域的各項(xiàng)數(shù)據(jù)以及數(shù)據(jù)間的關(guān)系[28]。因此,這種面向主題的組織方式具有更高的數(shù)據(jù)抽象級別,更利于針對某一主題進(jìn)行深入分析。例如通信行業(yè)針對客戶主題而組織起來的數(shù)據(jù),便于進(jìn)行客戶細(xì)分以及客戶流失情況分析。(2)數(shù)據(jù)集成化數(shù)據(jù)倉庫中的數(shù)據(jù)一般從企業(yè)或部門的基礎(chǔ)數(shù)據(jù)庫中抽取,并進(jìn)行一系列的篩選、清噪、重新組織等步驟而得到。針對不同數(shù)據(jù)來源的數(shù)據(jù)要統(tǒng)一數(shù)據(jù)格式、數(shù)據(jù)結(jié)構(gòu)等,如字段的同名不同義,同義不同名,字段長度,精度差異等。數(shù)據(jù)倉庫通常會(huì)輔助決策支持系統(tǒng),因此全面而正確的數(shù)據(jù)是產(chǎn)生有效決策的前提,只有將相關(guān)數(shù)據(jù)收集地越完整,得到的結(jié)果才能越可靠。(3)數(shù)據(jù)穩(wěn)定性因?yàn)闆Q策支持是建立在對大量歷史數(shù)據(jù)的分析之上,所以數(shù)據(jù)倉庫中的數(shù)據(jù)主要以歷史數(shù)據(jù)為主,并且針對歷史數(shù)據(jù)所做的操作主要為查詢和分析,在常規(guī)數(shù)據(jù)庫中常見的增刪改操作在數(shù)據(jù)倉庫系統(tǒng)中很少出現(xiàn)。圖2-4數(shù)據(jù)倉庫的數(shù)據(jù)穩(wěn)定性示意圖(4)數(shù)據(jù)隨時(shí)間而變化數(shù)據(jù)倉庫中的數(shù)據(jù)不更新是當(dāng)用戶進(jìn)行分析處理時(shí)才有效,并不是說整個(gè)數(shù)據(jù)倉庫的數(shù)據(jù)永遠(yuǎn)一樣永遠(yuǎn)不變[29]。它是隨著時(shí)間的變化而變化的,具體表現(xiàn)在以下三個(gè)方面:一是隨著時(shí)間的變化,數(shù)據(jù)倉庫中會(huì)增加新數(shù)據(jù)內(nèi)容。數(shù)據(jù)倉庫每隔一段時(shí)間會(huì)掃描數(shù)據(jù)庫,捕捉到數(shù)據(jù)的增加后追加到數(shù)據(jù)倉庫中,但并不會(huì)對原有數(shù)據(jù)進(jìn)行修改。二是隨著時(shí)間的變化,數(shù)據(jù)倉庫會(huì)刪除不用的舊數(shù)據(jù)。倉庫中的數(shù)據(jù)有存儲(chǔ)時(shí)間限制,超過了期限,就會(huì)對這些過期的數(shù)據(jù)進(jìn)行刪除操作。相應(yīng)的數(shù)據(jù)在進(jìn)入數(shù)據(jù)倉庫時(shí)都蓋有時(shí)間戳,一般的操作環(huán)境中只保存30-90天的數(shù)據(jù),而數(shù)據(jù)倉庫中保存的是具有很長時(shí)限的數(shù)據(jù),一般為5-10年,數(shù)據(jù)量為10T以上[30]。三是數(shù)據(jù)倉庫中包含有大量的綜合數(shù)據(jù),這些數(shù)據(jù)大都按照時(shí)間來進(jìn)行綜合,比如按時(shí)間來抽樣,按時(shí)間來進(jìn)行趨勢分析等,所以要對數(shù)據(jù)按照時(shí)間段來進(jìn)行新的綜合。2.4.2DW數(shù)據(jù)組織(1)DW數(shù)據(jù)組織結(jié)構(gòu)數(shù)據(jù)倉庫中,數(shù)據(jù)被分成四個(gè)級別:輕度綜合級、高度綜合級、早期細(xì)節(jié)級和當(dāng)前細(xì)節(jié)級[31],如圖2-5所示。早期細(xì)節(jié)級數(shù)據(jù)經(jīng)過綜合后,生成當(dāng)前細(xì)節(jié)級的數(shù)據(jù),這部分的數(shù)據(jù)是最近一段時(shí)間內(nèi)的業(yè)務(wù)數(shù)據(jù),隨著時(shí)間推移,也會(huì)逐步轉(zhuǎn)換為歷史數(shù)據(jù)。輕度綜合級的數(shù)據(jù)就是從當(dāng)前細(xì)節(jié)級數(shù)據(jù)中提取而來,設(shè)計(jì)這層的數(shù)據(jù)結(jié)構(gòu)需要考慮數(shù)據(jù)的粒度,粒度越大,細(xì)節(jié)程度越低,相應(yīng)的綜合程度就越高。高度綜合數(shù)據(jù)和輕度數(shù)據(jù)都是由細(xì)節(jié)數(shù)據(jù)聚合而來,二者是相對的概念,沒有絕對界限。圖2-5數(shù)據(jù)倉庫數(shù)據(jù)組織結(jié)構(gòu)圖在數(shù)據(jù)倉庫中,元數(shù)據(jù)是衍生品,是用來定義數(shù)據(jù)倉庫對象的數(shù)據(jù)[32]。它包括對數(shù)據(jù)倉庫數(shù)據(jù)名的定義、數(shù)據(jù)提取和清理操作、數(shù)據(jù)環(huán)境規(guī)劃、綜合算法運(yùn)用等。元數(shù)據(jù)扮演著不同的角色,主要有:(1)目錄作用。在決策支持系統(tǒng)中,輔助分析者定位數(shù)據(jù)倉庫中的數(shù)據(jù)。(2)映射指南。為數(shù)據(jù)由業(yè)務(wù)操作環(huán)境映射向數(shù)據(jù)倉庫環(huán)境時(shí)作指南。(3)算法指南。(2)DW數(shù)據(jù)組織形式數(shù)據(jù)倉庫的幾種不同的數(shù)據(jù)組織形式如下:(一)簡單直接文件簡單直接文件是數(shù)據(jù)倉庫數(shù)據(jù)組織方式中最簡單的。它每隔一段時(shí)間,就從基礎(chǔ)業(yè)務(wù)數(shù)據(jù)庫提取并處理數(shù)據(jù),然后存入數(shù)據(jù)倉庫中,逐漸積累后進(jìn)行數(shù)據(jù)快照并儲(chǔ)存。其特殊形式為“簡單堆積文件”,該種形式間隔時(shí)間固定為一天,即每天都要進(jìn)行快照并存儲(chǔ)。(二)連續(xù)文件連續(xù)文件是多個(gè)簡單直接文件的合并結(jié)果,它可以提供一段時(shí)間內(nèi)的數(shù)據(jù)細(xì)節(jié),并且可以繼續(xù)增加同類簡單直接文件豐富自己的內(nèi)容。通常的合并做法為在原表基礎(chǔ)上增加時(shí)間縱列。(三)定期綜合文件與其命名含義相同,定期綜合文件是在簡單直接文件的基礎(chǔ)上進(jìn)行綜合統(tǒng)計(jì)運(yùn)算,以時(shí)間(如日、月、季度、年)為單位,每隔相應(yīng)的時(shí)間段對數(shù)據(jù)進(jìn)行追加合并。因此,定期綜合文件將兩者結(jié)合,犧牲了數(shù)據(jù)細(xì)節(jié),從而減少了數(shù)據(jù)量級。2.4.3DW體系結(jié)構(gòu)目前被普遍接受的數(shù)據(jù)倉庫體系結(jié)構(gòu)為“三層結(jié)構(gòu)”理論[33],如下圖2-6所示。(1)數(shù)據(jù)獲取/管理層數(shù)據(jù)倉庫中的數(shù)據(jù)來自多個(gè)業(yè)務(wù)數(shù)據(jù)庫,這些來自四面八方的數(shù)據(jù)并不一定是理想的,必須經(jīng)過適當(dāng)處理才可以提供給上層的數(shù)據(jù)倉庫,同時(shí)數(shù)據(jù)倉庫本身也需要運(yùn)營維護(hù)。因此,這些任務(wù)都是數(shù)據(jù)獲取/管理層需要完成的。(2)數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)存儲(chǔ)層是數(shù)據(jù)倉庫的主題,它所存儲(chǔ)的數(shù)據(jù)主要包括三種類型,一是經(jīng)過清洗等處理,面向主題存放的來自外部數(shù)據(jù)庫的數(shù)據(jù);二是數(shù)據(jù)倉庫的元數(shù)據(jù);三是針對不同數(shù)據(jù)挖掘分析主題的數(shù)據(jù)集市。(3)數(shù)據(jù)分析/應(yīng)用層數(shù)據(jù)分析層主要面向用戶應(yīng)用,可以滿足用戶的查詢、分析等需求。它主要包括查詢/統(tǒng)計(jì),OLAP服務(wù),數(shù)據(jù)挖掘(DM)幾種功能[34]。圖2-6數(shù)據(jù)倉庫三層體系結(jié)構(gòu)2.5K-means算法1.K-means算法的基本概念K-means算法是典型的聚類算法,是發(fā)現(xiàn)給定數(shù)據(jù)集的K個(gè)簇的算法。簇的個(gè)數(shù)K是用戶給定的,算法將給定的數(shù)據(jù)集劃分到K個(gè)簇內(nèi),使這K個(gè)簇內(nèi)的數(shù)據(jù)對象具有高的相似度,而簇之間的對象具有低的相似度。2.K-means算法流程1)創(chuàng)建K個(gè)點(diǎn)作為起始的質(zhì)心2)根據(jù)簇的質(zhì)心,將每個(gè)對象劃分到距離最近的簇中3)重新計(jì)算簇的平均值,并將該平均值作為簇新的質(zhì)心4)計(jì)算評價(jià)函數(shù)5)重復(fù)執(zhí)行(2)至(4)步,直到聚類中心或者評價(jià)函數(shù)不在發(fā)生變化。3.K-means算法的不足原始K-means算法需要給定分類個(gè)數(shù)K以及初始聚類中心,并且這兩個(gè)參數(shù)對聚類結(jié)果的影響十分大,是典型的非監(jiān)督學(xué)習(xí)法。在本系統(tǒng)的應(yīng)用中,面對軟件和系統(tǒng)的使用者,我們無法要求他們直接給出專業(yè)合理的參數(shù)值,這就無法保證最終結(jié)果的合理性和有效性,系統(tǒng)的意義也就失去了。因此需要考慮如何消除分類個(gè)數(shù)K以及初始聚類中心對聚類效果的影響。2.6詞共現(xiàn)法在文本聚類中,常用的的是空間向量模型,但是應(yīng)對與微博的情況,由于微博的短文本的特點(diǎn),空間向量模型不能很好的表示。由此本文采用詞共現(xiàn)法來定義短文本之間的關(guān)系。詞共現(xiàn)是從詞語之間在文本中同時(shí)出現(xiàn)的概率方面來衡量詞語之間的相似度。詞共現(xiàn)原理的核心思想就是詞之間的語義關(guān)系通過他們之間的共現(xiàn)的頻率來表現(xiàn)出來的。關(guān)于詞共現(xiàn)原理有兩個(gè)重要的概念,一個(gè)是相對共現(xiàn)度一個(gè)是共現(xiàn)度,她們分別定義如下:詞A相對于B的共現(xiàn)度=詞AB在同一文本中同時(shí)出現(xiàn)的頻率/詞B在這一文本中出現(xiàn)的頻率詞A與B的共現(xiàn)度=(詞A相對于B的共現(xiàn)度+B相對于A的共現(xiàn)度)/2。2.7本章小結(jié)本章介紹了輿情監(jiān)測與分析平臺(tái)在開發(fā)過程中所涉及到關(guān)鍵技術(shù):從微博開放平臺(tái)API以及網(wǎng)絡(luò)爬蟲技術(shù)兩方面介紹了信息提取技術(shù)。從數(shù)據(jù)挖掘的概念,過程和方法三方面介紹了數(shù)據(jù)挖掘。簡單介紹了中文分詞技術(shù)。最后從特點(diǎn)、數(shù)據(jù)組織、體系結(jié)構(gòu)方面介紹了數(shù)據(jù)倉庫技術(shù)。第3章系統(tǒng)需求分析本文輿情監(jiān)測與分析平臺(tái)的數(shù)據(jù)來源主要是對新浪微博網(wǎng)頁信息的抓取獲得,通過這些微博信息及時(shí)地發(fā)現(xiàn)相關(guān)的輿情信息;該平臺(tái)需要對原始的信息進(jìn)行一系列的數(shù)據(jù)處理以及相應(yīng)的數(shù)據(jù)分析后提供可靠的輿情分析結(jié)果,能夠準(zhǔn)確的指出輿情信息以及某一輿情對應(yīng)的趨勢分析。系統(tǒng)最后還需要能夠自動(dòng)的生成輿情報(bào)告和各類的輿情分析數(shù)據(jù),并且可以進(jìn)行對應(yīng)的可視化的展示。3.1系統(tǒng)功能要求本系統(tǒng)可將平臺(tái)模型進(jìn)行一下幾個(gè)方向進(jìn)行研究:圖3-1輿情監(jiān)測與分析平臺(tái)(1)信息采集功能在很多情況下,網(wǎng)站的訪問都需要用戶登錄后才可以訪問資源,要想通過網(wǎng)絡(luò)爬蟲獲取微博頁面的信息就需要通過模擬登陸來實(shí)現(xiàn)。對于新浪微博的模擬登陸主要利用Fiddler進(jìn)行抓包分析后,利用HttpClient進(jìn)行模擬登錄,模擬登錄的重點(diǎn)是獲取頁面的跳轉(zhuǎn)以及cookie的保存。實(shí)現(xiàn)微博模擬登錄另外一個(gè)需要注意的情況是登錄的過程是隨時(shí)可能發(fā)生變化的,在以后如果需要實(shí)現(xiàn)模擬登錄需要根據(jù)當(dāng)時(shí)的抓包分析情況后再進(jìn)行登錄,但是大致的原理是一致的。信息采集系統(tǒng)通過研究開源爬蟲框架Nutch、Crawler4j和WebCollector爬蟲內(nèi)核,結(jié)合Nutch內(nèi)核+插件的機(jī)制以及Crawler4j良好的用戶接口的優(yōu)點(diǎn),研究實(shí)現(xiàn)了一套針對微博的多線程網(wǎng)絡(luò)爬蟲。信息采集主要包含兩個(gè)部分,頁面抓取和信息存儲(chǔ)。通過聚焦網(wǎng)絡(luò)爬蟲程序在微博頁面上進(jìn)行頁面抓取,并且利用jsoup開源框架進(jìn)行頁面解析,將獲得的信息進(jìn)行保存至數(shù)據(jù)庫中,為下一步的信息分析做好準(zhǔn)備。圖3-2信息采集功能(2)信息分析功能數(shù)據(jù)預(yù)處理是數(shù)據(jù)挖掘中極為關(guān)鍵的一步也是最為基礎(chǔ)的一部。因?yàn)閷τ谠紨?shù)據(jù),由于數(shù)據(jù)來源不單一,格式復(fù)雜不統(tǒng)一,噪聲數(shù)據(jù),無效數(shù)據(jù)的存在,會(huì)嚴(yán)重影響聚類的效果。對微博數(shù)據(jù)來說更是如此,微博數(shù)據(jù)中對于熱點(diǎn)話題的抽取來說還有大量的無用數(shù)據(jù),類似于廣告微博、個(gè)人性微博等,在進(jìn)行主題詞抽取之前,需要對這類的數(shù)據(jù)進(jìn)行篩選。信息分析本部分同樣包括兩個(gè)部分,數(shù)據(jù)預(yù)處理和數(shù)據(jù)分析。網(wǎng)絡(luò)爬蟲程序?qū)⒆ト淼木W(wǎng)頁信息經(jīng)過轉(zhuǎn)碼以及分段處理后將經(jīng)過數(shù)據(jù)預(yù)處理模塊進(jìn)行數(shù)據(jù)去噪,分詞,停用詞過濾,廣告詞過濾等處理。經(jīng)過數(shù)據(jù)預(yù)處理后的數(shù)據(jù)可繼續(xù)進(jìn)行數(shù)據(jù)分析。圖3-3信息分析功能1)微博要素分析以新浪微博為研究平臺(tái),微博中的信息基本可劃分為兩大類:用戶信息與微博項(xiàng)信息,每方面的信息又包含很多詳細(xì)信息,具體信息類別及內(nèi)容見表3-1。其中,用戶信息分為用戶標(biāo)識(shí)信息、用戶基本信息和用戶活動(dòng)信息,用戶標(biāo)識(shí)信息指的是對用戶有標(biāo)識(shí)作用的信息,如用戶名和用戶ID或用戶鏈接等;用戶基本信息的內(nèi)容很多,但數(shù)據(jù)參差不齊,較統(tǒng)一的有用戶城市,其次是用戶是否實(shí)名認(rèn)證用戶和是否含有個(gè)人描述;用戶活動(dòng)信息包括“關(guān)注”、“粉絲”和“微博”三部分,每一部分都有數(shù)目及列表信息。微博項(xiàng)信息則是指用戶發(fā)表的一篇微博的信息集合,由用戶標(biāo)識(shí)信息、微博項(xiàng)正文、微博項(xiàng)屬性信息、微博項(xiàng)引用信息組成。微博項(xiàng)的屬性信息包括發(fā)布時(shí)間、渠道、轉(zhuǎn)發(fā)及評論次數(shù)。其中時(shí)間通常是精確到分鐘的絕對時(shí)間,但12個(gè)小時(shí)內(nèi)發(fā)布的微博項(xiàng)時(shí)間采用相對時(shí)間形式,如“6小時(shí)/分鐘前”等;發(fā)布渠道指發(fā)布微博項(xiàng)的各類終端,包括各類手機(jī)客戶端,電腦網(wǎng)頁客戶端等;轉(zhuǎn)發(fā)次數(shù)記錄的是該微博項(xiàng)被直接轉(zhuǎn)發(fā)的次數(shù)評論次數(shù)是針對該微博項(xiàng)發(fā)表評論的用戶數(shù)目;微博項(xiàng)的引用信息是微博引用的原始微博項(xiàng)的信息,包含被引用微博的除時(shí)間和發(fā)布渠道外的其他信息,微博項(xiàng)的引用信息經(jīng)常與微博項(xiàng)正文中的標(biāo)志同時(shí)出現(xiàn),表示微博項(xiàng)被多個(gè)用戶連續(xù)轉(zhuǎn)發(fā)。表3-1微博信息類別及內(nèi)容信息類別信息內(nèi)容信息內(nèi)容描述用戶信息用戶標(biāo)識(shí)信息用戶名、用戶ID等用戶基本信息用戶城市、個(gè)人描述等用戶活動(dòng)信息關(guān)注、粉絲和微博數(shù)目及列表微博項(xiàng)信息用戶標(biāo)識(shí)信息發(fā)表微博用戶、用戶ID微博項(xiàng)正文發(fā)表微博內(nèi)容微博項(xiàng)屬性信息發(fā)布時(shí)間,渠道,轉(zhuǎn)發(fā)及評論次數(shù)微博項(xiàng)引用信息引用原始微博項(xiàng)信息2)微博輿情監(jiān)測要素分析突發(fā)事件引起的網(wǎng)絡(luò)輿情直接關(guān)系到社會(huì)穩(wěn)定,因此需要對突發(fā)事件的相關(guān)信息進(jìn)行認(rèn)真分析和判斷。突發(fā)事件網(wǎng)絡(luò)輿情的發(fā)生發(fā)展一般會(huì)通過某些變量特征得以體現(xiàn)識(shí)別這些變量對于監(jiān)測突發(fā)事件網(wǎng)絡(luò)輿情當(dāng)前的發(fā)展態(tài)勢至關(guān)重要。網(wǎng)絡(luò)輿情傳播的外在表現(xiàn)形式即是網(wǎng)絡(luò)信息數(shù)量的變化,所以根據(jù)網(wǎng)絡(luò)信息數(shù)量的變化可以描述網(wǎng)絡(luò)輿情傳播的影響程度,通過網(wǎng)絡(luò)信息量與網(wǎng)絡(luò)輿情影響程度成正向相關(guān)這一穩(wěn)定關(guān)系,便可以描述網(wǎng)絡(luò)輿情影響程度的變過過程。隨著信息量的變化,網(wǎng)絡(luò)輿情呈現(xiàn)不同的態(tài)勢這些態(tài)勢的變化決定了輿情的影響程度,因此可以通過監(jiān)測信息量的變化找到輿情的爆發(fā)點(diǎn),為突發(fā)事件網(wǎng)絡(luò)輿情的預(yù)警處理提供依據(jù)。首先對影響用戶的屬性變量進(jìn)行分析。用戶信息體現(xiàn)了用戶對輿情傳播的影響力網(wǎng)絡(luò)輿情如果沒有一定數(shù)量的網(wǎng)民關(guān)注,信息的傳遞渠道、方式和速度都會(huì)有所限制從而無法形成規(guī)模。評估用戶影響力最主要的三個(gè)特征是用戶粉絲數(shù)、認(rèn)證類別和微博數(shù)。粉絲是微博用戶信息發(fā)布和傳播的鏈條,用戶擁有的鏈條越多,聯(lián)系越頻繁,聯(lián)系對象的傳播能量越強(qiáng),那么該用戶發(fā)布的信息的傳播面就可能越廣,潛在影響力就越大。認(rèn)證類別是微博用戶在微博網(wǎng)絡(luò)環(huán)境中一種社會(huì)影響力與權(quán)威性的直觀展現(xiàn),依據(jù)其影響力大小劃分為不同的認(rèn)證等級,在新浪微博中主要包括三個(gè)認(rèn)證類別:普通用戶,微博達(dá)人以及實(shí)名認(rèn)證的大V用戶,這三種類別對輿情傳播的潛在影響力與可信度依次增強(qiáng)。微博數(shù)會(huì)影響到用戶的傳播能量,發(fā)表微博越多說明了用戶的活躍程度越高,有可能成為意見領(lǐng)袖,加快輿情傳播速度。本文以突發(fā)事件為切入點(diǎn)研究微博網(wǎng)絡(luò),在爬取微博數(shù)據(jù)的策略上與以往的在線社會(huì)網(wǎng)絡(luò)的研究不同,本文爬蟲分為4個(gè)步驟:1)通過微博搜索頁面,輸入關(guān)鍵字,獲取突發(fā)事件相關(guān)原創(chuàng)微博;2)爬取原創(chuàng)微博的轉(zhuǎn)發(fā)與評論;3)爬取參與其中的用戶個(gè)人信息;4)爬取用戶關(guān)系,指的是用戶的關(guān)注關(guān)系。所以系統(tǒng)整體需求框架圖如圖3-1所示:圖3-1爬蟲系統(tǒng)需求圖3-2爬蟲程序邏輯示意圖輿情展示:本部分主要為前端以及后臺(tái)的界面操作,并將分析的結(jié)果進(jìn)行可視化操作。(3)輿情展示實(shí)現(xiàn)輿情分析展示針對微博的熱點(diǎn)展示。數(shù)據(jù)進(jìn)行的熱點(diǎn)話題發(fā)現(xiàn),經(jīng)過數(shù)據(jù)預(yù)處理,主題詞抽取,話題聚類后展示出的熱點(diǎn)話題列表。3.2非功能需求除了以上功能性需求以外,還有以下的非功能性需求。(1)易用性需求:由于輿情監(jiān)測與分析平臺(tái)是由非工程師人員操作,因此該系統(tǒng)需要針對使用者的習(xí)慣以及要求進(jìn)行頁面的展示并且有著完善的文檔使其具有良好的操作性。(2)代碼可讀性:在系統(tǒng)開發(fā)過程中,所有涉及到的類,方法以及算法都應(yīng)該有著詳細(xì)的代碼注釋,并且配備有良好的文檔說明使其具有可讀性以及可理解性,以便后續(xù)開發(fā)者能夠更好地修護(hù)和升級。(3)容錯(cuò)及抗災(zāi)能力:在輿情監(jiān)測與分析平臺(tái)中,數(shù)據(jù)信息是最為基礎(chǔ)的一層,因?yàn)樽鳛閿?shù)據(jù)冗余備份至關(guān)重要。另一方面,對于在系統(tǒng)使用過程中有可能發(fā)生的任何錯(cuò)誤和異常都應(yīng)該具有詳細(xì)的日志文件以便能夠進(jìn)行排查糾錯(cuò)分析。

第4章系統(tǒng)設(shè)計(jì)4.1系統(tǒng)概述根據(jù)對系統(tǒng)需求的分析,系統(tǒng)總體流程圖如圖4-1所示。信息采集通過獲取一系列的網(wǎng)頁URL進(jìn)行抓取網(wǎng)頁信息,通過解析網(wǎng)頁獲得原始數(shù)據(jù)并進(jìn)行保存。信息分析獲取原始數(shù)據(jù)進(jìn)行預(yù)處理后,開始進(jìn)行算法分析,最后將結(jié)果進(jìn)行展示。圖4-1系統(tǒng)總體流程圖根據(jù)系統(tǒng)總體流程分析,設(shè)計(jì)如圖4-2所示的體系結(jié)構(gòu)。網(wǎng)絡(luò)爬蟲負(fù)責(zé)執(zhí)行從新浪微博獲取大量網(wǎng)頁信息的任務(wù)。按照人工設(shè)定的初始URL隊(duì)列,將網(wǎng)頁內(nèi)容下載到本地,再講網(wǎng)頁內(nèi)容進(jìn)行提取,為分析功能做數(shù)據(jù)準(zhǔn)備。網(wǎng)絡(luò)爬蟲主要分為模擬登錄以及網(wǎng)頁解析下載。模擬登錄主要用來負(fù)責(zé)模擬登錄認(rèn)證;網(wǎng)頁解析下載負(fù)責(zé)將半結(jié)構(gòu)化的網(wǎng)頁信息進(jìn)行結(jié)構(gòu)化的處理。信息分析主要對網(wǎng)絡(luò)爬蟲下載的信息進(jìn)行數(shù)據(jù)預(yù)處理以及數(shù)據(jù)分析。圖4-2系統(tǒng)體系機(jī)構(gòu)圖4.2信息采集功能設(shè)計(jì)信息采集功能研究最主要的就是網(wǎng)絡(luò)爬蟲的研究。為了在微博上進(jìn)行爬取以獲得網(wǎng)頁信息,首先必須解決登錄認(rèn)證問題,該功能可由模擬登陸實(shí)現(xiàn)。模擬登陸實(shí)現(xiàn)后需要進(jìn)行網(wǎng)絡(luò)遍歷,這個(gè)過程可以抽象為一個(gè)有向圖遍歷自動(dòng)機(jī)。在采集過程中,網(wǎng)絡(luò)爬蟲需有實(shí)現(xiàn)以下幾個(gè)特性:對采集的結(jié)果進(jìn)行結(jié)構(gòu)化處理;每一個(gè)獨(dú)立進(jìn)程都是同等的關(guān)系,獨(dú)立完成各自的任務(wù);能夠通過模擬提交搜索;具備可擴(kuò)展的架構(gòu),隨時(shí)應(yīng)對輿情分析對于數(shù)據(jù)采集的新需求。最后還需將采集到的數(shù)據(jù)進(jìn)行存儲(chǔ)。綜上所述,可將信息采集進(jìn)行五個(gè)功能劃分,分別為登陸管理,線程控制,網(wǎng)頁采集,網(wǎng)頁解析,數(shù)據(jù)存儲(chǔ)。根據(jù)面向?qū)ο笤O(shè)計(jì)模式原則進(jìn)行模塊依賴關(guān)系劃分,如圖4-3所示:圖4-3模塊依賴關(guān)系1、登陸管理在互聯(lián)網(wǎng)很多資源中,有一些資源必須經(jīng)過登陸認(rèn)證過后才可以進(jìn)行訪問。針對微博信息的獲取,必須進(jìn)行模擬登陸才可以獲取微博網(wǎng)頁上的各種信息?;ヂ?lián)網(wǎng)應(yīng)用一般都是采用的HTTP協(xié)議。HTTP協(xié)議是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,是無狀態(tài)協(xié)議。為了能夠識(shí)別請求的來源,應(yīng)用程序服務(wù)器就需要一種機(jī)制來對訪問狀態(tài)進(jìn)行識(shí)別與存儲(chǔ),一般來說都會(huì)采用session機(jī)制。本部分在研究分析時(shí),考慮到微博有兩種不同的登陸方式,一種是網(wǎng)頁微博,一種是手機(jī)端微博。因?yàn)槭謾C(jī)端微博的反爬蟲機(jī)制相對于網(wǎng)頁微博較為寬松。因此,除了在網(wǎng)頁微博上爬蟲數(shù)據(jù)外,還可以實(shí)現(xiàn)在手機(jī)端微博的爬取。2、線程控制從線程角度考慮,網(wǎng)絡(luò)爬蟲可以分為單線程和多線程。一般在爬蟲架構(gòu)中,為了提升爬蟲的性能,都需要采用多線程的爬蟲技術(shù)。本系統(tǒng)才采用多線程的架構(gòu),如圖4-4所示。圖4-4 多線程爬蟲結(jié)構(gòu)圖在對頁面進(jìn)行采集,分析的過程中,如果采用單線程網(wǎng)絡(luò)爬蟲,那么對于頁面的采集和分析這兩個(gè)步驟是不能夠同時(shí)進(jìn)行的,由于分析頁面的時(shí)間相對于下載頁面的時(shí)間來說較長,如果分析頁面越長,那么下載的效率就越低,這將十分的影響網(wǎng)絡(luò)爬蟲的運(yùn)行效率。因此對于這個(gè)過程將采用分層次的多線程網(wǎng)絡(luò)爬蟲,本系統(tǒng)主要由兩種線程,一種是頁面下載的線程,一種是頁面分析的線程。頁面下載線程的優(yōu)先級要高于頁面分析的優(yōu)先級,并且這兩類線程將采用生產(chǎn)者消費(fèi)者的模式來保證系統(tǒng)的正常運(yùn)行。3、頁面采集網(wǎng)絡(luò)爬蟲在微博網(wǎng)頁中的超鏈接上漫游,記錄URL和網(wǎng)頁內(nèi)容,本分模塊主要為URL的采集與處理。一般來說,會(huì)給爬蟲程序一個(gè)或者若干個(gè)初始URL,對該URL一次進(jìn)行訪問、索引、保存、過濾,去重等步驟。首先拿到初始的URL列表提取出URL,然后對該URL進(jìn)行頁面解析,目前大多數(shù)web頁面都是基于HTML的文檔,HTML是超文本標(biāo)記語言,在HTML中含有大量的<a>,<area>,<frame>標(biāo)簽,在這些標(biāo)簽中包含著大量的超級鏈接,在對URL處理的過程中,提取這些鏈接是重中之重。需要注意的是現(xiàn)在有很多網(wǎng)站的頁面代碼有一部分內(nèi)容是通過javascript腳本自動(dòng)生成,并不能直接通過HTML標(biāo)簽提取出這些鏈接,對于這種情況,首先需要的是執(zhí)行這些javascript腳本,然后從這些腳本生成的內(nèi)容中獲取這些超級鏈接,在提取到這些URL后,需要將這這些相對的URL進(jìn)行絕對化處理,然后放入未處理的URL隊(duì)列等待進(jìn)一步的處理。圖4-5URL提取過程URL處理過程主要包括URL標(biāo)準(zhǔn)化,URL去重,URL過濾。整體流程如圖4-6所示。圖4-6URL處理過程圖URL標(biāo)準(zhǔn)化主要工作有將URL中所有字母轉(zhuǎn)換為小寫字母,將&;字符串轉(zhuǎn)化為&,最后將URL中某些特殊字符%和ASCII碼轉(zhuǎn)為字符本身。URL過濾主要工作為匹配給出的正則表達(dá)式來完成過濾,因?yàn)橐粋€(gè)頁面包含有大量的對輿情信息無用的鏈接。最后URL去重,因?yàn)樵谛畔⒉杉^程中可能會(huì)爬取到重復(fù)的URL,這就需要將這些URL去除掉。URL去重方法一般通過哈希表去重和布隆過濾器去重。哈希表去重這種方法是通過計(jì)算正文信息的MD5碼來進(jìn)行對比實(shí)現(xiàn)的[35][36]。對MD5算法的簡要敘述可以為:MD5將輸入的信息以512位進(jìn)行分組(如果原始信息的位長對512求余不等于448則需要對原始信息進(jìn)行填充,填充規(guī)則是在信息后面填充一個(gè)1和無數(shù)個(gè)0直到滿足條件),將劃分后的分組再一次以32位進(jìn)行劃分,然后經(jīng)過一系列的處理后產(chǎn)生一個(gè)128位的散列值。但是利用哈希表去重有一個(gè)很大的缺點(diǎn)就是存儲(chǔ)效率低,浪費(fèi)存儲(chǔ)空間。因?yàn)楸鞠到y(tǒng)采用布隆過濾器進(jìn)行去重。布隆過濾算法也是一種基于哈希查找算法,但它比哈希表節(jié)約空間,它只需要哈希表1/8到1/4的大小就能解決相同的問題。該算法的基本思想為[37]:(1)布隆過濾器有k個(gè)哈希函數(shù)k1,k2……km,還有一個(gè)長度為m的位數(shù)組R,所有的位初始置為0。(2)設(shè)待處理元素集合為S={s1,s2,…,sn},共有n個(gè)元素。(3)增加元素的方法是對有n個(gè)元素的S進(jìn)行k個(gè)哈希函數(shù)的映射,將每個(gè)元素Si映射成k個(gè)值,然后將位數(shù)組R中對應(yīng)的置為1。(4)如果要查找某個(gè)元素x是否存在,則通過k個(gè)映射函數(shù)得到k個(gè)值,然后判斷該k個(gè)值對應(yīng)的位數(shù)組R中是否全為1,如果全為1則存在,否則不存在。4、網(wǎng)頁解析頁面解析利用開源框架HtmlUnit和Jsoup配合使用。HtmlUnit可以看成一個(gè)沒有界面的瀏覽器,正是因?yàn)闆]有界面,因此執(zhí)行速度十分快,由于現(xiàn)在大量的頁面不再是簡單的HTML表單,而是通過js代碼動(dòng)態(tài)生態(tài)信息,因?yàn)榭梢越忉宩s代碼從而獲取頁面動(dòng)態(tài)信息稱為頁面解析的重要部分。HtmlUnit內(nèi)置了Rhinojs引擎,因此可以執(zhí)行js代碼。5、信息存儲(chǔ)信息采集過程中的相關(guān)信息數(shù)據(jù)進(jìn)行存儲(chǔ),保證信息的完整、安全。4.3信息分析功能設(shè)計(jì)信息分析的主要研究是通過分析信息采集模塊采集到的原始信息得出相關(guān)輿情信息。由于原始信息包含有大量噪聲數(shù)據(jù),所以第一步首先是要進(jìn)行數(shù)據(jù)預(yù)處理。原始信息采集后,先進(jìn)行粗糙的去重處理。而后通過使用中科院的ICTCLAS分詞器進(jìn)行分詞,總體流程為初步分詞、詞性標(biāo)注、人名地名識(shí)別、重新分詞、重新詞性標(biāo)注五步。該分詞器速度快,精度高,受到各界的一致好評。針對于微博短文本的特點(diǎn),對分詞后的短文本特征向量進(jìn)行進(jìn)一步的數(shù)據(jù)預(yù)處理,例如去除分詞后少于3個(gè)詞的短文本特征向量。得到經(jīng)過數(shù)據(jù)預(yù)處理的短文本特征向量后,下一步就對么一個(gè)詞語進(jìn)行計(jì)算權(quán)重。在這里需要介紹三個(gè)重要的概念:詞頻TF,逆向文檔頻率IDF以及時(shí)間窗。一個(gè)是詞頻即指一個(gè)詞在一個(gè)文檔中出現(xiàn)的次數(shù),用詞頻作為構(gòu)成權(quán)重一個(gè)指標(biāo)的潛在意識(shí)是認(rèn)為一個(gè)詞在一篇文章中出現(xiàn)的次數(shù)越多越重要。當(dāng)然對很多詞來說是符合這個(gè)潛臺(tái)詞所指意義的,然而并不是所有出現(xiàn)次數(shù)很多的詞都重要。有些停用詞在文檔中出現(xiàn)很多次但是并不重要。因此另外一個(gè)重要的衡量指標(biāo)出現(xiàn)了,它就是逆向文檔詞頻IDF,其中DF表示詞語在一組文檔中的多少個(gè)文檔出現(xiàn)過,IDF表示詞語出現(xiàn)的文檔占總文檔的比例。通常詞語的權(quán)重由TF和IDF組合來表征。最后一個(gè)時(shí)間的概念是專門針對微博實(shí)時(shí)性以及短文本特性的,通過時(shí)間窗來計(jì)算詞頻的增長率可以看出該詞是否是潛在的主題詞。通過計(jì)算權(quán)重最終可以獲得單位時(shí)間窗內(nèi)的主題詞列表。最后通過K-means聚類算法與詞共現(xiàn)原理相結(jié)合對主題詞列表進(jìn)行短文本聚類,獲取熱點(diǎn)話題進(jìn)而分析相關(guān)輿情。4.4輿情展示功能設(shè)計(jì)輿情展示分為四部分,分別是:熱點(diǎn)話題展示,輿情趨勢分析,爬蟲管理,系統(tǒng)管理。

圖4-7 前臺(tái)展示模塊本系統(tǒng)前端采用SSH框架+OpenFlashChart2開發(fā),SSH框架是一種MVC模式架構(gòu),具有解耦合,可維護(hù),最大限度復(fù)用的優(yōu)點(diǎn)。其中M代表模型層,這一層的主要任務(wù)是封裝對象,與數(shù)據(jù)庫表產(chǎn)生映射關(guān)系方便對數(shù)據(jù)庫的訪問以及接受訪問數(shù)據(jù)庫返回出的信息;C代表控制層,這一層主要是處理應(yīng)用程序與用戶交互的部分,負(fù)責(zé)從視圖層獲取信息,向模型輸入數(shù)據(jù),或者拿到從數(shù)據(jù)出返回的信息將其封裝成模型返回視圖層;V代表視圖層,是要是處理系統(tǒng)顯示的部分,依據(jù)模型數(shù)據(jù)進(jìn)行創(chuàng)建,本系統(tǒng)采用JSP來進(jìn)行展示。OpenFlashChart2是一個(gè)基于Flash的開源報(bào)表組件,能夠動(dòng)態(tài)的生成各種線圖,餅圖,柱狀圖,可以很好的進(jìn)行可視化的展示。圖4-8SSH框架圖前端系統(tǒng)主要具有以下功能:實(shí)現(xiàn)用戶的登錄、用戶信息的管理??梢灾庇^的查看到某一時(shí)間段內(nèi)的熱點(diǎn)話題以及其熱度和相對應(yīng)的微博頁面??梢詫ε老x進(jìn)行管理,開啟爬蟲程序,單一的輸入初始URL或者以TXT文件形式輸入初始URL??梢詫﹃P(guān)鍵詞的趨勢進(jìn)行分析,展示發(fā)布相關(guān)微博的用戶的地域分布情況,展示關(guān)鍵詞的相關(guān)用戶的認(rèn)證情況。4.5本章小結(jié)介紹了輿情監(jiān)測與分析平臺(tái)的模型設(shè)計(jì),包括需求分析、總體流程以及系統(tǒng)體系結(jié)構(gòu)。并簡單介紹了信息采集模塊,基于K-means算法和詞共現(xiàn)的信息分析模塊以及輿情展示模塊。第5章 系統(tǒng)實(shí)現(xiàn)本系統(tǒng)的開發(fā)環(huán)境如下:硬件環(huán)境:系統(tǒng)拓?fù)浣Y(jié)構(gòu)采用B/S架構(gòu),CPU主頻2.5GHz,內(nèi)存12G,硬盤可擴(kuò)展,PC端采用普通計(jì)算機(jī)即可。軟件環(huán)境:操作系統(tǒng)為Windows7,數(shù)據(jù)庫采用Mysql5,應(yīng)用web服務(wù)器采用Apache-tomcat6版本。開發(fā)語言為Java語言,開發(fā)平臺(tái)為EclipseLuna4.4.1版本。5.1信息采集功能實(shí)現(xiàn)5.1.1微博模擬登陸(1)微博模擬登錄分析過程在很多情況下,網(wǎng)站的訪問都需要用戶登錄后才可以訪問資源,要想通過網(wǎng)絡(luò)爬蟲獲取微博頁面的信息就需要通過模擬登陸來實(shí)現(xiàn)。對于新浪微博的模擬登陸主要利用Fiddler進(jìn)行抓包分析后,利用HttpClient進(jìn)行模擬登錄,模擬登錄的重點(diǎn)是獲取頁面的跳轉(zhuǎn)以及cookie的保存。實(shí)現(xiàn)微博模擬登錄另外一個(gè)需要注意的情況是登錄的過程是隨時(shí)可能發(fā)生變化的,在以后如果需要實(shí)現(xiàn)模擬登錄需要根據(jù)當(dāng)時(shí)的抓包分析情況后再進(jìn)行登錄,但是大致的原理是一致的。如圖5-1描述了模擬登錄分析的大致流程。圖5-1模擬登錄分析流程圖1.首先利用Fiddler抓包分析軟件進(jìn)行分析,首先打開Fiddler軟件,然后打開瀏覽器,在瀏覽器地址欄輸入。Fiddler會(huì)自動(dòng)開始記錄和分析所有的http請求和http響應(yīng)。軟件界面如圖5-2所示左側(cè)為會(huì)話列表,右側(cè)上部為對應(yīng)的會(huì)話的HTTP請求,下部為對應(yīng)的HTTP響應(yīng): 圖5-2Fiddler軟件截圖2.我們在瀏覽器地址欄輸入后,通過觀察會(huì)話列表,服務(wù)器端會(huì)進(jìn)行不斷的跳轉(zhuǎn),從不同的位置向客戶端返回所需資源以及登錄所需資源。重要的交互記錄如圖5-3所示,選中的會(huì)話為微博預(yù)登陸,該會(huì)話會(huì)返回稍后登錄所需的幾個(gè)參數(shù):圖5-3預(yù)登錄會(huì)話選中的部分從/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=1387782049912站點(diǎn)GET到一些稍后登錄所需的參數(shù),將該網(wǎng)址輸入瀏覽器會(huì)獲得如圖5-4所示響應(yīng):其中servertime,nonce,pubkey都是用于密碼加密以及登錄所用的。圖5-4 返回參數(shù)3.在瀏覽器輸入賬號密碼進(jìn)行登錄,首先客戶端會(huì)向/sso/login.php?client=ssologin.js(v1.4.18)提交參數(shù),http請求參數(shù)如圖5-5所示,其中su表示POST的賬號,已經(jīng)經(jīng)過BASE64加密,sp為加密后的密碼,加密過程是經(jīng)過三次SHA1加密,其中加入了之前獲取的servertime和nonce的值。通過查看/signup/signin.php的源碼可以找到用于加密的JS文件ssologin.js,通過向該JS文件傳入pubkey,servertime,nonce,password四個(gè)參數(shù)就可以獲得三次SHA1加密后的sp。圖5-5提交參數(shù)4.通過上一步的POST請求,查看所返回的HTTP響應(yīng)報(bào)頭。如圖5-6所示,服務(wù)器端已經(jīng)返回cookie,這些cookie就記錄這用戶登錄信息,此后再訪問其他人的主頁或使用微博的應(yīng)用,服務(wù)器就可以通過cookie來檢測用戶的狀態(tài)了。圖5-6返回cookie列表此時(shí)雖然已近獲取cookie,但是還沒有登錄結(jié)束,通過觀察響應(yīng)實(shí)體,服務(wù)器再次進(jìn)行了頁面跳轉(zhuǎn),如圖5-7所示響應(yīng)實(shí)體部分:圖5-7響應(yīng)實(shí)體實(shí)體部分中將進(jìn)行頁面跳轉(zhuǎn),跳轉(zhuǎn)頁面為實(shí)體中l(wèi)ocation.replace()包含的url,通過再次請求該url,會(huì)返回HTTP狀態(tài)碼為302的提示,服務(wù)器會(huì)自動(dòng)再次進(jìn)行跳轉(zhuǎn)到/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&sudaref=。5.最后,就是新浪的SSO登錄了,服務(wù)器會(huì)再次的訪問。在次過程中因?yàn)閏ookie已經(jīng)寫入,登錄服務(wù)器后會(huì)返回302,自動(dòng)跳轉(zhuǎn)到用戶的主頁面。至此,分析模擬登陸的過程就完全結(jié)束。在實(shí)際利用代碼進(jìn)行登錄的時(shí)候,需要注意的是,在獲取cookie以后的所有的頁面跳轉(zhuǎn)和頁面請求都需要保持cookie。(2)微博模擬登錄實(shí)現(xiàn)微博模擬登錄使用Httpclient4.3輔助開發(fā)。該組件是一個(gè)提供了高效的HTTP協(xié)議的客戶端編程工具包,相對于JDK自帶的URLConnection,更加具有易用性和靈活性,不僅使客戶端發(fā)送HTTP請求更加容易,也方便了開發(fā)人員測試接口,提高了開發(fā)效率,也方便提高代碼的健壯性。圖5-8為實(shí)現(xiàn)微博模擬登錄核心類WeiboRobot結(jié)構(gòu)圖5-8類結(jié)構(gòu)圖微博登錄完整階段可以分為三個(gè)階段:第一步就是預(yù)登錄,是類WeiboRobot中的prelogin()方法。該階段主要是對用戶名進(jìn)行BASE64加密,然后構(gòu)造URL發(fā)送請求。目的是獲取服務(wù)器端參數(shù)servertime,nonce,pubkey,rsaky用以后續(xù)密碼的加密以及登錄使用。第二步是對密碼進(jìn)行加密,新浪微博目前為止對密碼加密是采用SHA算法加密。通過上節(jié)模擬登錄分析,我們可知可以從/signup/signin.php的頁面源碼獲取加密文件ssologin.js。查看JS文件,我們可以看出對密碼的加密方式是先進(jìn)行兩次的SHA加密,然后傳入第一步獲取的servertime,nonce,pubkey再進(jìn)行一次SHA算法加密。至此,就完成了對密碼的加密工作。第三部就是真正的登錄工作了,通過上節(jié)的分析過程,該步驟首先就是要設(shè)置參數(shù),其中就包括第一步獲取的su,servertime,nonce,pubkey以及第二步經(jīng)過加密的密碼sp以及其他固定的參數(shù),如圖5-9所示。然后執(zhí)行發(fā)送請求就可以獲取cookie,然后經(jīng)過一系列的頁面跳轉(zhuǎn)執(zhí)行,最終成功登錄。以獲取cookie,然后經(jīng)過一系列的頁面跳轉(zhuǎn)執(zhí)行,最終成功登錄。Stringurl-"/sso/login.php?client-ssologin.jsCvl.4.II)1';//設(shè)置參數(shù)List<NameValuePair>parms■newArrayList<NameValuePair>;parms.add(newBasicNameValuePairC"entry,'t"weibo"));parms.add(newBasicNameValuePair("gateway",”1"));parms.addCneviBasicNameValuePair(,'from,',parms.add(newBasicNameValuePair("savestate”,"7parms.add(newBasicNameValuePair("useticket","lparms.addCnewBasicNameValuePair("pagerefer1',"http://login.sina.com.cn/sso/logout.php?entry-miniblog&r-http%3AX2F%2Fweibo.comS62Fparms.addCnewBasicNameValuePairC'vsnfMparms.addCnewBasicNameValuePair("su",su));parms.addCnewBasicNameValuePair("service","miniblog"));parms.addCnewBasicNameValuePairC,servertime"fservertime?parms.addCnewBasicNameValuePair("nonce",nonce));porms.add(newBasicNomeValuePairC'pwencocJe"Vsa2"));parms.addCnewBasicNameValuePairC'rsakv",rsakv));parms.addCnewBasicNameValuePair(,'sp",sp));parms.addCnewBasicNameValuePairC'encoding,',"UTF-8"));parms.addCnewBasicNameValuePairCprelt*',"187"));parms.addCnewBasicNameValuePairC"url"/ajaxlogin.php?framelogin-l&callback-parent.sinaSSOController.feedparms.addCnewBasicNameValuePair(,'returntype","META"));圖5-9設(shè)置參數(shù)5.1.2信息采集信息采集系統(tǒng)通過研究開源爬蟲框架Nutch、Crawler4j和WebCollector爬蟲內(nèi)核,結(jié)合Nutch內(nèi)核+插件的機(jī)制以及Crawler4j良好的用戶接口的優(yōu)點(diǎn),研究實(shí)現(xiàn)了一套針對微博的多線程網(wǎng)絡(luò)爬蟲。下圖5-10為針對微博的多線程網(wǎng)絡(luò)爬蟲的類圖:圖5-10新浪微博網(wǎng)絡(luò)爬蟲類圖上圖列舉了新浪微博網(wǎng)絡(luò)爬蟲的核心類圖,它們之間的大致流程為Injector->Generator->Fetch->Visitor->DbUpdater。下面詳細(xì)介紹采集的原理和流程。首先就是將初始種子URL放入Injector的種子列表,在任務(wù)啟動(dòng)時(shí),系統(tǒng)會(huì)自動(dòng)向數(shù)據(jù)庫寫入初始URL,本文系統(tǒng)利用嵌入式數(shù)據(jù)庫BerkeleyDBJavaEdition在系統(tǒng)運(yùn)行時(shí)進(jìn)行URL的存儲(chǔ)。StandardGenerator是具體的任務(wù)生成器,它的作用是從數(shù)據(jù)庫中獲取爬取任務(wù)CrawlDatum,并進(jìn)行正則匹配,去重等過濾功能,然后將任務(wù)交給微博爬蟲的最核心的類抓取器Fetcher,F(xiàn)etcher是利用內(nèi)部靜態(tài)類QueueFeeder通過任務(wù)生成器獲取任務(wù)并存儲(chǔ)在FetchQueue等待隊(duì)列中,最后交給Fetcher內(nèi)部靜態(tài)類FetcherThread進(jìn)行多線程的爬取。在爬取的過程中會(huì)對網(wǎng)頁進(jìn)行URL解析,并且將獲取到的鏈接更新到數(shù)據(jù)庫中,并將網(wǎng)頁信息發(fā)送給網(wǎng)頁信息類UserHomePage,最后網(wǎng)頁解析器會(huì)對發(fā)送過來的網(wǎng)頁信息進(jìn)行解析,將所需的信息進(jìn)行抽取和存儲(chǔ)。在爬取過程中由于新浪微博反爬蟲機(jī)制應(yīng)該注意爬取間隔和線程數(shù)量的控制并且使用多個(gè)賬號,盡量避免賬號被限制或者被凍結(jié)。一般的web網(wǎng)頁主要組成元素為html,head,body,其中信息量最大的為body部分,利用Jsoup可非常輕松的解析網(wǎng)頁,獲取到所需的信息。但是在實(shí)際操作過程中,應(yīng)該注意微博的個(gè)人主頁基本上的body內(nèi)容都是JS代碼生成的,對于這種情況,Jsoup就有些力不從心了,因?yàn)镴soup沒有提供能夠執(zhí)行JS代碼的引擎,沒有辦法提取出JS代碼生成的網(wǎng)頁內(nèi)容。如圖5-11為爬取到的個(gè)人微博主頁的源代碼:<script>FM.view({"ns":"pi.content.homefeed.index",''domid":"v6_pl_content_homefeed","css":["style/cs*<script>FM.view({"ns":"pi.content.bubbleTip.index","domid*':"v€_pl_guide_bubbletip","css":□,"js":["J<script>FM.viewC{,'ns":"pi.content.hotdesktoptip.index","domid":,,v6_pl_content_hometip,',''css":□,Mjs1<script>FM.viewCI^ns":"pi.third.right.index","domid":"v6_pl_rightmod_recominfo","css":["style/css/m<<script>FM.view({"ns,':,"domid":"v6_pl_rightmod_ads36",''css1':["style/css/module/global/WB_ad.css?v*<script>FM.viewCt^ns":,'v6_trustPagelet_recom_member,'t"domid,':,,v6_trustPagelet_recom_member,',"css1':C<script>FM.view({,,ns":"pi.content.changeLanguage.index"t"domid":"plc_bot","css":□?"js":[nhome/js/pl<script>FM.view({"ns":"pi.guide.tacCountTips.index,',,'domid,':,'v6_pl_guide_homeguide,',''css*':□,"js":[*<script>FM.viewC{"ns":"pl.base.index","domid":"pl_comrnon_base","css":□js":["home/js/pl/base/inde)<script>FM.viewCf^ns":,"domid":"v6_pl_ad_bottomtip,'t"css1':["style/css/module/global/WB_ad.css?verj圖5-11個(gè)人微博主頁源代碼通過上圖可以清晰的看到,個(gè)人微博主頁的源代碼的body部分基本上都是JS腳本,仔細(xì)分析該段代碼,可以看出里面包含著一個(gè)JSON字符串,因此可以通過字符串操作取出JSON,然后通過對JSON對象的操作來解析網(wǎng)頁以獲取信息。5.2信息分析功能實(shí)現(xiàn)5.2.1數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理是數(shù)據(jù)挖掘中極為關(guān)鍵的一步也是最為基礎(chǔ)的一部。因?yàn)閷τ谠紨?shù)據(jù),由于數(shù)據(jù)來源不單一,格式復(fù)雜不統(tǒng)一,噪聲數(shù)據(jù),無效數(shù)據(jù)的存在,會(huì)嚴(yán)重影響聚類的效果。對微博數(shù)據(jù)來說更是如此,微博數(shù)據(jù)中對于熱點(diǎn)話題的抽取來說還有大量的無用數(shù)據(jù),類似于廣告微博、個(gè)人性微博等,在進(jìn)行主題詞抽取之前,需要對這類的數(shù)據(jù)進(jìn)行篩選。原始數(shù)據(jù)中各數(shù)據(jù)項(xiàng)的含義見表5-1:表5-1數(shù)據(jù)項(xiàng)含義預(yù)處理主要進(jìn)行一下篩選:1)去除“#話題名#”,“【話題名】”,這種話題通常由微博平臺(tái)或者人為發(fā)布,如“#微感動(dòng)#”,“【休閑風(fēng)】”,由于其人為因素較大,會(huì)使主題詞的抽取會(huì)產(chǎn)生較多的廣告詞以及人為高頻詞,最終導(dǎo)致聚類效果有較大的誤差。2)去除“@用戶名”格式的信息。這種格式的信息通常是普通用戶之間的隨意聊天式的信息,包含有熱點(diǎn)話題的可能性較小,上下文聯(lián)系不明顯,有可能會(huì)對聚類效果產(chǎn)生影響,因此需要去除。3)去除粉絲數(shù)和關(guān)注數(shù)之和小于某值的信息。這類用戶基本上屬于僵尸用戶或者是專門用作廣告營銷的微博用戶,他們所發(fā)布的微博信息通常都是廣告,不會(huì)包含有熱點(diǎn)話題的信息。4)去除含有Url鏈接的微博,通過前期數(shù)據(jù)處理發(fā)現(xiàn),大部分含有Url鏈接的微博為廣告微博。5)去除微博中表情符號,例如“[抽泣][給力]”等,這一類的微博中所包含的表情符號并不能直觀的反應(yīng)出具體的事件,無法抽取出相應(yīng)的文本,并且有可能會(huì)對聚類結(jié)果產(chǎn)生影響。另外由于本文對于主題詞的方法是基于時(shí)間窗的劃分的,所以我們還需要對所有的微博進(jìn)行時(shí)間劃分。具體實(shí)現(xiàn)類為CsvFileParserToSplitedTxts,類結(jié)構(gòu)如圖4-12:其中timeWindowSize為設(shè)置時(shí)間窗的變量。以上五個(gè)篩選步驟重要是通過正則表達(dá)式來過濾的。正則表達(dá)式如下:匹配#話題名#、@用戶名以及【話題名】的正則表達(dá)式:‘#.*#|@|【。*】’;匹配含有URL鏈接的正則表達(dá)式:‘/([a-zA-Z0-9{4,7}])’;匹配微博中表情符號的正則表達(dá)式:‘\\[.+?\\]’;圖5-12CsvFileParserToSplitedTxt類結(jié)構(gòu)圖經(jīng)過原始數(shù)據(jù)去噪處理后,第二步就是對數(shù)據(jù)進(jìn)行中文分詞,廣告詞過濾。中文分詞器有很多不同的算法和不同個(gè)人和機(jī)構(gòu)開發(fā)的工具。本文采用孫健開發(fā)的開源的Ansj中文分詞器,它是一款純JAVA的,主要應(yīng)用于自然語言處理,高精度的中文分詞工具,可用于人名識(shí)別、地名識(shí)別、住址機(jī)構(gòu)名識(shí)別、多級詞性標(biāo)注、關(guān)鍵詞提取、指紋提取等,支持行業(yè)詞典,用戶自定義詞典。本文采用該中文分詞器主要原因?yàn)殚_源,可根據(jù)自身需求進(jìn)行更改,并且小巧十分具有易用性和靈活性。通過大量的觀察原始數(shù)據(jù),可是發(fā)現(xiàn)有很多的廣告微博,主要是一些賬號進(jìn)行的微博營銷以及人們轉(zhuǎn)發(fā)的廣告微博,這些微博意義不大并且對于主題詞抽取有很大的負(fù)面影響,因此需要對此類微博進(jìn)行過濾,部分廣告詞如圖5-13所示。圖5-13廣告詞表每條微博經(jīng)過分詞后,會(huì)得到一個(gè)詞向量,查看廣告詞表,如果該詞向量包含三個(gè)不同的廣告詞就認(rèn)定該微博為廣告

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論