自然語言處理(NLP)——使用NLTK包驗證齊夫定律及使用wordnet

                       

 

                                  

第一題,利用大文本驗證“齊夫定律”的正確性,首先我們使用pycharm作爲集成開發環境,python3.5+nltk來做實驗。

 

齊夫定律:齊夫定律(英語:Zipf's law)是由哈佛大學的語言學家喬治·金斯利·齊夫(George Kingsley Zipf)於1949年發表的實驗定律。它可以表述爲:在自然語言的語料庫裏,一個單詞出現的頻率與它在頻率表裏的排名成反比。所以,頻率最高的單詞出現的頻率大約是出現頻率第二位的單詞的2倍,而出現頻率第二位的單詞則是出現頻率第四位的單詞的2倍。這個定律被作爲任何與冪定律概率分佈有關的事物的參考。

 

     1.我們選用了nltk內置的大文本作爲題目中的自由文本(布朗語料庫及古騰堡語料等),統計出文章所有詞的頻率(使用對數刻度)以及對它們進行排序並且選出前150個詞作圖以及驗證齊夫定律。

 

 

     2.對於b問,做法是和第一題一樣的,得出一個結果與第一題作比較。不同點:全是隨機產生的字母組成的文章,我們也給予足夠大的數量以構成大文本。

 

a.

b.

實驗結果:第一問通過實驗認可齊夫定律。第二問實驗結果不符合齊夫定律。

 

                               

 

WordNet是由Princeton 大學的心理學家,語言學家和計算機工程師聯合設計的一種基於認知語言學的英語詞典。它不是光把單詞以字母順序排列,而且按照單詞的意義組成一個“單詞的網絡”。

  1. 使用nltk裏的wordnet

 

>>>from nltk.corpus import wordnet as wn

 

(2)對dog進行計算WordNet 中名詞、動詞、形容詞和副詞的平均多義性。

 

名詞的平均多義性是指wordnet中所有名詞的含義個數除以名詞個數

 

 

算法描述

 

第一題a:

 

 

創建一個FreqDist類型的字典以存放取對數後的詞頻。

導入大文本數據,並分好詞。

遍歷分好詞的列表,統計每個詞的出現詞頻。

對所有詞根據詞頻進行排序。

取題目中的第50個和第150個詞進行驗證。

作圖輸出前150個詞。

 

第一題b:

構建足夠大的大文本

從這幾個字母中不斷隨機選出元素來構建大文本

進行分詞,使用空白項進分詞。

遍歷分好詞的列表,統計每個詞的出現詞頻。

對所有詞根據詞頻進行排序。

取題目中的第50個和第150個詞進行驗證。

作圖輸出前150個詞。

第二題:

 

收集所有指定類型的同義詞集
遍歷同義詞集
收集同義詞集內的詞條
打印詞條總數
得到每個詞條的同類型所含意義的個數,求和
打印詞集內該類型詞條的意義總數
打印該類型的平均多義性

詳例描述

 

第一題a:對於inaugural:第五十個詞應是第一百個詞出現的頻率的三倍。

 

實驗結果:第50個詞爲may,第150個詞爲much

符合齊夫定律。注:(r_a)爲倍數。

第五十個詞爲fg,第一百五十個詞爲gcg,不符合齊夫定律。注:(r_b)爲倍數。

 

對比兩個小問的圖:

 

 

 

 

若是大文本,曲線比較平滑,而對於隨機生成的大文本,曲線則比較陡峭曲折,似乎是每到一個點便發生顯著的變化,而在兩個發生明顯變化的點之間的曲線,曲線則是比較地平穩。

 

第二題

軟件演示

選用了大文本古騰堡,布朗等作爲例子。

 

古騰堡:


符合齊夫定律。

 

對於布朗:

 

符合齊夫定律。

 

對於隨機大文本:

 

不符合齊夫定律。

 

總結和體會

總結:

1. 需要深刻理解齊夫定律:在Brown語料庫中,“the”、“of”、“and”是出現頻率最前的三個單詞,其出現的頻數分別爲69971次、36411次、28852次,大約佔整個語料庫100萬個單詞中的7%、3.6%、2.9%,其比例約爲6:3:2。大約佔整個語料庫的7%(100萬單詞中出現69971次)。滿足齊夫定律中的描述。僅僅前135個字彙就佔了Brown語料庫的一半。齊夫定律是一個實驗定律,而非理論定律,可以在很多非語言學排名中被觀察到,例如不同國家中城市的數量、公司的規模、收入排名等。齊夫定律不僅適用於語料全體,也適用於單獨的一篇文章。

2.對於nltk內置函數的運用還需要加深一步學習;比如words(),FreqDist(),wordnet()等。以及wordnet的使用。

3. 關於取對數刻度的問題,我們對FreqDist進行遍歷取所有key的value值進行取對數再放進新的FreqDist裏進行作圖。

體會:看似簡單兩道題目,確是對熟練運用nltk的練習,包括如何處理大文本以及統計大文本中的詞頻等操作。對於wordnet,更是體會到它對於NLP的意義。在nltk下調用更爲方便。#

 

[注]本項目爲小組團隊項目,共同完成,感謝小夥伴們的付出與努力~

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章