一家厌、獲取文本語料庫
1. 古騰堡語料庫
NLTK包含古騰堡項(xiàng)目(Project Gutenberg)電子文本檔案的經(jīng)過挑選的一小部分文本朵栖。該項(xiàng)目大約有 25,000(現(xiàn)在是 36,000 了)本免費(fèi)電子圖書
在之前的章節(jié)中,使用了text1.concordance()直接對text1這樣的文本進(jìn)行索引,但對現(xiàn)在這種情況的數(shù)據(jù),需要多加一步才能使用諸如.concordance()
的方法:
2. 網(wǎng)絡(luò)和聊天文本
NLTK的網(wǎng)絡(luò)文本集合的內(nèi)容包括 Firefox交流論壇娩嚼、在紐約無意聽到的對話、《加勒比海盜》的電影劇本和個(gè)人廣告和葡萄酒的評論等滴肿。
即時(shí)消息聊天會話語料庫岳悟,最初由美國海軍研究生院為研究自動檢測互聯(lián)網(wǎng)幼童虐待癖而收集的。語料庫包含超過 10,000 張?zhí)悠貌睿浴癠serNNN”形式的通用名替換掉 用戶名贵少,手工編輯消除任何其他身份信息,制作而成堆缘。語料庫被分成 15 個(gè)文件滔灶,每個(gè)文件包含幾百個(gè)按特定日期和特定年齡的聊天室(青少年、20 歲吼肥、30 歲录平、40 歲、再加上一個(gè)通 用的成年人聊天室)收集的帖子缀皱。
3. 布朗語料庫
布朗語料庫是第一個(gè)百萬詞級的英語電子語料庫的斗这,由布朗大學(xué)于 1961 年創(chuàng)建。這個(gè) 語料庫包含 500 個(gè)不同來源的文本啤斗,按照文體分類表箭,如:新聞、社論等钮莲。
使用from nltk.corpus import brown
加載語料
4. 路透社語料庫
路透社語料庫包含 10,788 個(gè)新聞文檔燃逻,共計(jì) 130 萬字。這些文檔分成 90 個(gè)主題臂痕,按照 “訓(xùn)練”和“測試”分為兩組。因此猿涨,fileid 為“test/14826”等的文檔屬于測試組握童。
使用from nltk.corpus import reuters
加載語料
5. 就職演說語料庫
使用from nltk.corpus import inaugural
加載語料
6. 標(biāo)注文本語料庫
許多文本語料庫都包含語言學(xué)標(biāo)注,有詞性標(biāo)注叛赚、命名實(shí)體澡绩、句法結(jié)構(gòu)、語義角色等俺附。 NLTK 中提供了很方便的方式來訪問這些語料庫中的幾個(gè)肥卡,還有一個(gè)包含語料庫和語料樣本 的數(shù)據(jù)包,用于教學(xué)和科研的話可以免費(fèi)下載事镣。
7. 文本語料庫的結(jié)構(gòu)
- 最簡單的一種語料庫是一些孤立的沒有什么特別的組織的文本集合
- 一些語料庫按如文體(布朗語料庫)等分類組織結(jié)構(gòu)
- 一些分類會重疊步鉴,如主題 類別(路透社語料庫)
- 一些語料庫可以表示隨時(shí)間變化語言用法的改變(就職演說語 料庫)
8. 載入你自己的語料庫
使用PlaintextCorpusReader
加載自己的語料庫:
from nltk.corpus import PlaintextCorpusReader
corpus_root = '/usr/share/dict' # 假設(shè)語料庫所在的目錄是這個(gè)
# PlaintextCorpusReader 參數(shù)分別是語料庫所在地址和正則表達(dá)式
wordlists = PlaintextCorpusReader(corpus_root, '.*')
使用BracketParseCorpusReader
加載語料
from nltk.corpus import BracketParseCorpusReader
# 假設(shè)語料存放在這個(gè)地址
corpus_root = r"C:\corpora\penntreebank\parsed\mrg\wsj"
# file_pattern用來與它的子文件夾中包含的文件匹配
file_pattern = r".*/wsj_.*\.mrg"
ptb = BracketParseCorpusReader(corpus_root, file_pattern)
二、條件頻率分布
1. 條件和事件
頻率分布計(jì)算觀察到的事件,如文本中出現(xiàn)的詞匯氛琢。為此需要將文本處理成配對序列:(條件喊递,事件)
這里按文體處理整個(gè)布朗語料庫,將有 15 個(gè)條件(每個(gè)文體一個(gè)條件)和 1,161,192 個(gè)事件(每一個(gè)詞一個(gè)事件)
2. 按文體計(jì)數(shù)詞匯
from nltk.corpus import brown
# brown.words(categories=genre) 用來遍歷出這種問題的所有文本的每個(gè)字
# brown.categories() 得到所有的問題
# 使用下面的代碼得到在這種文體下阳似,這個(gè)字出現(xiàn)的次數(shù)
cfd = nltk.ConditionalFreqDist((genre, word) for genre in brown.categories() for word in brown.words(categories=genre))
書中只使用了兩種文體來做為例子:
使用此配對鏈表創(chuàng)建一個(gè) ConditionalFreqDist骚勘,并將它保存在一個(gè)變量 cfd 中:
2. 繪制分布圖和分布表
條件是詞 america 或 citizen ,被繪圖的計(jì)數(shù)是在特定演講中出現(xiàn)的詞的次數(shù)撮奏。它利用了每個(gè)演講的文件名——例如 1865-Lincoln.txt——的前 4 個(gè)字符包含年代的事實(shí)俏讹。這段代碼為文件 1865-Lincoln.txt 中每 個(gè)小寫形式以america開頭的詞——如:Americans——產(chǎn)生一個(gè)配對('america', '1865')
# 繪制分布圖和分布表
from nltk.corpus import inaugural
%matplotlib inline
cfd = nltk.ConditionalFreqDist((target, fileid[:4])
for fileid in inaugural.fileids()
for w in inaugural.words(fileid)
for target in ['america', 'citizen']
if w.lower().startswith(target))
cfd.plot()
三、更多關(guān)于 Python:代碼重用
主要包含函數(shù)和模塊的內(nèi)容
四畜吊、詞典資源
詞典或者詞典資源是一個(gè)詞和/或短語以及一些相關(guān)信息的集合泽疆,例如 :詞性和詞意定 義等相關(guān)信息。詞典資源附屬于文本定拟,通常在文本的幫助下創(chuàng)建和豐富于微。
1. 詞匯列表語料庫
詞匯語料庫是 Unix中的/usr/dict/words 文 件,被一些拼寫檢查程序使用青自。
除了這個(gè)語料之外株依,還有停止詞語料,這個(gè)語料是在NLP處理中經(jīng)常使用的延窜。因?yàn)橹T如‘的’等高頻但沒有意義的詞很多時(shí)候會妨礙算法的判斷恋腕,所以常在應(yīng)用算法前使用停止詞語料來處理一遍,去除這些高頻但無意義的詞逆瑞。
可使用from nltk.corpus import stopwords
加載停止詞語料
2. 發(fā)音的詞典
一個(gè)稍微豐富的詞典資源是一個(gè)表格(或電子表格)荠藤,在每一行中含有一個(gè)詞加一些性 質(zhì)。NLTK 中包括美國英語的 CMU 發(fā)音詞典nltk.corpus.cmudict.entries()
获高,它是為語音合成器使用而設(shè)計(jì)的哈肖。
3. 比較詞表
表格詞典的另一個(gè)例子是比較詞表。NLTK中包含了所謂的斯瓦迪士核心詞列表(Swa desh wordlists)念秧,幾種語言中約 200 個(gè)常用詞的列表淤井。語言標(biāo)識符使用 ISO639 雙字母碼。
可使用from nltk.corpus import swadesh
加載
五摊趾、WordNet
WordNet 是面向語義的英語詞典币狠,類似與傳統(tǒng)辭典,但具有更豐富的結(jié)構(gòu)砾层。NLTK 中包 括英語 WordNet漩绵,共有 155,287 個(gè)詞和 117,659 個(gè)同義詞集合。我們將以尋找同義詞和它們 在 WordNet 中如何訪問開始肛炮。
這個(gè)在知識圖譜里也有接觸止吐,是目前最著名的詞典知識庫宝踪。