pyhanlp 共性分析與短語提取內容詳解

 

簡介算法

HanLP中的詞語提取是基於互信息與信息熵。想要計算互信息與信息熵有限要作的是 文本分詞進行共性分析。在做者的原文中,有幾個問題,爲了便於說明,這裏首先給出短語提取的原理。在文末在給出pyhanlp的調用代碼。編程

共性分析網絡

 

互信息mi,左熵lr,右熵re,詳細解釋見下文編程語言

信息論中的互信息工具

 

通常而言,信道中老是存在着噪聲和干擾,信源發出消息x,經過信道後信宿只可能收到因爲干擾做用引發的某種變形的y。信宿收到y後推測信源發出x的機率,這一過程可由後驗機率p(x|y)來描述。相應地,信源發出x的機率p(x)稱爲先驗機率。咱們定義x的後驗機率與先驗機率比值的對數爲y對x的互信息量(簡稱互信息)。優化

根據熵的連鎖規則,有人工智能

 

1| H(X,Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)spa

 

所以,3d

 

1|H(X) - H(X|Y) = H(Y) - H(Y|X)orm

 

這個差叫作X和Y的互信息,記做I(X;Y)。

 

 

其中P(x) 爲 單詞x出現的次數與總單詞數的比值(數學含義爲單詞x出現的機率)。而P(x,y)則爲二階短語x->y 出現的次數與全部二階短語的次數。

 

好比在剛剛的說明中,假設默認分詞方式將「後驗機率」分爲「後驗」,「機率」 兩個大短語,則後驗->機率 這個二階短語一共出現了兩次,假設全部二階短語合共有一百個,則p(後驗->機率) = 2 /100 = 1/ 50。

 

要注意的是hanlp做者個的文章《基於互信息和左右信息熵的短語提取識別》中。公式與表標準定義的互信息並不一致,少乘了一個p(x,y),查看源碼發現做者確實是按照沒有p(x,y)的公式進行計算的。不過使用簡化公式計算彷佛也是沒有問題的。此處還能夠參考大魚的一篇文章

 

信息熵

 

利用信息熵提取

熵這個術語表示隨機變量不肯定性的量度。具體表述以下: 通常地, 設X 是取有限個值的隨機變量( 或者說X 是有限個離散事件的機率場) , X 取值x 的機率爲P ( x ) , 則X 的熵定義爲:

 

左右熵是指多字詞表達的左邊界的熵和右邊界的熵。左右熵的公式以下:

 

 

具體計算方法是,以左熵爲例,對一個串左邊全部可能的詞以及詞頻,計算信息熵,而後求和。

好比算法->工程師這個二階短語,其左邊可能有不少接續,好比「從事算法工程師」和「成爲算法工程師」,當其接續多了,左熵也就會更高。這個二階短語是一個二階短語的可能性就更大一些。

可是這裏存在一個問題,賈母默認分詞與停用詞效果很差,可能會將「abcd」分紅「a,b,c,d」而後去掉「c」這種停用詞,這樣「a,b,d」則可能被做爲一個三階短語發現。在HanLP中由於只能發現二階短語,因此可能由於去掉「a,b」中的一個致使沒法發現二階短語這種狀況出現,可是這隻存在着理論上的可能。

 

共性分析

 

共性 是指 文本中詞語共同出現的狀況。在hanlp中若是直接調用共性分析模塊不只能夠獲取詞頻統計,還能夠一同給出互信息mi,左熵lr,右熵re。如下是pyhanlp中的使用。

 

 

圖11

短語提取

 

說明

 

內部採用MutualInformationEntropyPhraseExtractor實現,用戶能夠直接調用MutualInformationEntropyPhraseExtractor.extractPhrase(text, size)

算法詳解

《基於互信息和左右信息熵的短語提取識別》

該功能的實現依賴於共性分析,詳細內容能夠查看《基於互信息和左右信息熵的短語提取識別

 

pyhan中的短語提取

 

# 短語提取

text = """算法工程師\n

        算法(Algorithm)是一系列解決問題的清晰指令,也就是說,可以對必定規範的輸入,在有限時間內得到所要求的輸出。若是一個算法有缺陷,或不適合於某個問題,執行這個算法將不會解決這個問題。不一樣的算法可能用不一樣的時間、空間或效率來完成一樣的任務。一個算法的優劣能夠用空間複雜度與時間複雜度來衡量。算法工程師就是利用算法處理事物的人。\n

        1職位簡介\n

        算法工程師是一個很是高端的職位;\n

        專業要求:計算機、電子、通訊、數學等相關專業;\n

        學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;\n

        語言要求:英語要求是熟練,基本上能閱讀國外專業書刊;\n

        必須掌握計算機相關知識,熟練使用仿真工具MATLAB等,必須會一門編程語言。\n

        2研究方向\n

        視頻算法工程師、圖像處理算法工程師、音頻算法工程師 通訊基帶算法工程師\n

        \n

        3目前國內外情況\n

        目前國內從事算法研究的工程師很多,可是高級算法工程師卻不多,是一個很是緊缺的專業工程師。算法工程師根據研究領域來分主要有音頻/視頻算法處理、圖像技術方面的二維信息算法處理和通訊物理層、雷達信號處理、生物醫學信號處理等領域的一維信息算法處理。\n

        在計算機音視頻和圖形圖像技術等二維信息算法處理方面目前比較先進的視頻處理算法:機器視覺成爲此類算法研究的核心;另外還有2D轉3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),運動估計運動補償算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),縮放算法(scaling),銳化處理算法(Sharpness),超分辨率算法(Super Resolution),手勢識別(gesture recognition),人臉識別(face recognition)。\n

        在通訊物理層等一維信息領域目前經常使用的算法:無線領域的RRM、RTT,傳送領域的調製解調、信道均衡、信號檢測、網絡優化、信號分解等。\n" +

        另外數據挖掘、互聯網搜索算法也成爲當今的熱門方向。\n

        算法工程師逐漸往人工智能方向發展。"""

                

                

phraseList = HanLP.extractPhrase(text, 10)

print(phraseList);

 

1|[算法工程師, 算法處理, 一維信息, 算法研究, 圖像技術, 信號處理, 信息算法, 處理算法, 視頻算法, 通訊物理]

 

做者:Font Tian  

相關文章
相關標籤/搜索