1. 程式人生 > >PAI文本分析實驗:常用文本分析組件及案例實戰

PAI文本分析實驗:常用文本分析組件及案例實戰

lob 機器 src style 分詞 pla 實驗 阿裏 pagerank

上一篇介紹了PAI以及機器學習相關的一點知識,沒有深入算法原理,只是從使用角度出發熟悉了操作流程,後面隨著學習的深入,我也會對算法原理做一個詳細的闡述。這次我們還是繼續實戰,認識機器學習在文本分析領域是如何工作的。先貼出官方的教程:機器學習PAI眼中的《人民的名義》。

準備開始

還是在阿裏PAI環境下,我們從實驗模板:人民的名義分析進入,然後點擊去PAI平臺創建,這樣就在機器學習頁面創建好了實驗。接下裏設置各個組件的參數,我們先看下模型圖:

技術分享

你會發現模板創建的結果和教程的模型圖不一樣。這裏我們要自己添加紅色框內的組件,自定義分詞、自定義停用詞、停用詞過濾和詞頻統計。所有組件直接在左側拖到工作區即可。接下來對整個實驗流程進行說明分析。

實驗流程

首先,我們要讀取待分析的文本,這部分是PAI公共庫的數據,創建好模板會自動導入。數據是九段文本,節選自人民的名義,後面的分析都是基於這部分數據做的。我們可以右鍵點擊查看數據:

技術分享

Split Word

接下來為了分析,我們需要切分文本內容,也就是通過split_word組件,這是基於AliWS詞法分析系統,對指定列文章內容進行分詞,分詞後以空格作為分隔符。但是我們既然要分析人民的名義,那麽必須保證關鍵人物被正確分詞,這個需要我們給split_word組件添加一個詞庫,這樣再遇見我們定義的關鍵詞時就能正確切分了。文件可以在這裏下載:name_ split。

停用詞

接下來還要添加停用詞,那什麽是停用詞呢?停用詞就是句子中的幹擾詞,比如“什麽,這,那,了,的,還有一些符號!,?,:”等,只要不影響我們分析的結果,其實都可以過濾,這是一份中文停用詞表(1208個).txt,不過這裏我們只能傳遞單個停留詞

,所以用不了,我們自己寫一個常用停留詞文件即可,針對本次分析使用stop_words就可以了。接著我們需要創建兩張表,都只有一個字段,定義為string類型,把我們的name_split和stop_words文件導入,然後再數據源處選擇我們自己的表即可。

技術分享

詞頻統計

當設置好了數據源、分詞、停用詞過濾,就可以做詞頻統計:在對文章進行分詞的基礎上,按行保序輸出對應文章ID列(docId)對應文章的詞,統計指定文章ID列(docId)對應文章內容(docContent)的詞頻。添加詞頻統計組件,設置文檔ID列,和文檔內容列即可。

關鍵詞抽取

關鍵詞抽取是自然語言處理中的重要技術之一,具體是指從文本裏面把跟這篇文章意義最相關的一些詞抽取出來。本算法基於TextRank,它受到網頁之間關系PageRank算法啟發,利用局部詞匯之間關系(共現窗口)構建網絡,計算詞的重要性,選取權重大的做為關鍵詞。

技術分享

可以看上面這張圖,比如制定一個規則:相鄰3個words之間有關聯,那麽就把它們連起來,這樣整段內容可以形成一個網絡圖,它的邊上與之關聯的詞越多(詞頻高)說明這個詞就是key word。

文本摘要

所謂自動文摘就是利用計算機自動地從原始文獻中提取文摘,文摘是全面準確地反映某一文獻中心內容地簡單連貫的短文。本算法基於TextRank,通過提取文檔中已存在的句子形成摘要。點擊查看數據可以看到根據九段內容提煉的摘要。

運行結果

每一步都可以通過右鍵查看數據,這裏我們取兩個直觀的結果做檢驗。關鍵詞提取組件可以返回每章關鍵詞語以及權重,通過這個結果可以看到每一章的關鍵人物有哪些,以及他們的權重排名情況:

技術分享

下面是詞頻統計的部分結果,可以看到每一章不同單詞出現的次數統計:

技術分享

結果基本和官網實驗結果差不錯,有個別差異是因為所選分詞和停用詞不同造成的。最後一個是語義向量距離,反應段落之間的相關性:技術分享

我們把結果按distance由近到遠排序,可以看到向量距離最小的A區域語句相關度還是比較高的,理解就是相鄰段落故事相關性較大,而距離比較遠的差異就會比較大,比如紅框中數據。

~ 完 ~

PAI文本分析實驗:常用文本分析組件及案例實戰