張向榮
(商洛職業(yè)技術學院,陜西 商洛 726000)
中國是世界上人口第一大國,盡管貧困人口的基數(shù)不大,但是貧困戶的絕對數(shù)量依舊比較多。以習近平總書記為核心的黨中央實施精準扶貧戰(zhàn)略,持續(xù)增加扶貧投入,因人因地分類施策,從而更好地打贏脫貧攻堅戰(zhàn)。扎實推進精準扶貧工作開展的關鍵是對精準扶貧大數(shù)據(jù)的數(shù)據(jù)挖掘,通過數(shù)據(jù)挖掘技術來提供準確、全面、高效、個性化服務,滿足精準扶貧工作者對貧困人群海量信息的查詢、檢索需求[1]。分布式技術是當前提升數(shù)據(jù)檢索效率的最佳選擇,通過分布于不同節(jié)點的數(shù)據(jù)來執(zhí)行數(shù)據(jù)檢索任務,達到提升海量大數(shù)據(jù)檢索整體效率的目的。Hadoop 是分布式系統(tǒng)基礎架構,被廣泛應用于海量大數(shù)據(jù)的數(shù)據(jù)挖掘中。王倩等[2]針對傳統(tǒng)單機大數(shù)據(jù)集存儲與計算能力不足的問題,構建了基于Hadoop 集群平臺的中醫(yī)數(shù)據(jù)挖掘系統(tǒng),該系統(tǒng)具有良好的交互性與完備性功能,效率高、結果準確,能夠有效推動互聯(lián)網(wǎng)和中醫(yī)藥健康服務的深度融合發(fā)展。楊夏薇[3]針對傳統(tǒng)人力資源決策技術對海量人力資源數(shù)據(jù)辨別能力不高的問題,構建了基于Hadoop 大數(shù)據(jù)平臺的人力資源決策技術,通過決策樹分類算法生成人力資源決策分析報表,該決策技術相對于傳統(tǒng)的人力資源決策技術決策結果的完整度大大提升,能夠更好地滿足當前企業(yè)的發(fā)展需求。李爽等[4]提出基于Hadoop 框架的K 均值聚類算法,并將其應用于Higgs 數(shù)據(jù)集上進行聚類分析,表明該算法能夠在確保聚類準確率的前提下大幅度提升K 均值聚類算法的運算效率。
本研究在前人研究的基礎上,從檢索工作前期預處理的角度出發(fā)對數(shù)據(jù)識別進行判斷,挖掘和檢索信息化高度相關的數(shù)據(jù)集進行定位來提升檢索效果,提出了基于Hadoop 的分布式貧困戶檢索算法,有效規(guī)避全節(jié)點過濾不充分的問題,并將參數(shù)設置個性化應用于不同的場景中,達到個性化最佳效果,使得提出的數(shù)據(jù)挖掘算法具有更廣的應用價值。
本研究采用Hadoop 實現(xiàn)分布式信息檢索查詢,其基礎為面向對象的遠程方法調用(Remote Method Invocation)RMI技術。
分布式系統(tǒng)的基礎是遠程通信問題,解決本地調用遠程服務器。遠程調用是分布式系統(tǒng)進行遠程通信的核心,其實現(xiàn)了本地進行遠程服務器方法的調用。RMI基本體系結構如圖1 所示[5]。
圖1 RMI 體系結構
Stub/Skeleton 層,該層提供了客戶程序和服務程序彼此交互的接口;遠程引用層,該層是Stub/Skeleton 層和傳輸協(xié)議層之間的中間件,負責處理遠程對象引用的創(chuàng)建和管理;傳輸協(xié)議層提供了數(shù)據(jù)協(xié)議,用以通過線路傳輸客戶程序和遠程對象間的請求和應答。
并行系統(tǒng)軟件設計包括分治策略、階段并行、流水線方式、工作池方式以及主從模式5 種設計模式[6,7]。本研究設計的初始分布式檢索模型以主從模式為拓撲結構、以RMI 調用為技術原型,使得Client 端的調用與Server 端的調用完全一致,無需再考慮消息的組包、拆包等網(wǎng)絡通信問題。利用Java 反射機制,客戶和服務器之間的通信直接傳遞對象。Server 端采用一個接收線程、多個處理線程結構,通過一個call對象隊列連接。Client與Server 用一個線程保持一個連接,與同一個Server 的不同調用通過call對象的id 區(qū)分。系統(tǒng)結構如圖2 所示。
該系統(tǒng)由若干個數(shù)據(jù)服務器和一個主服務器組成[8-10],主服務器主要完成用戶查詢詞的向量轉換,維護一個數(shù)據(jù)服務器列表文件,建立遠程連接和檢索結果合并等工作。向量模型表示該步主要用來完成將用戶提交的檢索詞表示成向量模型。從查詢串中分出的每一個詞都是一個特征詞,同時用系統(tǒng)默認或者用戶自定義的方式為每一個特征詞賦予權值。服務器列表文件用來存儲數(shù)據(jù)服務器的訪問地址,通過在主服務器上設置一個簡單的數(shù)據(jù)服務器列表文件,方便管理員對數(shù)據(jù)服務器的了解。
由于體系架構上的每個信息節(jié)點檢索系統(tǒng)僅對本地的數(shù)據(jù)對象建立索引。當用戶提出一個檢索請求時,由于該系統(tǒng)本身沒有存儲被檢索數(shù)據(jù)的相關描述,每個檢索請求會被統(tǒng)一地分發(fā)到整個系統(tǒng)中的每個數(shù)據(jù)節(jié)點執(zhí)行計算,即為全文檢索工作,信息節(jié)點的持續(xù)增加、服務器性能等原因會制約整個系統(tǒng)的性能與可靠性。因此,本研究提出了基于數(shù)據(jù)特征的Hadoop 分布式檢索模型,將同類的數(shù)據(jù)聚合在一起,并且根據(jù)需要將聚合在一起的數(shù)據(jù)集模擬出一定維數(shù)的特征向量表示,當系統(tǒng)收到一個查詢請求的時候,首先會將檢索關鍵詞和特征索引表中的各向量做相似性比較,計算出一個數(shù)值,只有當該數(shù)值大于某個閾值的時候才認為該向量所表示的數(shù)據(jù)是真正和檢索項相關的,那么檢索詞被分發(fā)到此處進行檢索,使系統(tǒng)既有好的檢索結果,又有很高的搜索效率?;跀?shù)據(jù)特征的Hadoop 分布式檢索系統(tǒng)的體系結構如圖3 所示。
其中,數(shù)據(jù)分類模塊運用文本聚類方法將原始數(shù)據(jù)分割成子數(shù)據(jù)集,每個子數(shù)據(jù)集里包含的數(shù)據(jù)有較高的相似性,而不同的數(shù)據(jù)集之間在內容上有較大的差異。初始數(shù)據(jù)被分割成一塊塊按照內容相似度排列的子數(shù)據(jù)集后,數(shù)據(jù)特征抽取模塊負責抽取出各子數(shù)據(jù)集的特征向量。抽取得到的特征向量通過網(wǎng)絡發(fā)送到主服務器。
主服務器使用特征合并模塊,收集所有來自數(shù)據(jù)服務器的特征向量。根據(jù)各特征向量的相似度,將相似度較高的向量合并,合并后的特征向量被發(fā)送給數(shù)據(jù)特征索引表。該表記載最終的特征向量和該特征向量表示的數(shù)據(jù)集的訪問地址。查詢詞被封裝成特征向量后,進行全節(jié)點遍歷被發(fā)送到和向量相關的數(shù)據(jù)集,而與查詢向量內容不相關的數(shù)據(jù)集對于本次檢索不做任何工作,從而提升檢索效率。
基于數(shù)據(jù)特征的分布式檢索系統(tǒng)體系結構搭建的Hadoop 分布式系統(tǒng)包括一個分布式主節(jié)點、一個分布式主節(jié)點備份節(jié)點和若干個分布式從節(jié)點,主要由語言層、存儲層、執(zhí)行層和業(yè)務層4 部分構成,如圖4 所示。
圖4 Hadoop 分布式系統(tǒng)架構
語言層主要用于在Hadoop 基礎上搭建的頂層Hive 組件,該組件支持HQL 查詢語言以及Java 開發(fā)語言,存儲層使用NHadoop 的時間優(yōu)先的存儲策略,按照數(shù)據(jù)特征項及其對用時間戳的存儲結構HDFS中完成數(shù)據(jù)組織,執(zhí)行層采用并行計算框架MapReduce 可以直接訪問HDFS 中建立的時空索引結構。業(yè)務層將傳統(tǒng)的空間區(qū)域查詢操作以函數(shù)式編程MapReduce 的結構執(zhí)行在分布式系統(tǒng)框架上。
數(shù)據(jù)特征抽取完成后建立數(shù)據(jù)特征索引表,基于數(shù)據(jù)特征的分布式檢索系統(tǒng)就是利用數(shù)據(jù)特征索引表來存儲節(jié)點的特征表示和訪問地址的。數(shù)據(jù)特征索引表存儲了三維數(shù)據(jù),其結構可形式化地表示為<Id,Character,Address>,其中Id 表示類別編號,Character 表示數(shù)據(jù)特征,Address 表示與該特征對應的數(shù)據(jù)訪問地址。特征索引表的建立過程如圖5 所示。
從圖5 中可以看出,使用數(shù)據(jù)特征抽取步驟的輸出結果,對按權重排序的文件解析成向量模型,將這些向量統(tǒng)一發(fā)送到主服務器上,主服務器對這些向量進行相似性計算,合并相似的向量,并將合并得到的向量插入數(shù)據(jù)特征索引表中。
圖5 數(shù)據(jù)特征索引表建立過程
雖然同數(shù)據(jù)點上的數(shù)據(jù)被分成了多個類別,但是不同數(shù)據(jù)節(jié)點上的數(shù)據(jù)集可能比較相似,因此該向量是計算了所有節(jié)點上的向量相似度后得到的最終綜合向量。相似度的計算方法可用式(1)表示:
其中,w1k和w2k分別表示向量V1和V2的第k個特征項的權值。
生成一個聚類索引表的過程如圖6 所示。
圖6 特征索引表生成程序
不同地區(qū)的精準扶貧大數(shù)據(jù)之間具有比較大的差別,使得相似性閾值的設置應該結合不同的應用場景進行個性化設置。計算查詢向量與文檔特征向量之間的相似性,通過相似度來判斷查詢詞語數(shù)據(jù)群之間的相似關系。如果計算的相似性值大于設定的閾值,那么認為數(shù)據(jù)是相關的;反之認為數(shù)據(jù)是不相關的。
對于一維查詢向量,直接給該維特征的權重設置為1。在這種情況下,查詢向量和文檔特征向量的相似性計算可以簡單地理解為判斷在文檔特征向量中是否包含指定查詢詞的問題。如果查詢向量超過一維,對于5 維以內數(shù)據(jù)系統(tǒng)設置了默認權重,按照查詢關鍵詞的出現(xiàn)順序,初始值設置如表1 所示。
表1 查詢向量初始權重
為了驗證算法能夠結合參數(shù)設置被廣泛使用于不同的場景,選擇12 個不同類別的精準扶貧數(shù)據(jù)集,包含家庭基本情況、家庭貧困原因等多個方面的信息,并將其抽象為12 個特征向量,同時設置權重最高的前6 000 維參與運算。提交20 次檢索請求,統(tǒng)計平均值,統(tǒng)計結果如圖7所示。由圖7可知,當相似性閾值選擇在0.15 左右時,具有較好的效果,結果集包含相似的數(shù)據(jù)點,同時又過濾不相似的數(shù)據(jù)點。
圖7 相似性閾值統(tǒng)計
系統(tǒng)基于Linux 環(huán)境,通過3 臺PC 機組成6 個節(jié)點搭建Hadoop2.7.2 集群作為服務器。3 臺PC 機的配置一樣,CPU 為Intel(R)Core(TM)i7-7700 CPU@3.60 GHz,RAM 為8.00 GB,操作系統(tǒng)為Windows 7旗艦版,模擬程序由Java 編寫。試驗采用了TanCorpV1.0 的中文語料庫,共有23 368 個文檔,數(shù)據(jù)集的向量模型中特征詞的個數(shù)一般都在15 000 以上。
檢索結果主要利用查全率和查準率兩個方面來評價。查準率=(檢索出的相關信息量/檢索出的信息總量)×100%。查全率=(檢索出的相關信息量/系統(tǒng)中的相關信息總量)×100%。
在全節(jié)點遍歷和基于數(shù)據(jù)特征兩種分布式環(huán)境下進行檢索操作,數(shù)據(jù)結果如圖8 所示。
圖8 前N 條記錄的查準率
系列1 代表的是在全節(jié)點遍歷模式下N取不同值時,前N條記錄的查準率的大小。
系列2 代表的是系統(tǒng)使用的文檔特征向量占整個文檔特征向量總長度的2/3 時,前N條記錄的查準率的大小。
系列3 代表的是系統(tǒng)使用的文檔特征向量占整個文檔特征向量總長度的1/3 時,前N條記錄的查準率的大小。
從圖8 中可以看出,當N增大時,查準率降低,結果中包含的非相關文檔出現(xiàn)的幾率越大。本研究提出基于數(shù)據(jù)特征的分布式檢索系統(tǒng)的查準率總體高于全節(jié)點遍歷式的分布式檢索系統(tǒng)好,且在相對于結果集長度而言,N不是很大,參與計算的文檔特征維數(shù)在合理范圍內越小,前N條記錄的查準率越高。
系列1 為全節(jié)點遍歷,系列2 和系列3 分別表示在基于數(shù)據(jù)特征的分布式檢索系統(tǒng)中。由圖9 可以看出,在檢索結果文檔數(shù)目相同的情況下,基于數(shù)據(jù)特征的分布式檢索系統(tǒng)訪問的數(shù)據(jù)遠小于全節(jié)點遍歷模式,減少了訪問的數(shù)據(jù)源數(shù)量,節(jié)省了系統(tǒng)的總體計算和網(wǎng)絡資源。
圖9 檢索結果與文檔訪問數(shù)量的關系
本研究提出了基于Hadoop 的分布式貧困戶檢索架構,結合數(shù)據(jù)的特征項提取及文本聚類技術,對相似文本進行聚合,根據(jù)查詢精度要求建立對應文本特征向量空間,同時,過濾關聯(lián)性差的數(shù)據(jù),使其不參與搜索,以提升系統(tǒng)的執(zhí)行效率降低內執(zhí)行速度。貧困戶檢索算法可以結合參數(shù)設置個性化使用不同的應用場景,查全率和查準率對比全節(jié)點遍歷檢索具有較高的查全率和查準率,減少訪問的數(shù)據(jù)源數(shù)量,節(jié)省了系統(tǒng)的總體計算和網(wǎng)絡資源,具有很大的應用推廣價值。