對於自然語言處理有興趣的人一定要碰的 Natural Language Toolkit (NLTK) 是用 Python 寫的….
現在老師出了一個題目,要你算出某些文章的詞頻分佈,還有更進一步的統計。
而學生要做的第一件事,就是把文章可以讀進來。能讀取 corpora 是 NLP 的一小步,可是沒有這一小步,就好像上籃不墊步,很容易被吹走步。…..
NLTK 提供了幾種 corpus 讀取的方式,可以由書中第二章找到。因為我們要處理的資料是由手邊可得的文件亂選出來的,所以符合的 corpus 種類為 isolated。這部份可以參考的程式碼,可以看看 NLTK 是怎麼處理 webtext 的。那我們要用,就要如法炮製一下囉:
我選的是 nytimes 的新聞,因此把文章收集起來,全部丟到 ~/nltk_data/corpus/nyt 下,並加上如下的程式碼就可以操作 nyt 的文章了。
from nltk.corpus.reader import *
nyt = LazyCorpusLoader(
‘nyt’, PlaintextCorpusReader, r‘(?!README|.).*’)
LazyCorpusLoader 讓你可以讀取任意的資料,’nyt’ 指定的是在 ~/nltk_data/corpus 下的目錄, PlaintextCorpusReader 指定的就是 isolated corpus ,而最後面就是有符合該 regex pattern 的檔案了。
當然,有別的作法,書中都有,Chapter 3 就有足夠的範例了。可以自行讀入 raw data,再用 nltk.word_tokenize() 轉化也行,以開檔案來說:
f = open(‘document.txt’)
raw = f.read()
tokens = nltk.word_tokenize(raw)
第一步,就這樣。