天天看點

使用Spark架構中文分詞統計

技術

Spark+中文分詞

算法

對爬取的網站文章的關鍵詞進行統計,是進行主題分類,判斷相似性的一個基礎步驟。例如,一篇文章大量出現“風景”和“酒店”之類的詞語,那麼這篇文章歸類為“旅遊”類的機率就比較大。而在關于“美食”的文章中,“餐廳”和“美味”等詞語出現的頻率一般也會比較大。

通過ltp-cloud進行中文分詞

目前國内有不少科研機構開發了中文分詞系統,例如中科院、哈工大、科大訊飛等,本次體驗的是哈工大的語言雲。

Rest API調用,

例如(YourAPIKey替換成你的APIKey):

Spark Streaming進行詞頻統計

Spark Streaming是基于Spark平台上提供的流計算引擎,可以處理多種資料來源的流資料,并進行統計分析。在Spark Streaming的sample程式中,就提供了從MQTT,Kafka,Network socket等來源讀取資料的word count。本次測試NetworkWordCount,即SparkStreaming從TCPIP Socket讀取資料,然後對内容進行詞頻統計。

運作程式

cd $SPARK_HOME目錄,

輸入:

<code>./bin/run-example streaming.NetworkWordCount llhost 9999</code>

Spark會啟動一個Spark Streaming的WordCount範例程式,在9999端口監聽,并進行詞頻統計。然後,通過另外一個腳本,用curl調用哈工大語言雲進行分詞,并通過linux指令nc将結果寫入端口9999的socket:

總結

因為其中頻度最高的詞彙就是“**”。當然,真正應用中需要結合權重算法,将一些常用詞如“的”,“然後”,“是以”之類的詞彙排除。哈工大語言雲服務和SparkStreaming建構了一個簡單的實時中文詞頻統計架構,下一步可以考慮結合爬蟲擷取實時新聞,然後通過上述架構進行中文分詞和詞頻統計,并判斷新聞的熱點關鍵字。也可以建構基于關鍵字的權重向量,再調用聚類模型對新聞進行實時主題分類。可以使用Nutch這個高大上的東西,使用deploy模式将爬取的内容存儲在HDFS中。

Nutch

使用Spark架構中文分詞統計

Nutch搭建其實很簡單,可以選用2.x版本,可以用deploy模式或者local模式都是可以的,當然最好是用deploy模式,執行nutch腳本,注意你可以使用索引,加上solr,當爬取内容需要做搜尋管理時,索引是必須的。

下步想法

可以使用spring mvc解決平台顯示,背景提供分詞統計的結果。

繼續閱讀