国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Spark框架的政府公文聚類方法研究

2020-03-30 03:19朱家麒徐亞軍
電腦知識(shí)與技術(shù) 2020年1期

朱家麒 徐亞軍

摘要:政府網(wǎng)站中的政府公文數(shù)目巨大,對(duì)政府公文進(jìn)行快速有效的分類,可以提供更好的用戶體驗(yàn)。本文提出基于spark分布式計(jì)算框架采用K-means算法對(duì)政府公文進(jìn)行分類的方法。首先從政府網(wǎng)站爬取足量的政府公文數(shù)據(jù),對(duì)其進(jìn)行數(shù)據(jù)預(yù)處理,再通過TF-IDF將處理后的政府文本信息轉(zhuǎn)換成二維矩陣,然后在spark計(jì)算框架中使用K-means算計(jì)進(jìn)行聚類。最后分別在單機(jī)和使用spark框架的分布式計(jì)算環(huán)境下進(jìn)行測(cè)試,三組實(shí)驗(yàn)結(jié)果表明,使用spark分布式計(jì)算框架進(jìn)行聚類有著更高的計(jì)算效率。

關(guān)鍵詞:Spark;公文聚類;TF-IDF;K-means

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)01-0210-03

隨著大數(shù)據(jù)、云計(jì)算之類的信息技術(shù)的發(fā)展,面對(duì)大數(shù)據(jù)帶來的數(shù)據(jù)采集、數(shù)據(jù)融合、數(shù)據(jù)傳輸、數(shù)據(jù)處理、數(shù)據(jù)計(jì)算、數(shù)據(jù)存儲(chǔ)等一系列問題,許多新的大數(shù)據(jù)計(jì)算框架和模型值得我們開發(fā)應(yīng)用。同時(shí)隨著大數(shù)據(jù)的深入應(yīng)用,國家已發(fā)布多個(gè)文件要求強(qiáng)化數(shù)據(jù)資源規(guī)劃,強(qiáng)化數(shù)據(jù)資源管理,推進(jìn)數(shù)據(jù)資源應(yīng)用。要求在2020年底前,建成覆蓋全國的“互聯(lián)網(wǎng)+政務(wù)服務(wù)”技術(shù)和服務(wù)體系。在“互聯(lián)網(wǎng)+”的背景下,針對(duì)政府要業(yè)務(wù)數(shù)據(jù)等各類數(shù)據(jù)的管理需求,走向“數(shù)據(jù)治理”成為實(shí)現(xiàn)治理體系和治理能力現(xiàn)代化的必然要求。信息渠道的變革,數(shù)據(jù)匯集管理也需要吸收新的技術(shù)。政府公文作為政府?dāng)?shù)據(jù)的一部分,需要對(duì)其進(jìn)行分類處理。正對(duì)著一部分本文考慮用spark計(jì)算框架下的聚類技術(shù),實(shí)行大數(shù)據(jù)技術(shù)下政府公文的分類,提高政府公文的分類效率。

1相關(guān)理論以及技術(shù)

1.1Spark并行計(jì)算框架

Apache spark是一種快速的集群計(jì)算技術(shù),專為快速計(jì)算而設(shè)計(jì)。它基于HadoopMapReduce,在MapReduce計(jì)算框架基礎(chǔ)上進(jìn)一步實(shí)現(xiàn)了分布式計(jì)算,以有效地將其應(yīng)用于更多類型的計(jì)算,包括交互式查詢和流處理。MapReduce是基于磁盤的運(yùn)行模式,運(yùn)算結(jié)果會(huì)暫存于磁盤上,增加內(nèi)存消耗和數(shù)據(jù)傳輸所占用的磁盤I/O的成本,極大的影響總體計(jì)算效率。而Spark將中間處理數(shù)據(jù)存儲(chǔ)在內(nèi)存中,數(shù)據(jù)在內(nèi)存中的處理速度至少是在磁盤中的10倍,通過這樣的方式減少對(duì)磁盤讀寫操作的數(shù)量,增加總體計(jì)算效率。

Spark是Hadoop在2009年加州大學(xué)伯克利分校的MateiZa-haria的AMPLab開發(fā)的子項(xiàng)目之一。它是在2010年根據(jù)BSD許可開放。

與Hadoop不同的是,Spark采用彈性分布數(shù)據(jù)集(ResilientDisTributedDataset,RDD)實(shí)現(xiàn)了以操作本地集合的方式來操作分布式數(shù)據(jù)集,對(duì)集群上并行處理數(shù)據(jù)在內(nèi)存上進(jìn)行分布式抽象,并基于RDD迭代式計(jì)算。RDD是spark最核心的部分,RDD必須是可序列化的。RDD可以緩存到內(nèi)存中,迭代計(jì)算的結(jié)果都可以放到內(nèi)存中,下一個(gè)操作可以直接從緩存中輸入,省去了MapReduce大量的磁盤I/O操作這對(duì)于迭代運(yùn)算比較常見的機(jī)器學(xué)習(xí)算法來說效率提升較大。Spark并行計(jì)算框架如圖1所示。

Spark的工作流程為:

(1)構(gòu)建spark應(yīng)用程序的運(yùn)行環(huán)境(啟動(dòng)Spark Context),SparkContext向Yarn資源管理器注冊(cè)并申請(qǐng)執(zhí)行器資源;

(2)資源管理器分配執(zhí)行器資源,執(zhí)行器運(yùn)行情況將隨著心跳發(fā)送到資源管理器上;

(3)SparkContext構(gòu)建成DAG圖,將DAG圖分解成階,并將任務(wù)發(fā)送給任務(wù)分時(shí)管理器。執(zhí)行器向Spark Context申請(qǐng)任務(wù),任務(wù)分時(shí)管理器將任務(wù)發(fā)送給執(zhí)行器的同時(shí)Spark Context將應(yīng)用代碼發(fā)送給執(zhí)行器;

(4)任務(wù)在執(zhí)行器上運(yùn)行,運(yùn)行完畢釋放資源。

1.2聚類算法

聚類算法是把距離作為特征,通過自下而上的迭代方式,快速的將一群樣本分成幾各類別的算法。聚類算法大致分為基于層次和基于劃分的兩種聚類,本文用到的K-means算法則是基于劃分的聚類算法。

K-means算法的步驟包括:

(1)數(shù)據(jù)集隨機(jī)選取k個(gè)數(shù)據(jù)作為初始的聚類質(zhì)心;

(2)計(jì)算剩余的樣本到聚類質(zhì)心的距離,并將其分配到距離最近的簇內(nèi);

(3)將每個(gè)簇的樣本平均值作為簇的新聚類質(zhì)心;

(4)判斷樣本的簇是否改變,若改變則返回(2)。

K-means算法的優(yōu)點(diǎn)有:

(1)算法快速簡單;

(2)對(duì)大數(shù)據(jù)集有著較高的效率并且可伸縮;

(3)時(shí)間復(fù)雜度呈線性,適合挖掘大規(guī)模數(shù)據(jù)集。

K-means算法的缺點(diǎn)有:

(1)在K-means算法中的K需要事先確定,K的確定非常難判斷,需要用不同的方法找出合適的K值;

(2)K的選取極大地影響了聚類結(jié)果,如果初始值選取的不好,可能無法得到有效的聚類結(jié)果。

1.3文本表示

文本是一種無結(jié)構(gòu)的數(shù)據(jù),想要進(jìn)行聚類,首先必須把文本表示成計(jì)算機(jī)能夠識(shí)別和處理的形式。本文采用最常用的向量空間模型(vSM),向量的每一維都由特征項(xiàng)及其權(quán)重組成,特征項(xiàng)的權(quán)重用TF-IDF的方法來計(jì)算。

其中tfik表示項(xiàng)tk在文本Di中出現(xiàn)的次數(shù),N表示全部訓(xùn)練集的文本數(shù),nk表示訓(xùn)練文本中出現(xiàn)tk。的文本頻率數(shù)。Z的取值要根據(jù)實(shí)際來確定,一般取0.01。

根據(jù)香農(nóng)信息學(xué)理論,如果項(xiàng)在文本中出現(xiàn)的頻率越高,則它包含的信息熵越少;如果項(xiàng)表現(xiàn)較為集中,只在少量文中中有著較高的出現(xiàn)頻率,那它則有著更高的信息熵。

考慮到文本長度也對(duì)權(quán)重有影響,還應(yīng)該將權(quán)重公式做歸一化處理,將各權(quán)重規(guī)范到[0,1]之間:

TF-IDF公式雖然不是一個(gè)嚴(yán)謹(jǐn)?shù)挠?jì)算公式,它只是根據(jù)以往經(jīng)驗(yàn)獲得的一個(gè)經(jīng)驗(yàn)公式,但是其在文本聚類處理方面的有效性值得我們拿來應(yīng)用。

2實(shí)驗(yàn)及數(shù)據(jù)分析

2.1實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)平臺(tái)配置為4個(gè)服務(wù)器節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)均為雙核、4GB內(nèi)存的PC;其中一臺(tái)作為master,其他臺(tái)作為slaves;每個(gè)節(jié)點(diǎn)操作系統(tǒng)均為CentOs;Hadoop版本為3.2.0,Java開發(fā)包為JDK1.8.0版本,Hadoop程序使用java編寫;spark版本為2.4.4,scala版本為2.11.12,spark程序由scala編寫。

政府公文數(shù)據(jù)采集自北京市政府網(wǎng)站。實(shí)驗(yàn)分別在單機(jī)和spark集群上分別測(cè)試。

2.2數(shù)據(jù)預(yù)處理

為了將待聚類文本成功輸入到spark的文本聚類程序,常規(guī)的去停用詞操作還不夠,還需要編寫格式處理程序,將待轉(zhuǎn)換的文本集合所有內(nèi)容寫入一個(gè)忪t文件,每一行存儲(chǔ)一篇公文的id,標(biāo)題和正文內(nèi)容。其中正文內(nèi)容是經(jīng)過分詞和去停用詞的詞序列,詞和詞之間使用空格隔開。如圖2所示:

2.3基于Spark的數(shù)據(jù)處理

基于sDark的K-means聚類實(shí)現(xiàn)步驟有:

(1)提交聚類任務(wù)給Master節(jié)點(diǎn);

(2)Master用手肘法確定合適的K值,用作初始的聚類質(zhì)心;

(3)Master計(jì)算數(shù)據(jù)節(jié)點(diǎn)到質(zhì)心的距離,將數(shù)據(jù)節(jié)點(diǎn)劃分到相應(yīng)的質(zhì)心;

(4)Master根據(jù)聚類質(zhì)心個(gè)數(shù)將任務(wù)劃分,并分配到每個(gè)slave節(jié)點(diǎn);

(5)Slave計(jì)算節(jié)點(diǎn)到聚類質(zhì)心的距離,將節(jié)點(diǎn)劃分到相應(yīng)的質(zhì)心;

(6)Slave計(jì)算新質(zhì)心的平均值,更行聚類質(zhì)心;

(7)計(jì)算準(zhǔn)則函數(shù);

(8)判斷聚類是否收斂,是則聚類成功,否則轉(zhuǎn)到(5)繼續(xù)執(zhí)行。

2.4實(shí)驗(yàn)結(jié)果對(duì)比

本文爬取了三個(gè)政府網(wǎng)站的公文,并對(duì)這三組公文分別做了聚類實(shí)驗(yàn),可以發(fā)現(xiàn)單機(jī)環(huán)境下聚類的耗時(shí)都遠(yuǎn)遠(yuǎn)大于在spark平臺(tái)上聚類的耗時(shí)。由此可以看出spark平臺(tái)上處理相同數(shù)量的文本比單機(jī)效率有著顯著提高。

3結(jié)論

本文在spark平臺(tái)上,通過實(shí)驗(yàn)驗(yàn)證了基于spark平臺(tái)的K_means公文聚類,發(fā)現(xiàn)聚類算法在處理大量公文時(shí)效率相比單機(jī)有著較為顯著的提升。

盐城市| 包头市| 定远县| 中方县| 天长市| 唐山市| 澄迈县| 吉林市| 长宁县| 千阳县| 宜兰县| 赤峰市| 缙云县| 平罗县| 江陵县| 临颍县| 沾化县| 丹棱县| 遂宁市| 淮滨县| 凉城县| 洱源县| 项城市| 津南区| 大足县| 当涂县| 呼图壁县| 嘉黎县| 襄樊市| 五家渠市| 从江县| 沂源县| 策勒县| 绥中县| 衡阳县| 阿勒泰市| 仪征市| 固阳县| 融水| 祥云县| 会理县|