日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyhanlp 共性分析与短语提取

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

簡介

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

共性分析

“”"

一階共性分析,也就是詞頻統(tǒng)計(jì) 信息=1 先進(jìn)=1 圖像=1二階共性分析 信息→算法= tf=1 mi=8.713143111007891 le=0.0 re=0.0 score=NaN 先進(jìn)→視頻= tf=1 mi=6.451079180589085 le=0.0 re=0.0 score=NaN 圖像→技術(shù)= 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 先進(jìn)→視頻→處理= tf=1 mi=0.0 le=0.0 re=0.0 圖像→技術(shù)→信息= tf=1 mi=0.0 le=0.0 re=0.0

“”"

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

信息論中的互信息

一般而言,信道中總是存在著噪聲和干擾,信源發(fā)出消息x,通過信道后信宿只可能收到由于干擾作用引起的某種變形的y。信宿收到y(tǒng)后推測信源發(fā)出x的概率,這一過程可由后驗(yàn)概率p(x|y)來描述。相應(yīng)地,信源發(fā)出x的概率p(x)稱為先驗(yàn)概率。我們定義x的后驗(yàn)概率與先驗(yàn)概率比值的對(duì)數(shù)為y對(duì)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)

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

其中P(x) 為 單詞x出現(xiàn)的次數(shù)與總單詞數(shù)的比值(數(shù)學(xué)含義為單詞x出現(xiàn)的概率)。而P(x,y)則為二階短語x->y 出現(xiàn)的次數(shù)與所有二階短語的次數(shù)。

比如在剛剛的說明中,假設(shè)默認(rèn)分詞方式將“后驗(yàn)概率”分為“后驗(yàn)”,“概率” 兩個(gè)大短語,則后驗(yàn)->概率 這個(gè)二階短語一共出現(xiàn)了兩次,假設(shè)所有二階短語合共有一百個(gè),則p(后驗(yàn)->概率) = 2 /100 = 1/ 50。

要注意的是hanlp作者個(gè)的文章《基于互信息和左右信息熵的短語提取識(shí)別》中。公式與表標(biāo)準(zhǔn)定義的互信息并不一致,少乘了一個(gè)p(x,y),查看源碼發(fā)現(xiàn)作者確實(shí)是按照沒有p(x,y)的公式進(jìn)行計(jì)算的。不過使用簡化公式計(jì)算似乎也是沒有問題的。此處還可以參考大魚的一篇文章

信息熵

利用信息熵提取
熵這個(gè)術(shù)語表示隨機(jī)變量不確定性的量度。具體表述如下: 一般地, 設(shè)X 是取有限個(gè)值的隨機(jī)變量( 或者說X 是有限個(gè)離散事件的概率場) , X 取值x 的概率為P ( x ) , 則X 的熵定義為:

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


具體計(jì)算方法是,以左熵為例,對(duì)一個(gè)串左邊所有可能的詞以及詞頻,計(jì)算信息熵,然后求和。

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

但是這里存在一個(gè)問題,賈母默認(rèn)分詞與停用詞效果不好,可能會(huì)將“abcd”分成“a,b,c,d”然后去掉“c”這種停用詞,這樣“a,b,d”則可能被作為一個(gè)三階短語發(fā)現(xiàn)。在HanLP中因?yàn)橹荒馨l(fā)現(xiàn)二階短語,所以可能因?yàn)槿サ簟癮,b”中的一個(gè)導(dǎo)致無法發(fā)現(xiàn)二階短語這種情況出現(xiàn),但是這只存在著理論上的可能。

共性分析

共性 是指 文本中詞語共同出現(xiàn)的情況。在hanlp中如果直接調(diào)用共性分析模塊不僅可以獲取詞頻統(tǒng)計(jì),還可以一同給出互信息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("在計(jì)算機(jī)音視頻和圖形圖像技術(shù)等二維信息算法處理方面目前比較先進(jìn)的視頻處理算法") occurrence.compute()print("一階共性分析,也就是詞頻統(tǒng)計(jì)") 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)計(jì) 信息=1 先進(jìn)=1 圖像=1 圖形=1 處理=2 技術(shù)=1 方面=1 比較=1 目前=1 算法=2 視頻=2 計(jì)算機(jī)=1 音=1二階共性分析 信息→算法= tf=1 mi=8.713143111007891 le=0.0 re=0.0 score=NaN 先進(jìn)→視頻= tf=1 mi=6.451079180589085 le=0.0 re=0.0 score=NaN 圖像→技術(shù)= 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 技術(shù)→信息= 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 比較→先進(jìn)= 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 計(jì)算機(jī)→音= 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 先進(jìn)→視頻→處理= tf=1 mi=0.0 le=0.0 re=0.0 圖像→技術(shù)→信息= tf=1 mi=0.0 le=0.0 re=0.0 圖形→圖像→技術(shù)= tf=1 mi=0.0 le=0.0 re=0.0 處理→方面→目前= tf=1 mi=0.0 le=0.0 re=0.0 技術(shù)→信息→算法= tf=1 mi=0.0 le=0.0 re=0.0 方面→目前→比較= tf=1 mi=0.0 le=0.0 re=0.0 比較→先進(jìn)→視頻= tf=1 mi=0.0 le=0.0 re=0.0 目前→比較→先進(jìn)= 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 計(jì)算機(jī)→音→視頻= 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實(shí)現(xiàn),用戶可以直接調(diào)用MutualInformationEntropyPhraseExtractor.extractPhrase(text, size)。
  • 算法詳解
    • 《基于互信息和左右信息熵的短語提取識(shí)別》

該功能的實(shí)現(xiàn)依賴于共性分析,詳細(xì)內(nèi)容可以查看《基于互信息和左右信息熵的短語提取識(shí)別》

pyhan中的短語提取

# 短語提取 text = """算法工程師\n算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時(shí)間內(nèi)獲得所要求的輸出。如果一個(gè)算法有缺陷,或不適合于某個(gè)問題,執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問題。不同的算法可能用不同的時(shí)間、空間或效率來完成同樣的任務(wù)。一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來衡量。算法工程師就是利用算法處理事物的人。\n1職位簡介\n算法工程師是一個(gè)非常高端的職位;\n專業(yè)要求:計(jì)算機(jī)、電子、通信、數(shù)學(xué)等相關(guān)專業(yè);\n學(xué)歷要求:本科及其以上的學(xué)歷,大多數(shù)是碩士學(xué)歷及其以上;\n語言要求:英語要求是熟練,基本上能閱讀國外專業(yè)書刊;\n必須掌握計(jì)算機(jī)相關(guān)知識(shí),熟練使用仿真工具M(jìn)ATLAB等,必須會(huì)一門編程語言。\n2研究方向\n視頻算法工程師、圖像處理算法工程師、音頻算法工程師 通信基帶算法工程師\n\n3目前國內(nèi)外狀況\n目前國內(nèi)從事算法研究的工程師不少,但是高級(jí)算法工程師卻很少,是一個(gè)非常緊缺的專業(yè)工程師。算法工程師根據(jù)研究領(lǐng)域來分主要有音頻/視頻算法處理、圖像技術(shù)方面的二維信息算法處理和通信物理層、雷達(dá)信號(hào)處理、生物醫(yī)學(xué)信號(hào)處理等領(lǐng)域的一維信息算法處理。\n在計(jì)算機(jī)音視頻和圖形圖像技術(shù)等二維信息算法處理方面目前比較先進(jìn)的視頻處理算法:機(jī)器視覺成為此類算法研究的核心;另外還有2D轉(zhuǎn)3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),運(yùn)動(dòng)估計(jì)運(yùn)動(dòng)補(bǔ)償算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),縮放算法(scaling),銳化處理算法(Sharpness),超分辨率算法(Super Resolution),手勢識(shí)別(gesture recognition),人臉識(shí)別(face recognition)。\n在通信物理層等一維信息領(lǐng)域目前常用的算法:無線領(lǐng)域的RRM、RTT,傳送領(lǐng)域的調(diào)制解調(diào)、信道均衡、信號(hào)檢測、網(wǎng)絡(luò)優(yōu)化、信號(hào)分解等。\n" +另外數(shù)據(jù)挖掘、互聯(lián)網(wǎng)搜索算法也成為當(dāng)今的熱門方向。\n算法工程師逐漸往人工智能方向發(fā)展。"""phraseList = HanLP.extractPhrase(text, 10) print(phraseList); [算法工程師, 算法處理, 一維信息, 算法研究, 圖像技術(shù), 信號(hào)處理, 信息算法, 處理算法, 視頻算法, 通信物理]

總結(jié)

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

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