Python NLTK自然語(yǔ)言處理1-文本操作

一、下載查看預(yù)料

使用python NLTK包,安裝什么的參考https://blog.csdn.net/huyoo/article/details/12188573
注:將nltk_data文件夾放在python運(yùn)行環(huán)境的根目錄下,方便調(diào)用語(yǔ)料。

#下載要先調(diào)好語(yǔ)料的下載路徑。
import nltk
nltk.download('gutenberg')   ##下載語(yǔ)料   要下載到nltk_data文件夾下

提問(wèn)1:找出gutenberg的 shakespeare-macbeth.txt語(yǔ)料中最長(zhǎng)的一句話。

from nltk.corpus import gutenberg
macbeth_sentences = gutenberg.sents('shakespeare-macbeth.txt')
#lenl = [len(s) for s in macbeth_sentences]
longest_len = max([len(s) for s in macbeth_sentences])
item = [s for s in macbeth_sentences if len(s) == longest_len]

提問(wèn)2: 找出分析brown布朗語(yǔ)料庫(kù)中情態(tài)動(dòng)詞

##nltk.download('brown') 下載

brown.categories() ##布朗語(yǔ)料庫(kù)種類
news_text = brown.words(categories = 'news')  ##選擇新聞?lì)?fdist = nltk.FreqDist([w.lower() for w in news_text]) ##詞頻統(tǒng)計(jì)
modals = ['can', 'could', 'may', 'might', 'must','will'] ##情態(tài)動(dòng)詞
for m in modals:
    print (m + ':', fdist[m],)
停用詞的應(yīng)用

定義一個(gè)函數(shù),計(jì)算文本中沒有在停用詞列表中的詞的比例

from nltk.corpus import stopwords
a = stopwords.words('english')   #查看下english停用詞庫(kù)
def concont(text):
    stopwords = nltk.corpus.stopwords.word('english')
    content = [w for w in text if w.lower() not in stopwords]
    return len(content) / len(text)
分析下names預(yù)料中尾字母和男女性別的關(guān)系
names = nltk.corpus.names
names.fileids()  ##兩個(gè)男女姓名文件
male_names = names.words('male.txt')
female_names = names.words('female.txt')

##尾字母在各自文件夾中出現(xiàn)的次數(shù)
cfd = nltk.ConditionalFreqDist( (fileid, name[-1]) 
                                 for fileid in names.fileids()        
                                 for name in names.words(fileid)
                                                    )

cfd.plot()
正則表達(dá)式

這里使用words語(yǔ)料,下載語(yǔ)料同上

匹配查找以ed結(jié)尾的詞匯
##
import re
wordlist = [w for w in nltk.corpus.words.words('en') if w.islower()]
resea_edend = [w for w in wordlist if re.search('ed$', w)]

匹配任何單個(gè)字符有一個(gè)8個(gè)字母組成的詞, j是其第三個(gè)字母,t是其第六個(gè)字母。
rr = [w for w in wordlist if re.search('^..j..t..$', w)]  ##“.”表示通配符
#^開頭,$結(jié)尾,8個(gè)字母。
匹配數(shù)字
##+ 表示可以匹配多次 0.0085 0.05
te = [w for w in wsj if re.search('^[0-9]+\.[0-9]+$', w)]
##匹配出帶有字母和$的組合
zu = [w for w in wsj if re.search('^[A-Z]+\$$', w)]
##匹配出‘?dāng)?shù)字-字母(3到5次)’樣式 10-day
sz3 = [w for w in wsj if re.search('^[0-9]+-[a-z]{3,5}$', w)]
##匹配出以ed或者ing結(jié)尾的單詞
edin = [w for w in wsj if re.search('(ed|ing)$', w)]
最后 re.split,join 常用方法格式如下
re.split(r'\W+',  str)     以所有字母,數(shù)字,下劃線以外的字符進(jìn)行拆分。

silly = ['We', 'called', 'him', 'Tortoise']
' '.join(silly)         ##we called him  Tortoise
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容