《Python自然語言處理》學習筆記(二)

2021-07-25 22:35:39 字數 1705 閱讀 3160

今天的內容涉及對語言簡單的統計和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等方法。現在我很想把它們在分詞中的聯絡和區別都一一搞清楚。最大匹配分詞方法簡單 容易實現,但是無法解決上面提到的...