陳珉 彭鸞 李釗
摘要:近年來,自媒體發展速度非常迅猛,傳統媒體積極擁抱新媒體,加速媒體深度融合步伐。媒體生產數據、互聯網發布的數據,每天有海量的數據需要分析處理,用于熱點新聞發現、新聞選題評價、傳播效果分析等應用場景。傳統的數據分析框架已經不能滿足用戶實時數據分析和查詢的需求。本文提出一種能夠適應用戶連續處理分析海量文本數據的框架,具有低延時、可擴展的特點。
關鍵詞:自然語言處理;流式計算;傳統媒體
一、背景
當前,大數據產業深刻改變著人類的生產和生活。地方媒體詳細記錄了地區發展變遷的歷程,存有大量的文字、圖片、視頻等歷史資料。同時,在互聯網上每天有海量的新聞產品發布。將這些沉睡的、分散的數據有效匯聚、管理、挖掘、應用。在支撐媒體產品生產同時,服務于媒體自身的精準營銷,還可以高效便捷的為政府機構、社會企業與民眾提供資料網絡查詢、城市資訊綜合服務等。逐步實現傳統媒體和新媒體的融合發展,變“內容為王”為“信息服務為王”。
二、面向自然語言處理的流式計算框架設計
本文選用JStorm框架為流式計算平臺的基礎,完整的面向自然語言處理的流式計算框架,包含數據源模塊、預處理模塊、實時計算模塊、存儲模塊以及反壓機制。
(1)數據源模塊
數據源模塊的作用是將數據不斷的送入JStorm中。本框架中采用的方法是接收用戶提交TXT、WORD、PDF、XML格式的文件,通過不同格式的文件解析器,解析文件中的內容信息。之后,將大文本拆分為多個小文本以及進行數據格式封裝。數據封裝是為了加入文本標簽、文本歸屬、唯一標識、調用的算法等信息,完成封裝后,進入Redis緩存。
(2)預處理模塊
預處理模塊的作用是對需要處理的文本進行預處理。預處理模塊在JStorm中是一個Bolt組件,包含了中文分詞、信息抽取等基礎算法。對待分析文本調用哪些基礎算法,根據數據源模塊中的封裝定義的。
(3)實時計算模塊
文本數據流通過實時計算模塊分別流入不同的具有高并行度的任務中,任務中運行的是不同的算法,使用分布式鎖來保證數據的最終一致性。對任務的管理使用動態平衡算法對任務分配規則加載,而不會影響正常的處理過程。這樣的機制具有很高的動態穩定性,無論是動態增加計算能力,還是動態管理算法配置,都不會影響正常的服務。開發人員需要實現框架針對應用開發人員提供的API,對數據對象、計算邏輯進行內部封,也可以完成詞庫和算法模型的調用。
針對自然語言處理的使用場景,對JStorm的實時計算框架進行了一些優化處理。實時任務查詢功能,根據數據源模塊中封裝的唯一任務標識進行任務進度查詢。圖形化任務發布功能,是在網頁上可以將算法任務發布成處理的任務。任務分配模塊,主要是優化算法調用的順序,通過Redis通知來實現?;瑒哟翱诠芾?,通過定時輸出采樣數據,使用TOPN算法,輸出滑動窗口內,系統的數據統計特征。
(4)存儲模塊
存儲模塊是將分析處理后的結果落地,用于可視化的展示使用。存儲模塊分兩類,一類NoSQL數據庫,一類是網絡文件系統NFS。在實時計算平臺最后一個Bolt節點,使用Redis數據庫將計算結果緩存下來,并發送消息通知給可視化展示模塊??梢暬故灸K,在收到通知后,將最終的結果用JSON格式存儲在文件系統中。對于中間過程,可視化模塊通過展示Redis緩存數據,可顯示中間過程。使用Redis作為緩存,保證了在計算節點宕機的情況,數據的恢復能力。
(5)反壓機制
由于Spout數據源的處理能力不均及承載算法Bolt節點的任務處理時長的差異性,導致Tuple數據流有時存在超時現象,影響系統整體的吞吐量及其性能。本系統是在Spout節點中使用基于隊列的數據流反壓機制來優化上述問題。在Spout節點中訂閱Redis通知,在收到Redis推送的通知后,將消息ID和消息內容壓入消息隊列,消息隊列使用LinkedTransferQueue和ConcurrentHashMap實現數據對象的臨時緩存。不斷調用的nextTuple函數會從消息隊列中拉取消息,并發射數據到Bolt算法節點中。
三、物理部署
流式計算系統部署主要分為五大塊,實時計算集群、離線計算集群、網絡應用服務器、數據庫集群以及性能監控預警;實時計算集群主要提供實時計算平臺用于實時數據分析服務;離線計算集群提供的是離線計算平臺,主要用于語料處理、詞庫訓練以及語料存儲等功能;網絡應用服務器用于向外提供基于Web的顯示服務,數據庫集群部署關系型數據和非關系型數據庫,分別用于存儲業務數據和詞庫數據。各個分隔的模塊之間用消息服務連接。整個平臺使用性能監控預警服務對平臺的運行情況進行全面的監控管理。
四、結語
面向自然語言處理的流式計算系統符合目前主流的云平臺結構設計,確保實用性、開放性系統易維護的原則。系統以B/S結構為主,系統提供的自然語言處理計算服務,滿足傳統媒體對于熱點新聞發現、新聞選題評價、傳播效果分析等場景下的業務需求。
參考文獻:
[1]蔣晨晨,季一木,孫雁飛,王汝傳.基于Storm的面向大數據實時流查詢系統設計研究.南京郵電大學學報2016.6
[2]李昊鵬.流式計算的研究與應用.理論探索.2017.10
[3]熊安萍,朱恒偉,羅宇豪.Storm流式計算框架反壓機制研究.計算機工程與應用.2018.54(1)