今天的內容涉及對語言簡單的統計和python基本控制流程(if,for)。
一.計算語言
1.頻率分布
freqdist函式:需要乙個文字作為引數,返回一組鍵值對,鍵是單詞,值時單詞在文中出現的次數。
fdist1 = freqdist(text1)
plot函式:通過引數,可以繪製單詞的頻率圖,或者累積頻數圖。
fdist1.plot(50,cumulative=true) 繪製fdist1的50個出現頻率最高的詞的累積頻數圖。
2.細粒度的選擇詞
v=set(text1) #將v賦值為text1的單詞的集合(集合肯定沒有重複的元素)
long_words=[w for w in v if len(w)>15] #選出長度大於15的單詞
sorted(long_words) #給單詞按照字母順序排序
應用舉例:求語料庫中所有長度超過7,出現次數超過7的詞。
fdist5=freqdist(text5)
sorted([w for w in set(text5) if len(w)>7 and fdist5[w]>7])
3.詞語搭配和雙連詞
biagram雙連詞:
biagrams(['more','is','said','than','done'])
collocations(num,n)函式:根據出現頻率,選擇num個n連詞。
如果沒寫引數,預設是(20,2)。
text4.collocations()
4.計數的其他技巧
例子描述
fdist = freqdist(samples) 建立包含給定樣本的頻率分布
fdist.inc(sample) 增加樣本
fdist['monstrous'] 計數給定樣本出現的次數
fdist.freq('monstrous') 給定樣本的頻率
fdist.n() 樣本總數
fdist.keys() 以頻率遞減順序排序的樣本鍊錶
for sample in fdist: 以頻率遞減的順序遍歷樣本
fdist.max() 數值最大的樣本
fdist.tabulate() 繪製頻率分布表
fdist.plot() 繪製頻率分布圖
fdist.plot(cumulative=true) 繪製累積頻率分布圖
fdist1 < fdist2 測試樣本在fdist1 中出現的頻率是否小於fdist2
二.決策與控制
這一方面就不詳細闡述了,有程式設計基礎的人都懂。只寫幾點注意事項。
1.提取符合特定條件的集合時,常用for和if。此時直接用即可,語法和c++稍有不同。
len(set([w.lower() for w in text1 if w.isalpha()]))
2.一般用法,即for和if後面有執行語句時,for和if後面要加「:」
for word in text1:
print word,
加上逗號,結果就會在一行輸出了。這是乙個小技巧。
三.理解自然語言
1.詞義消歧
即算出特定上下文中的某個詞彙是什麼意思。自然,這需要用到上下文。
2.指代消解
即理解代詞所指代什麼。
你應該自己去熟悉上的python 文件,那裡鏈結了許多教程和全面的參考材料。 上有《python 初學者指南》。關於python 的各種問題在的faq 中得到回答。
自然語言處理學習記錄
v set text1 long words w for w in v if len w 15 找出長度大於7並且出現頻率大於7的單詞 fdisi5 freqdist text5 sorted w for w in set text5 if len w 7 and fdist5 w 7 檢視文字中詞...
python自然語言處理學習資源彙總
2017.4.18更新 因為pypi的官網並不全。並不全。不全。抑或是並沒有上面這個鏈結這麼使用方便 一目了然導致我找不到 原文 1.nltk 命令 pip install nltk 2.numpy 命令 pip install numpy 3.一不留神下下來五個包,是被 安裝了麼。本來只想下mat...
自然語言處理學習筆記 006
常用的分詞方法 自然語言處理常用的分詞方法有正向和逆向最大匹配 最短路徑 全切分 最大概率 n 最短路徑等方法。現在流行起來的還有最大熵模型 hmm模型 決策樹 bp神經網路 n gram等方法。現在我很想把它們在分詞中的聯絡和區別都一一搞清楚。最大匹配分詞方法簡單 容易實現,但是無法解決上面提到的...