• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于大數(shù)據(jù)和機器學(xué)習(xí)的微博用戶行為分析系統(tǒng)

      2017-04-26 22:13:13章博亨劉健朱宇翔吳帆程維
      電腦知識與技術(shù) 2017年6期
      關(guān)鍵詞:爬蟲項集引擎

      章博亨+劉健+朱宇翔+吳帆+程維

      摘要:網(wǎng)絡(luò)輿論對一個社會的發(fā)展有著不可忽視的作用,因此不免會有因“網(wǎng)絡(luò)輿情”控制網(wǎng)民的思想動態(tài)從而發(fā)生極端事件的可能。故此,筆者研究分析了國內(nèi)外大數(shù)據(jù)、機器學(xué)習(xí)等相關(guān)技術(shù)的發(fā)展現(xiàn)狀及未來趨勢。在結(jié)合國內(nèi)外的理論研究成果及相關(guān)技術(shù)的基礎(chǔ)上,融合Spider、Spark、Machine Learning、Spring MVC等多種技術(shù),設(shè)計與實現(xiàn)了基于大數(shù)據(jù)和機器學(xué)習(xí)的微博用戶行為分析系統(tǒng)。該文在對系統(tǒng)進行詳細分析的基礎(chǔ)上,實現(xiàn)了系統(tǒng)中的三個主要實體:Spider、Spark、web服務(wù)器,并對大范圍或定向數(shù)據(jù)抓取、自然語言處理、實時處理推送、NB訓(xùn)練、Apriori訓(xùn)練、FP-Growth訓(xùn)練、注冊登錄、情感分析等功能進行了實現(xiàn)。整個系統(tǒng)利用Scrapy爬蟲框架自定義實現(xiàn)多線程和分布式的數(shù)據(jù)抓取與存儲,并在Spark上離線訓(xùn)練NB、Apriori、和FP-Growth機器學(xué)習(xí)算法并且進行實時計算處理,與Hdfs 、Scrapy爬蟲 、Hbase和Oracle數(shù)據(jù)庫不斷進行交互,進而改變爬蟲抓取方式獲得定向的更詳細的用戶信息來進行深入分析,最終形成針對用戶行為的一個能進行自我學(xué)習(xí)的評判體系。通過Spring MVC技術(shù)開發(fā)高效的服務(wù)器端、Bootstrap、Echarts美化前端展示。最后對基于大數(shù)據(jù)和機器學(xué)習(xí)的微博用戶行為分析系統(tǒng)進行測試,該系統(tǒng)能夠完成預(yù)期的功能目標。

      關(guān)鍵詞:Scrapy;Spark;NB;Apriori;FP-Growth;Spring MVC

      中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2017)06-0212-02

      1 概述

      本作品運用業(yè)界流行的Spark分布式大數(shù)據(jù)平臺,自底向上設(shè)計并實現(xiàn)了一整套基于大數(shù)據(jù)的微博用戶行為分析系統(tǒng)。從分布式數(shù)據(jù)存儲、大規(guī)模網(wǎng)絡(luò)數(shù)據(jù)分析到實時數(shù)據(jù)可視化均采用spark框架搭建,構(gòu)建了一套完整的網(wǎng)絡(luò)安全云監(jiān)控平臺。綜合數(shù)據(jù)及內(nèi)容數(shù)據(jù),使網(wǎng)絡(luò)安全監(jiān)控不再單一化。本作品的主要研究內(nèi)容如下:

      1)構(gòu)建了分布式多進程Python爬蟲,并以此為基礎(chǔ)實現(xiàn)了高效的多節(jié)點實時數(shù)據(jù)收集方法,通過該方法對微博用戶行為數(shù)據(jù)進行收集,并通過hdfs、hbase、oracle進行數(shù)據(jù)的存儲格式轉(zhuǎn)換。

      2)通過算法建模不斷進行機器學(xué)習(xí),綜合使用字典判別、自然語言理解、人工智能判別及文本傾向性判別等方法,重點研究了中文語言處理的基礎(chǔ)方法,其中包含文本斷句、文本分詞、詞性分析等,完成采集到信息的初步處理,并且測試中其正確率至少能達到97%。

      3)搭建了基于Spark分布式大數(shù)據(jù)平臺,以MapReduce模型為主的Spark計算平臺和流式計算為主的Spark Streaming實時分析平臺。系統(tǒng)實現(xiàn)了以分布式的多進程python爬蟲為數(shù)據(jù)源的采集方法,實時分析統(tǒng)計數(shù)據(jù)并能發(fā)現(xiàn)危險網(wǎng)絡(luò)行為。

      4)采用spring+spring mvc+mybatis為框架搭建web端,研究設(shè)計了實時推送數(shù)據(jù)的Web服務(wù)器,直接通過WebSocket服務(wù)器將信息推送到Web端,能夠取得輕量級的良好效果。直觀地展示網(wǎng)絡(luò)數(shù)據(jù)以及網(wǎng)絡(luò)危險行為的情況。針對網(wǎng)絡(luò)用戶發(fā)布、轉(zhuǎn)發(fā)等內(nèi)容則將用戶正負傾向比例、熱點信息,時間趨勢變化等結(jié)果直觀展示,起到輔助決策的作用。

      2 系統(tǒng)總體設(shè)計

      根據(jù)云平臺網(wǎng)絡(luò)安全分析的技術(shù)特點及需求,結(jié)合現(xiàn)實情況,本文構(gòu)建了基于云構(gòu)架的大規(guī)模網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的詳細設(shè)計,平臺架構(gòu)如下圖所示,主要包括數(shù)據(jù)收集層,數(shù)據(jù)計算處理層,展示層和數(shù)據(jù)存儲層。

      2.1 數(shù)據(jù)采集層

      采用python編寫網(wǎng)絡(luò)爬蟲,Scrapy框架使用了Twisted異步網(wǎng)絡(luò)庫來處理網(wǎng)絡(luò)通訊。整體架構(gòu)大致如下:

      數(shù)據(jù)處理流程:

      Scrapy的整個數(shù)據(jù)處理流程由Scrapy引擎進行控制,其主要的運行方式為:

      1)引擎打開一個域名,蜘蛛處理這個域名,并讓蜘蛛獲取第一個爬取的URL

      2)引擎從蜘蛛那獲取第一個需要爬取的URL,然后作為請求在調(diào)度中進行調(diào)度

      3)引擎從調(diào)度那獲取接進行爬取的頁面

      4)調(diào)度將下一個爬取的URL返回給引擎,引擎將他們通過下載中間件發(fā)送到下載器

      5)當網(wǎng)頁被下載器下載完成以后,響應(yīng)內(nèi)容通過下載中間件被發(fā)送到引擎

      6)引擎收到下載器的響應(yīng)并將它通過蜘蛛中間件發(fā)送到蜘蛛進行處理

      7)蜘蛛處理響應(yīng)并返回爬取到的項目,然后給引擎發(fā)送新的請求

      8)系統(tǒng)重復(fù)第二部后面的操作,直到調(diào)度中沒有請求,然后斷開引擎與域之間的聯(lián)系

      2.2 數(shù)據(jù)計算處理層

      數(shù)據(jù)計算處理層主要包括離線批處理模塊、實時處理模塊。

      1)離線批處理模塊

      該模塊采用Spark編程模型,實現(xiàn)在大數(shù)據(jù)下(如:數(shù)個月內(nèi)熱門話題和用戶數(shù)據(jù))微博信息的分類和回歸分析的模型訓(xùn)練和加強(NB、Apriori、Fp-Growth)。Matei Zaharia等人證明在Spark集群上對39GB的數(shù)據(jù)集進行迭代式的機器學(xué)習(xí),響應(yīng)時間為次秒級,這一點比Hadoop集群快10倍到20倍之間。

      2)實時處理模塊

      該模塊在Spark平臺上使用Spark Steaming應(yīng)用完成。Spark Steaming對數(shù)據(jù)集按時間片段分割后再以批處理的形式計算數(shù)據(jù)。由于Spark Steaming是在Spark平臺構(gòu)架之上,計算過程的數(shù)據(jù)交換在內(nèi)存中執(zhí)行,因此計算效率高可以滿足實時性要求,而且兩者的編程模型也非常相似,如圖2所示,Spark系統(tǒng)和Spark Streaming系統(tǒng)的數(shù)據(jù)可以無縫對接,因此使用Spark生態(tài)系統(tǒng)同時部署離線處理系統(tǒng)和實時處理系統(tǒng)是可行有效的。

      3 算法詳設(shè)

      3.1 基于n-Gram+的特征粒度選取分詞模型

      假設(shè)一個句子S可以表示為一個序列,語言模型就是要求句子S的概率P(S):

      這個概率的計算量太大,解決問題的方法是將所有歷史按照某個規(guī)則映射到等價類,等價類的數(shù)目遠遠小于不同歷史的數(shù)目,即假定:

      當兩個歷史的最近的N-1個詞(或字)相同時,映射兩個歷史到同一個等價類,在此情況下的模型稱之為N-Gram模型,也被稱為一階馬爾科夫鏈。 N的值不能太大,否則計算仍然太大。

      假設(shè)我們?nèi)≡~長度N最長為12。如題名“如果你的生活中突然出現(xiàn)一個游俠”, 進行N元切分后,結(jié)果如下:

      1元組:如|果|你|的|生|活|中|突|然|出|現(xiàn)|一|個|游|俠

      2元組:如果|果你|你的|的生|生活|活中|中突|突然|然出|出現(xiàn)|現(xiàn)一|一個|個游|游俠

      ……

      12元組:如果你的生活中突然出現(xiàn)一|果你的生活中突然出現(xiàn)一個|你的生活中突然出現(xiàn)一個游|的生活中突然出現(xiàn)一個游俠

      之后我們根據(jù)最大似然估計(MLE),語言模型的參數(shù)變?yōu)椋?/p>

      其中,表示在訓(xùn)練數(shù)據(jù)中出現(xiàn)的次數(shù)。

      3.2 訓(xùn)練樸素貝葉斯模型判定用戶的危險程度

      樸素貝葉斯分類的正式定義如下:

      ① 設(shè)為一個待分類項,而每個a為x的一個特征屬性

      ② 有類別集合

      ③ 計算

      ④ 如果,則

      那么現(xiàn)在的關(guān)鍵就是如何計算第3步中的各個條件概率。我們可以這么做:

      ① 找到一個已知分類的待分類項集合,這個集合叫做訓(xùn)練樣本集。

      ② 統(tǒng)計得到在各類別下各個特征屬性的條件概率估計。即

      ① 如果各個特征屬性是條件獨立的,則根據(jù)貝葉斯定理有如下推導(dǎo):

      因為分母對于所有類別為常數(shù),因為我們只要將分子最大化皆可。又因為各特征屬性是條件獨立的,所以有:

      3.3 基于Apriori頻繁項集及關(guān)聯(lián)規(guī)則的挖掘

      Apriori原理:

      1)尋找頻繁項集:Apripri原理是說如果某個項集是頻繁的,那么它的所有子集也是頻繁的。對于之前給出的例子,這意味著如果{0,1}是頻繁的,那么{0},{1}也一定是頻繁的。這個原理直觀上并沒有什么幫助,但是如果反過來看就有用了,也就是說一個項集是非頻繁集,那么它的所有超集也是非頻繁的。

      2)尋找關(guān)聯(lián)規(guī)則:第1)中給出了頻繁項集的量化定義,即它滿足最小支持度要求。對于關(guān)聯(lián)規(guī)則,我們也有類似的量化方法,這種量化指標成為可信度。一條規(guī)則P->H的可印度定義為support(P|H)/support(P)。

      3.4 基于Apriori頻繁項集及關(guān)聯(lián)規(guī)則的挖掘

      將數(shù)據(jù)集存儲在一個特定的稱作FP樹的結(jié)構(gòu)之后發(fā)現(xiàn)頻繁項集或者頻繁項對,即常在一塊出現(xiàn)的元素項的集合FP樹。這種做法使得算法的執(zhí)行速度要快于Apriori,通常性能要好兩個數(shù)量級以上。

      該算法只掃描兩次數(shù)據(jù)即可發(fā)現(xiàn)頻繁項集,一個元素項可以出現(xiàn)多次,并被存儲頻率。每個項集會以路徑方式存儲在FP樹中,相似元素的集合會共享樹的一部分。只有當集合完全不同時,樹會分叉,其中節(jié)點連接即相似項之間的連接。

      除了FP樹,我們用字典作為數(shù)據(jù)結(jié)構(gòu)來保存頭指針表。除了存放指針外,頭指針表還用來保存FP樹中每類元素的總數(shù),其中字母代表項集,數(shù)字代表項集出現(xiàn)頻率。

      參考文獻:

      [1] 曹艷. 基于詞表和N-gram算法的新詞識別實驗[D]. 南京: 南京農(nóng)業(yè)大學(xué), 2007.

      [2] 楊志宏. 基于條件隨機場的中文分詞算法改進[D]. 煙臺: 海軍航空工程學(xué)院, 2012.

      [3] 徐榮. MRF模型在圖像分割領(lǐng)域的發(fā)展[D]. 南京: 東南大學(xué), 2008.

      [4] 吳黎兵, 柯亞林, 何炎祥, 等. 分布式網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[J]. 計算機應(yīng)用與軟件, 2011(11).

      [5] 樊嘉麒. 基于大數(shù)據(jù)的數(shù)據(jù)挖掘引擎[D]. 北京: 北京郵電大學(xué), 2015.

      [6] 馮琳. 集群計算引擎Spark中的內(nèi)存優(yōu)化研究與實現(xiàn)[D]. 北京: 清華大學(xué), 2013.

      猜你喜歡
      爬蟲項集引擎
      利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
      基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
      利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
      電子測試(2018年1期)2018-04-18 11:53:04
      藍谷: “涉藍”新引擎
      商周刊(2017年22期)2017-11-09 05:08:31
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      無形的引擎
      河南電力(2015年5期)2015-06-08 06:01:46
      基于Cocos2d引擎的PuzzleGame開發(fā)
      關(guān)聯(lián)規(guī)則中經(jīng)典的Apriori算法研究
      卷宗(2014年5期)2014-07-15 07:47:08
      一種頻繁核心項集的快速挖掘算法
      計算機工程(2014年6期)2014-02-28 01:26:12
      一種新的改進Apriori算法*
      郧西县| 青岛市| 察雅县| 闻喜县| 金寨县| 平昌县| 嘉义县| 云龙县| 武清区| 霸州市| 汾阳市| 寿光市| 连平县| 成武县| 仙居县| 太湖县| 通榆县| 平顺县| 翁牛特旗| 闵行区| 诸暨市| 卢湾区| 阿拉善右旗| 平果县| 寻乌县| 抚顺县| 兴仁县| 林州市| 康保县| 玛纳斯县| 南澳县| 会东县| 宁波市| 牟定县| 茌平县| 库尔勒市| 吉林省| 都江堰市| 惠安县| 贵州省| 尚义县|