用python實(shí)現(xiàn)新詞發(fā)現(xiàn)程序——基于凝固度和自由度

      網(wǎng)友投稿 1340 2022-05-29

      互聯(lián)網(wǎng)時(shí)代,信息產(chǎn)生的數(shù)量和傳遞的速度非???,語(yǔ)言文字也不斷變化更新,新詞層出不窮。一個(gè)好的新詞發(fā)現(xiàn)程序?qū)ψ鯪LP(自然預(yù)言處理)來(lái)說(shuō)是非常重要的。

      N-Gram加詞頻

      最原始的新詞算法莫過(guò)于n-gram加詞頻了。簡(jiǎn)單來(lái)說(shuō)就是,從大量語(yǔ)料中抽取連續(xù)的字的組合片段,這些字組合片段最多包含n個(gè)字,同時(shí)統(tǒng)計(jì)每個(gè)字組合的頻率,按照詞頻并設(shè)置一個(gè)閾值來(lái)判斷一個(gè)字組合片段是否為詞匯。

      該方法簡(jiǎn)單處理速度快,它的缺點(diǎn)也很明顯,就是會(huì)把一些不是詞匯但出現(xiàn)頻率很高的字組合也當(dāng)成詞了。

      凝固度和自由度

      這個(gè)算法在文章《互聯(lián)網(wǎng)時(shí)代的社會(huì)語(yǔ)言學(xué):基于SNS的文本數(shù)據(jù)挖掘》 里有詳細(xì)的闡述。

      凝固度就是一個(gè)字組合片段里面字與字之間的緊密程度。比如“琉璃”、“榴蓮”這樣的詞的凝固度就非常高,而“華為”、“組合”這樣的詞的凝固度就比較低。

      自由度就是一個(gè)字組合片段能獨(dú)立自由運(yùn)用的程度。比如“巧克力”里面的“巧克”的凝固度就很高,和“巧克力”一樣高,但是它自由運(yùn)用的程度幾乎為零,所以“巧克”不能單獨(dú)成詞。

      Python實(shí)現(xiàn)

      根據(jù)以上闡述,算法實(shí)現(xiàn)的步驟如下:

      1. n-gram統(tǒng)計(jì)字組合的頻率

      如果文本量很小,可以直接用Python的dict來(lái)統(tǒng)計(jì)n-gram及其頻率。一段文本n-gram出來(lái)的字組合的大小大約是原始文本的(1+n)*n/2倍,字組合的數(shù)量也非常驚人。比如,“中華人民共和國(guó)”的首字n-gram是(n=5):

      中華

      中華人

      中華人民

      中華人民共

      n-gram統(tǒng)計(jì)字組合頻率的同時(shí)還要統(tǒng)計(jì)字組合的左右鄰居,這個(gè)用來(lái)計(jì)算自由度。

      如果文本量再大一些,Python的dict經(jīng)常會(huì)碰到最好使用trie tree這樣的數(shù)據(jù)結(jié)構(gòu)。雙數(shù)組Trie Tree有很多非常好的開(kāi)源實(shí)現(xiàn),比如,cedar、darts等等。Trie Tree使用的好處是,它天然包含了字組合的右鄰居信息,因?yàn)檫@個(gè)數(shù)據(jù)結(jié)構(gòu)一般是前綴樹(shù)。要統(tǒng)計(jì)左鄰居信息時(shí),只需要把字組合倒序放入另外一個(gè)Trie Tree即可。

      使用cedar Trie Tree的時(shí)候,5-gram統(tǒng)計(jì)30M的文本大約使用6GB左右的內(nèi)存。

      如果文本量更大,這就要借助硬盤(pán)了,可以使用leveldb這樣的key-value數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。實(shí)驗(yàn)下來(lái),trie tree統(tǒng)計(jì)30M的文本用幾十秒,而同樣的用leveldb統(tǒng)計(jì)卻要6個(gè)多小時(shí)?。?!應(yīng)該還有比leveldb更合適的數(shù)據(jù)庫(kù)來(lái)做這件事情,有時(shí)間再說(shuō)。

      當(dāng)然,為了發(fā)現(xiàn)新詞,幾十MB的文本文本足夠了。

      2. 計(jì)算字組合的凝固度;

      有了上述的統(tǒng)計(jì)結(jié)果,計(jì)算每個(gè)字組合的凝固度就比較簡(jiǎn)單了。

      首先,把字組合切分成不同的組合對(duì),比如’abcd’可以拆成(‘a(chǎn)’, ‘bcd’), (‘a(chǎn)b’, ‘cd’), (‘a(chǎn)bc’, ‘d’),

      然后,計(jì)算每個(gè)組合對(duì)的凝固度:D(s1, s2) = P(s1s2) / (P(s1) * P(s2))

      最后,取這些組合對(duì)凝固度中最小的那個(gè)為整個(gè)字組合的凝固度。

      3. 計(jì)算字組合的自由度;

      分別計(jì)算它的左鄰居信息熵和右鄰居信息熵,取其中較小的為該組合的自由度。

      4. 閾值的選擇

      整個(gè)過(guò)程涉及到三個(gè)閾值的選擇:

      組合的詞頻:頻率很低的組合成詞的可能性很小

      組合的凝固度:凝固度越大成詞的可能性越大

      組合的自由度:自由度越大成詞的可能性越大

      經(jīng)驗(yàn)值:30M文本,詞頻>200, 凝固度>10**(n-1), 自由度>1.5

      用python實(shí)現(xiàn)新詞發(fā)現(xiàn)程序——基于凝固度和自由度

      小竅門(mén):詞頻>30, 凝固度>20**(n-1)也能發(fā)現(xiàn)很多低頻的詞匯。

      python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:《跟唐老師學(xué)習(xí)云網(wǎng)絡(luò)》 - 第2篇 我的網(wǎng)絡(luò)概念
      下一篇:使用ffmpeg拼接視頻踩坑記錄
      相關(guān)文章
      亚洲精品成人无限看| 亚洲人成国产精品无码| 亚洲色欲色欲www在线丝| avtt亚洲天堂| 国产成人综合亚洲一区| 色婷婷亚洲一区二区三区| www亚洲精品久久久乳| 亚洲经典千人经典日产| 亚洲av日韩av永久在线观看 | 亚洲AV无码专区在线电影成人| 国产亚洲sss在线播放| 亚洲av无码片区一区二区三区| 亚洲人成日本在线观看| 亚洲婷婷在线视频| 亚洲va在线va天堂va手机| 亚洲人成小说网站色| 亚洲日本va一区二区三区| 亚洲gay片在线gv网站| 欧洲亚洲综合一区二区三区| 亚洲Av无码乱码在线播放| 亚洲成A人片在线观看中文 | 一本色道久久88亚洲综合| 亚洲成av人片在线观看天堂无码| 亚洲性在线看高清h片| 亚洲深深色噜噜狠狠爱网站| 久久精品亚洲综合一品| 老司机亚洲精品影院| 亚洲成a人片在线观看中文app| 亚洲一欧洲中文字幕在线| 亚洲欧美日韩综合久久久久| 理论亚洲区美一区二区三区| 亚洲一级片免费看| 亚洲乱码中文字幕久久孕妇黑人| 久久久亚洲精品无码| 亚洲欧洲日本天天堂在线观看| 最新亚洲精品国偷自产在线| 18禁亚洲深夜福利人口| 国产午夜亚洲精品理论片不卡 | 亚洲国产精品VA在线观看麻豆| 亚洲视频日韩视频| 成人亚洲国产va天堂|