?
簡介
HanLP中的詞語提取是基于互信息與信息熵。想要計算互信息與信息熵有限要做的是
文本分詞進行共性分析。在作者的原文中,有幾個問題,為了便于說明,這里首先給出短語提取的原理。在文末在給出pyhanlp的調(diào)用代碼。
共性分析
?
互信息mi,左熵lr,右熵re,詳細解釋見下文
信息論中的互信息
?
圖5
一般而言,信道中總是存在著噪聲和干擾,信源發(fā)出消息
x,通過信道后信宿只可能收到由于干擾作用引起的某種變形的y。信宿收到y(tǒng)后推測信源發(fā)出x的概率,這一過程可由后驗概率p(x|y)來描述。相應地,信源發(fā)出x的概率p(x)稱為先驗概率。我們定義x的后驗概率與先驗概率比值的對數(shù)為y對x的互信息量(簡稱互信息)。
根據(jù)熵的連鎖規(guī)則,有
?
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)。
?
?
其中P(x) 為 單詞x出現(xiàn)的次數(shù)與總單詞數(shù)的比值(數(shù)學含義為單詞x出現(xiàn)的概率)。而P(x,y)則為二階短語x->y 出現(xiàn)的次數(shù)與所有二階短語的次數(shù)。
?
比如在剛剛的說明中,假設默認分詞方式將“后驗概率”分為“后驗”,“概率” 兩個大短語,則后驗->概率
這個二階短語一共出現(xiàn)了兩次,假設所有二階短語合共有一百個,則p(后驗->概率) = 2 /100 = 1/ 50。
?
要注意的是hanlp作者個的文章《基于互信息和左右信息熵的短語提取識別》中。公式與表標準定義的互信息并不一致,少乘了一個
p(x,y),查看源碼發(fā)現(xiàn)作者確實是按照沒有p(x,y)的公式進行計算的。不過使用簡化公式計算似乎也是沒有問題的。此處還可以參考大魚的一篇文章
?
信息熵
?
利用信息熵提取
熵這個術語表示隨機變量不確定性的量度。具體表述如下: 一般地, 設X 是取有限個值的隨機變量( 或者說X 是有限個離散事件的概率場) , X 取值x
的概率為P ( x ) , 則X 的熵定義為:
?
左右熵是指多字詞表達的左邊界的熵和右邊界的熵。左右熵的公式如下:
?
?
具體計算方法是,以左熵為例,對一個串左邊所有可能的詞以及詞頻,計算信息熵,然后求和。
比如算法
->工程師這個二階短語,其左邊可能有很多接續(xù),比如“從事算法工程師”和“成為算法工程師”,當其接續(xù)多了,左熵也就會更高。這個二階短語是一個二階短語的可能性就更大一些。
但是這里存在一個問題,賈母默認分詞與停用詞效果不好,可能會將
“abcd”分成“a,b,c,d”然后去掉“c”這種停用詞,這樣“a,b,d”則可能被作為一個三階短語發(fā)現(xiàn)。在HanLP中因為只能發(fā)現(xiàn)二階短語,所以可能因為去掉“a,b”中的一個導致無法發(fā)現(xiàn)二階短語這種情況出現(xiàn),但是這只存在著理論上的可能。
?
共性分析
?
共性 是指 文本中詞語共同出現(xiàn)的情況。在
hanlp中如果直接調(diào)用共性分析模塊不僅可以獲取詞頻統(tǒng)計,還可以一同給出互信息mi,左熵lr,右熵re。以下是pyhanlp中的使用。
?
?
?
短語提取
?
說明
?
內(nèi)部采用MutualInformationEntropyPhraseExtractor實現(xiàn),用戶可以直接調(diào)用
MutualInformationEntropyPhraseExtractor.extractPhrase(text, size)。
算法詳解
《基于互信息和左右信息熵的短語提取識別》
該功能的實現(xiàn)依賴于共性分析,詳細內(nèi)容可以查看《基于互信息和左右信息熵的短語提取識別》
?
pyhan中的短語提取
?
# 短語提取
text = """算法工程師\n
????????算法(
Algorithm)是一系列解決問題的清晰指令,也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。如果一個算法有缺陷,或不適合于某個問題,執(zhí)行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優(yōu)劣可以用空間復雜度與時間復雜度來衡量。算法工程師就是利用算法處理事物的人。\n
????????1職位簡介\n
????????算法工程師是一個非常高端的職位;\n
????????專業(yè)要求:計算機、電子、通信、數(shù)學等相關專業(yè);\n
????????學歷要求:本科及其以上的學歷,大多數(shù)是碩士學歷及其以上;\n
????????語言要求:英語要求是熟練,基本上能閱讀國外專業(yè)書刊;\n
????????必須掌握計算機相關知識,熟練使用仿真工具MATLAB等,必須會一門編程語言。\n
????????2研究方向\n
????????視頻算法工程師、圖像處理算法工程師、音頻算法工程師 通信基帶算法工程師\n
????????\n
????????3目前國內(nèi)外狀況\n
????????目前國內(nèi)從事算法研究的工程師不少,但是高級算法工程師卻很少,是一個非常緊缺的專業(yè)工程師。算法工程師根據(jù)研究領域來分主要有音頻
/視頻算法處理、圖像技術方面的二維信息算法處理和通信物理層、雷達信號處理、生物醫(yī)學信號處理等領域的一維信息算法處理。\n
????????在計算機音視頻和圖形圖像技術等二維信息算法處理方面目前比較先進的視頻處理算法:機器視覺成為此類算法研究的核心;另外還有
2D轉(zhuǎn)3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),運動估計運動補償算法(Motion
estimation/Motion Compensation),去噪算法(Noise
Reduction),縮放算法(scaling),銳化處理算法(Sharpness),超分辨率算法(Super
Resolution),手勢識別(gesture recognition),人臉識別(face recognition)。\n
????????在通信物理層等一維信息領域目前常用的算法:無線領域的RRM、RTT,傳送領域的調(diào)制解調(diào)、信道均衡、信號檢測、網(wǎng)絡優(yōu)化、信號分解等。\n" +
????????另外數(shù)據(jù)挖掘、互聯(lián)網(wǎng)搜索算法也成為當今的熱門方向。\n
????????算法工程師逐漸往人工智能方向發(fā)展。"""
????????????????
????????????????
phraseList = HanLP.extractPhrase(text, 10)
print(phraseList);
?
1|[算法工程師, 算法處理, 一維信息, 算法研究, 圖像技術, 信號處理, 信息算法, 處理算法, 視頻算法, 通信物理]
?
作者:Font Tian ?
熱門工具 換一換