NLTK學習筆記(一):語言處理和Python


目錄


nltk資料下載

import nltk
nltk.download()

其中,download() 參數默認是all,可以在腳本里面加上nltk.download(需要的資料庫) 來進行下載


文本和詞匯

首先,通過from nltk.book import * 引入需要的內置9本書

搜索文本

上下文:Text.concordance('monstrous') ,concordance是一致性的意思。即在Text對象中monstrous出現的上下文

相同上下文單詞:Text.similar('monstrous') ,查找哪些詞還有相同的上下文 。(比如 the__size 空格上可以是big/small),這個函數會自動找出來並返回。

多個單詞上下文: Text.common_contexts(['very','monstrous']) ,返回共用兩個或兩個以上詞匯的上下文

多個單詞頻率繪圖工具: Text.dispersion_plot(['citizens','freedom']) , 可以得到很好看的離差散點圖

計數詞匯(去重、定位)

不去重的計算用BIF里面的len() 就可以了:len(text1)

去重計算 需要用到內置結構set: len(set(text1))

可以使用nltk內置BIF:Text.count(word) 查找單詞出現次數;使用Text.index(word)可以進行定位


詞鏈表

主要是結合python內置list的特點,可以進行鏈接等一些鏈表操作,十分方便,對於一些基本的list操作,可以自行看文檔


自然語言簡單數學統計

頻率分布

用法:FreqDist(WordList) ,參數可以實List或者其子類,所以 Text(text1,text2...)也可以作為參數。函數返回字典形式,可以調用dict.keys() 查詢所有單詞和符號

from nltk import *
fdist = FreqDist(text1)
print(fdist['whale'])

可以通過 fdist.plot(TopK,cumulative=True) 畫出來出現頻率前K的詞匯的光滑曲線,去掉第二個參數,是折線圖。個人感覺曲線好看。。。

對於只出現一次的詞匯,通過fdist.hapaxes() 返回的list查看。

細粒度的選擇詞

細粒度: 細粒度模型,通俗的講就是將業務模型中的對象加以細分,從而得到更科學合理的對象模型,直觀的說就是划分出很多對象。對於詞匯,我們可能需要長度大於5的不重復詞匯,這就是一個Model

v = set(text1)
long_words = [w for w in v if len(w) > 5]

如果我們需要頻率大於7,長度大於10的呢?

fdist = FreqDist(text1)
long_words = [w for w in set(text1) if len(w)>10 and fdist[w] > 7]

雙連詞和詞匯搭配

雙連詞就是n-gram模型中n=2,組成的詞鏈表

在nltk里面有BIF,bigrams(wordlist) ,生成詞鏈表

>>> list(bigrams(['a','b','c']))
[('a', 'b'), ('b', 'c')]

通過這個詞鏈表,我們可以找到搭配(定義:不經常在一起出現的詞序列).Text.collocations() 可以查找出現頻率比預期頻率更頻繁的雙連詞

>>> text4.collocations()
United States; fellow citizens; four years; years ago; Federal
Government; General Government; American people; Vice President; Old
World; Almighty God; Fellow citizens; Chief Magistrate; Chief Justice;
God bless; every citizen; Indian tribes; public debt; one another;
foreign nations; political parties

詞長分布

代碼實現:

fdist = FreqDist([len(w) for w in text1])
print(fdist.items())
print(fdist.freq(3))#查找頻率

詞長可以幫助我們理解作者、文本和語言之間的差異


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM