[Python] Natural Language Toolkit (NLTK) – Part I

2009/12/07
By

對於自然語言處理有興趣的人一定要碰的 Natural Language Toolkit (NLTK) 是用 Python 寫的….

本身它就有詳細的文件可以參考,所以當然不用從頭介紹。

現在老師出了一個題目,要你算出某些文章的詞頻分佈,還有更進一步的統計。

而學生要做的第一件事,就是把文章可以讀進來。能讀取 corpora 是 NLP 的一小步,可是沒有這一小步,就好像上籃不墊步,很容易被吹走步。…..

NLTK 提供了幾種 corpus 讀取的方式,可以由書中第二章找到。因為我們要處理的資料是由手邊可得的文件亂選出來的,所以符合的 corpus 種類為 isolated。這部份可以參考的程式碼,可以看看 NLTK 是怎麼處理 webtext 的。那我們要用,就要如法炮製一下囉:

我選的是 nytimes 的新聞,因此把文章收集起來,全部丟到 ~/nltk_data/corpus/nyt 下,並加上如下的程式碼就可以操作 nyt 的文章了。

from nltk.corpus.util import LazyCorpusLoader
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() 轉化也行,以開檔案來說:

import nltk, re, pprint

f = open(‘document.txt’)
raw = f.read()
tokens = nltk.word_tokenize(raw)

第一步,就這樣。

Tags: , , ,

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*


*