基於Map-Reduce的大規模分詞服務搭建

    目前項目中,分詞的主要工作方式可以分爲online和offline,online的方式主要是提供服務接口供應用程序來進行調用,比較側重併發和速度,offline的工作方式主要是一次性的,調用完成就釋放,適合一次處理大量文章,較online的工作方式,省去了網絡傳輸的代價,效率要高一些,但是不是很靈活,不能實現良好的易用性。

    在數據挖掘任務中,在語料庫龐大的條件下,比如千萬或者億級別的文檔,單機處理基本不能滿足所需要的性能,需要進行並行化處理,但是一般分詞程序會比較依賴詞庫或者其它的鏈接庫等,部署起來會稍微麻煩點,所以爲了方便部署,採用了online的方式來提供分詞服務,系統簡單的設計如下:

    分詞服務

    分詞服務由thrift封裝,後臺由c++實現,對外提供java和python的接口,客戶端主要採用java實現並封裝成jar方便部署和調用,分詞服務可以根據Map節點的數量部署到多臺機器上。

    語料

    語料庫存放在hdfs上,按照路徑進行存取,可以根據需求調整hdfs塊的大小,數據格式爲:docId,content

    MR調用

    在Map起始階段,新建一個客戶端,然後對讀取的文檔進行分詞、統計詞頻,輸出docId^Aword^Bfreq^Aword^Bfreq,最後再釋放客戶端的連接。

    Reduce階段也可以作進一步的處理,比如詞頻統計、詞典構建等,也可以直接將Map的結果直接輸出。

發佈了45 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章