Natural Language Toolkit

簡稱 ，係 Python 一個專用嚟幫手做英文自然語言處理嘅函式庫。NLTK 包含咗多種 NLP 成日要用嘅功能，例如係畀用家齋靠一句陳述式就產生到一樖分析樹，分析樹可以攞嚟分析句子嘅文法結構。

喺廿一世紀初，NLTK 廣受 NLP 相關領域嘅工作者採用：語言學、認知科學、人工智能同埋資訊科學等領域嘅工作，都成日要教電腦處理文字數據；而經驗表明 NLTK 好方便好好使，於是就成為咗 NLP 上嘅一隻標準架生，呢啲咁多唔同領域嘅工作者都會用到 NLTK 寫程式。

重要功能

畀用家下載同引入語料庫嘅各種資源，包括出名嘅文學作品、字表、詞典同埋語義網絡呀噉，例：
import nltk.corpus # 引入 NLTK 嘅語料庫

emma = nltk.corpus.gutenberg.words('austen-emma.txt') # 將 emma 設做 nltk.corpus 入面嘅...
print(emma) # output 出 emma。
畀用家用一句陳述式就搵出字之間嘅關係，例：
...
moby = Text(nltk.corpus.gutenberg.words('melville-moby_dick.txt')) # 將 moby 設做一嚿 Text 物件，入面啲字嚟自 nltk.corpus 嘅 'melville-moby_dick.txt'...

print(moby.concordance("monstrous")) # Output 畀出所有 "monstrous" 呢隻字出現嘅 context。
print(moby.similar("monstrous")) # Output 畀出所有 context 上同 "monstrous" 相近嘅字。
畀用家用一句陳述式畫圖顯示字詞嘅頻率，例：
...
moby.dispersion_plot(["citizens", "democracy", "freedom", "duties", "America"]) 
 出幅圖顯示 "citizen", "democracy", "freedom", "duties", "America" 呢幾隻字喺 moby 唔同部份入面出現嘅頻率。
畀用家引入語義網絡同搵字嘅同義字，仲可以做「搵兩隻字之間最低嘅共同上位詞」或者「計兩隻字之間嘅語義距離」等，例：
from nltk.corpus import wordnet as wn

print(wn.synsets('word'))
wn.synset('word.n.01').path_similarity(wn.synset('whale.n.01'))
 Output 畀出 "word" 呢隻字嘅同義字。
畀玩家用一句陳述式做記號化、詞形還原、字幹提取同埋攞走停用詞等嘅事前處理，例如 word_tokenize(my_string) 噉。
畀玩家用一句陳述式計啲字喺一段語料當中嘅頻率分佈。
畀玩家用一句陳述式做 regex 同相關嘅功能，好似係 re.search('ed$', w)、re.search(^..j..t..$', w)同 re.findall(r'[aeiou]', w)... 呀噉。
畀玩家用一句陳述式整 n-gram。
... 呀噉。

Python
SpaCy
WordNet
關聯陣列
文本文件
網頁刮料，NLTK 成日會配合呢方面嘅功能嚟用。

文獻
Bird, S., Klein, E., & Loper, E. (2009). Natural language processing with Python: analyzing text with the natural language toolkit. O'Reilly Media, Inc.

攷

拎
NLTK.org.
urllib3 1.26.12.

自然語言處理