日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

pyhanlp 共性分析与短语提取

發(fā)布時間:2025/3/21 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyhanlp 共性分析与短语提取 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

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

共性分析

“”"

一階共性分析,也就是詞頻統(tǒng)計 信息=1 先進=1 圖像=1二階共性分析 信息→算法= tf=1 mi=8.713143111007891 le=0.0 re=0.0 score=NaN 先進→視頻= tf=1 mi=6.451079180589085 le=0.0 re=0.0 score=NaN 圖像→技術= tf=1 mi=7.207932334602241 le=0.0 re=0.0 score=NaN 圖形→圖像= tf=1 mi=12.339379582248355 le=0.0 re=0.0 score=NaN 處理→方面= tf=1 mi=3.9000932023763872 le=0.0 re=0.0 score=NaN三階共性分析 信息→算法→處理= tf=1 mi=0.0 le=0.0 re=0.0 先進→視頻→處理= tf=1 mi=0.0 le=0.0 re=0.0 圖像→技術→信息= tf=1 mi=0.0 le=0.0 re=0.0

“”"

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

信息論中的互信息

一般而言,信道中總是存在著噪聲和干擾,信源發(fā)出消息x,通過信道后信宿只可能收到由于干擾作用引起的某種變形的y。信宿收到y(tǒng)后推測信源發(fā)出x的概率,這一過程可由后驗概率p(x|y)來描述。相應地,信源發(fā)出x的概率p(x)稱為先驗概率。我們定義x的后驗概率與先驗概率比值的對數(shù)為y對x的互信息量(簡稱互信息)。
根據(jù)熵的連鎖規(guī)則,有

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

因此,

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中的使用。

from pyhanlp import * # 共性分析 Occurrence = JClass("com.hankcs.hanlp.corpus.occurrence.Occurrence") PairFrequency = JClass("com.hankcs.hanlp.corpus.occurrence.PairFrequency") TermFrequency = JClass("com.hankcs.hanlp.corpus.occurrence.TermFrequency") TriaFrequency = JClass("com.hankcs.hanlp.corpus.occurrence.TriaFrequency")occurrence = Occurrence() occurrence.addAll("在計算機音視頻和圖形圖像技術等二維信息算法處理方面目前比較先進的視頻處理算法") occurrence.compute()print("一階共性分析,也就是詞頻統(tǒng)計") unigram = occurrence.getUniGram() for entry in unigram.iterator():term_frequency = entry.getValue()print(term_frequency) print()print('二階共性分析') bigram = occurrence.getBiGram() for entry in bigram.iterator():pair_frequency = entry.getValue()if pair_frequency.isRight():print(pair_frequency) print()print('三階共性分析') trigram = occurrence.getTriGram() for entry in trigram.iterator():tria_frequency = entry.getValue()if tria_frequency.isRight():print(tria_frequency) 一階共性分析,也就是詞頻統(tǒng)計 信息=1 先進=1 圖像=1 圖形=1 處理=2 技術=1 方面=1 比較=1 目前=1 算法=2 視頻=2 計算機=1 音=1二階共性分析 信息→算法= tf=1 mi=8.713143111007891 le=0.0 re=0.0 score=NaN 先進→視頻= tf=1 mi=6.451079180589085 le=0.0 re=0.0 score=NaN 圖像→技術= tf=1 mi=7.207932334602241 le=0.0 re=0.0 score=NaN 圖形→圖像= tf=1 mi=12.339379582248355 le=0.0 re=0.0 score=NaN 處理→方面= tf=1 mi=3.9000932023763872 le=0.0 re=0.0 score=NaN 處理→算法= tf=1 mi=9.104492277137243 le=0.0 re=0.0 score=NaN 技術→信息= tf=1 mi=3.8693779358135583 le=0.0 re=0.0 score=NaN 方面→目前= tf=1 mi=12.682109172098322 le=0.0 re=0.0 score=NaN 比較→先進= tf=1 mi=5.906980690246837 le=0.0 re=0.0 score=NaN 目前→比較= tf=1 mi=13.23476122866847 le=0.0 re=0.0 score=NaN 算法→處理= tf=1 mi=9.104492277137243 le=0.0 re=0.0 score=NaN 視頻→圖形= tf=1 mi=10.041190100727349 le=0.0 re=0.0 score=NaN 視頻→處理= tf=1 mi=4.9968437492887805 le=0.0 re=0.0 score=NaN 計算機→音= tf=1 mi=10.441320189120539 le=0.0 re=0.0 score=NaN 音→視頻= tf=1 mi=8.362759316806295 le=0.0 re=0.0 score=NaN三階共性分析 信息→算法→處理= tf=1 mi=0.0 le=0.0 re=0.0 先進→視頻→處理= tf=1 mi=0.0 le=0.0 re=0.0 圖像→技術→信息= tf=1 mi=0.0 le=0.0 re=0.0 圖形→圖像→技術= tf=1 mi=0.0 le=0.0 re=0.0 處理→方面→目前= tf=1 mi=0.0 le=0.0 re=0.0 技術→信息→算法= tf=1 mi=0.0 le=0.0 re=0.0 方面→目前→比較= tf=1 mi=0.0 le=0.0 re=0.0 比較→先進→視頻= tf=1 mi=0.0 le=0.0 re=0.0 目前→比較→先進= tf=1 mi=0.0 le=0.0 re=0.0 算法→處理→方面= tf=1 mi=0.0 le=0.0 re=0.0 視頻→圖形→圖像= tf=1 mi=0.0 le=0.0 re=0.0 視頻→處理→算法= tf=1 mi=0.0 le=0.0 re=0.0 計算機→音→視頻= tf=1 mi=0.0 le=0.0 re=0.0 音→視頻→圖形= tf=1 mi=0.0 le=0.0 re=0.0

短語提取

  • 說明
    • 內(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)劣可以用空間復雜度與時間復雜度來衡量。算法工程師就是利用算法處理事物的人。\n1職位簡介\n算法工程師是一個非常高端的職位;\n專業(yè)要求:計算機、電子、通信、數(shù)學等相關專業(yè);\n學歷要求:本科及其以上的學歷,大多數(shù)是碩士學歷及其以上;\n語言要求:英語要求是熟練,基本上能閱讀國外專業(yè)書刊;\n必須掌握計算機相關知識,熟練使用仿真工具MATLAB等,必須會一門編程語言。\n2研究方向\n視頻算法工程師、圖像處理算法工程師、音頻算法工程師 通信基帶算法工程師\n\n3目前國內(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); [算法工程師, 算法處理, 一維信息, 算法研究, 圖像技術, 信號處理, 信息算法, 處理算法, 視頻算法, 通信物理]

總結

以上是生活随笔為你收集整理的pyhanlp 共性分析与短语提取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。