国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

worldligang / 2788人閱讀

摘要:一個好的新詞發(fā)現程序對做自然預言處理來說是非常重要的。計算字組合的自由度分別計算它的左鄰居信息熵和右鄰居信息熵,取其中較小的為該組合的自由度。

互聯網時代,信息產生的數量和傳遞的速度非???,語言文字也不斷變化更新,新詞層出不窮。一個好的新詞發(fā)現程序對做NLP(自然預言處理)來說是非常重要的。

N-Gram加詞頻

最原始的新詞算法莫過于n-gram加詞頻了。簡單來說就是,從大量語料中抽取連續(xù)的字的組合片段,這些字組合片段最多包含n個字,同時統計每個字組合的頻率,按照詞頻并設置一個閾值來判斷一個字組合片段是否為詞匯。

該方法簡單處理速度快,它的缺點也很明顯,就是會把一些不是詞匯但出現頻率很高的字組合也當成詞了。

凝固度和自由度

這個算法在文章《互聯網時代的社會語言學:基于SNS的文本數據挖掘》 里有詳細的闡述。

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

自由度就是一個字組合片段能獨立自由運用的程度。比如“巧克力”里面的“巧克”的凝固度就很高,和“巧克力”一樣高,但是它自由運用的程度幾乎為零,所以“巧克”不能多帶帶成詞。

Python實現

根據以上闡述,算法實現的步驟如下:

n-gram統計字組合的頻率

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

中
中華
中華人
中華人民
中華人民共

n-gram統計字組合頻率的同時還要統計字組合的左右鄰居,這個用來計算自由度。

如果文本量再大一些,Python的dict經常會碰到最好使用trie tree這樣的數據結構。雙數組Trie Tree有很多非常好的開源實現,比如,cedar、darts等等。Trie Tree使用的好處是,它天然包含了字組合的右鄰居信息,因為這個數據結構一般是前綴樹。要統計左鄰居信息時,只需要把字組合倒序放入另外一個Trie Tree即可。
使用cedar Trie Tree的時候,5-gram統計30M的文本大約使用6GB左右的內存。

如果文本量更大,這就要借助硬盤了,可以使用leveldb這樣的key-value數據庫來實現。實驗下來,trie tree統計30M的文本用幾十秒,而同樣的用leveldb統計卻要6個多小時?。。撨€有比leveldb更合適的數據庫來做這件事情,有時間再說。
當然,為了發(fā)現新詞,幾十MB的文本文本足夠了。

計算字組合的凝固度;

有了上述的統計結果,計算每個字組合的凝固度就比較簡單了。
首先,把字組合切分成不同的組合對,比如’abcd’可以拆成(‘a’, ‘bcd’), (‘ab’, ‘cd’), (‘abc’, ‘d’),
然后,計算每個組合對的凝固度:D(s1, s2) = P(s1s2) / (P(s1) * P(s2))
最后,取這些組合對凝固度中最小的那個為整個字組合的凝固度。

計算字組合的自由度;

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

閾值的選擇

整個過程涉及到三個閾值的選擇:

組合的詞頻:頻率很低的組合成詞的可能性很小
組合的凝固度:凝固度越大成詞的可能性越大
組合的自由度:自由度越大成詞的可能性越大
經驗值:30M文本,詞頻>200, 凝固度>10**(n-1), 自由度>1.5

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

文章來源于:猿人學網站的python教程。

版權申明:若沒有特殊說明,文章皆是猿人學原創(chuàng),沒有猿人學授權,請勿以任何形式轉載。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43727.html

相關文章

  • 分詞,難在哪里?科普+解決方案!

    摘要:分詞的算法中文分詞有難度,不過也有成熟的解決方案。例如通過人民日報訓練的分詞系統,在網絡玄幻小說上,分詞的效果就不會好。三的優(yōu)點是開源的,號稱是中,最好的中文分詞組件。 showImg(https://segmentfault.com/img/remote/1460000016359704?w=1350&h=900); 題圖:by Lucas Davies 一、前言 分詞,我想是大多數...

    Steven 評論0 收藏0
  • LSTM分類相關

    摘要:而檢驗模型用到的原材料,包括薛云老師提供的蒙牛牛奶的評論,以及從網絡購買的某款手機的評論數據見附件。不同行業(yè)某些詞語的詞頻會有比較大的差別,而這些詞有可能是情感分類的關鍵詞之一。這是由于文本情感分類的本質復雜性所致的。 文本情感分類--傳統模型(轉) showImg(https://segmentfault.com/img/bVKjWF?w=2192&h=534); 傳統的基于情感詞典...

    MartinHan 評論0 收藏0
  • Python的C/C++擴展——SWIG封裝C++為Python模塊

    摘要:所以,最大的好處就是將腳本語言的開發(fā)效率和的運行效率有機的結合起來。前面的文章提到一個實現的雙數組的實現,它在中文分詞新詞發(fā)現等算法中的應用。本文以的封裝實現來說明的使用。編譯生成動態(tài)庫編譯生成的使用的,可以參考的編寫。 如果覺得文章對你有幫助,你也可以訪問老猿的個人博客https://www.yuanrenxue.com/ Python調用C/C++代碼的利器除了boost_pyt...

    鄒強 評論0 收藏0
  • 【好東西傳送門日報】2017-12-27 星期三

    摘要:機器學習云端可視化機器學習深度學習量化平臺自動由切換為而實現更好的泛化性能聯合提出最新百萬規(guī)模視頻動作理解數據集馬爾可夫鏈蒙特卡洛方法入門指南深度學習框架大事記新技術與新應用無人機助力大氣環(huán)境立體監(jiān)測憶阻器制成神經網絡更高效北京工業(yè)大學讓 【機器學習】 1) 云端可視化機器學習/深度學習量化平臺 http://t.cn/RHb9PxI 2) SWATS:自動由Adam切換為SGD而實現...

    tabalt 評論0 收藏0

發(fā)表評論

0條評論

worldligang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<