天天看點

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

簡介

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

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

互資訊mi,左熵lr,右熵re,詳細解釋見下文

資訊論中的互資訊
pyhanlp 共性分析與短語提取内容詳解

圖5

一般而言,信道中總是存在着噪聲和幹擾,信源發出消息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)

是以,

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

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

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

其中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 的熵定義為:

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

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

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

具體計算方法是,以左熵為例,對一個串左邊所有可能的詞以及詞頻,計算資訊熵,然後求和。

比如算法->工程師這個二階短語,其左邊可能有很多接續,比如“從事算法工程師”和“成為算法工程師”,當其接續多了,左熵也就會更高。這個二階短語是一個二階短語的可能性就更大一些。

但是這裡存在一個問題,賈母預設分詞與停用詞效果不好,可能會将“abcd”分成“a,b,c,d”然後去掉“c”這種停用詞,這樣“a,b,d”則可能被作為一個三階短語發現。在HanLP中因為隻能發現二階短語,是以可能因為去掉“a,b”中的一個導緻無法發現二階短語這種情況出現,但是這隻存在着理論上的可能。

共性 是指 文本中詞語共同出現的情況。在hanlp中如果直接調用共性分析子產品不僅可以擷取詞頻統計,還可以一同給出互資訊mi,左熵lr,右熵re。以下是pyhanlp中的使用。

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

短語提取

說明

内部采用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  

繼續閱讀