文章目錄
- 🧰 一、nltk 的主要功能
- ? 文本處理功能
- ? 內置語料庫(Corpora)
- 📦 二、安裝與使用
- 1. 安裝 nltk
- 2. 下載語料庫(第一次使用時需要下載)
- 🔍 三、常用功能示例
- 示例 1:分詞
- 示例 2:詞性標注
- 示例 3:停用詞過濾
- 示例 4:詞干提取(Stemming)
- 示例 5:詞形還原(Lemmatization)
- 🎓 四、適用場景
- 🆚 五、與其他 NLP 工具對比
- 📚 六、推薦學習資源
nltk
(Natural Language Toolkit)是一個用于自然語言處理(NLP)的 Python 庫,特別適合教學和研究。它提供了豐富的語料庫、詞典資源以及各種文本處理工具,非常適合初學者和研究人員使用。
🧰 一、nltk 的主要功能
? 文本處理功能
- 分詞(Tokenization)
- 詞形還原(Lemmatization)
- 詞干提取(Stemming)
- 詞性標注(POS Tagging)
- 命名實體識別(NER)
- 句法分析(Parsing)
- 情感分析(Sentiment Analysis)
? 內置語料庫(Corpora)
- 含有幾十種公開語料和詞典(如布朗語料庫、電影評論語料等)
- 支持中文(但中文支持不如英文完善)
📦 二、安裝與使用
1. 安裝 nltk
pip install nltk
2. 下載語料庫(第一次使用時需要下載)
import nltk
nltk.download() # 會彈出圖形界面,選擇要下載的內容(建議全選或至少下載 popular)
也可以通過命令行指定下載:
nltk.download('punkt') # 常用分詞模塊
nltk.download('averaged_perceptron_tagger') # 詞性標注器
nltk.download('wordnet') # WordNet 詞典
nltk.download('stopwords') # 停用詞列表
🔍 三、常用功能示例
示例 1:分詞
from nltk.tokenize import word_tokenizetext = "Hello, I love NLP with NLTK!"
tokens = word_tokenize(text)
print(tokens)
# 輸出: ['Hello', ',', 'I', 'love', 'NLP', 'with', 'NLTK', '!']
示例 2:詞性標注
from nltk import pos_tagpos_tag(word_tokenize("I love natural language processing."))
# 輸出: [('I', 'PRP'), ('love', 'VBP'), ('natural', 'JJ'), ...]
示例 3:停用詞過濾
from nltk.corpus import stopwordsstop_words = set(stopwords.words('english'))
words = ["the", "hello", "and", "python"]
filtered_words = [w for w in words if w not in stop_words]
print(filtered_words) # 輸出: ['hello', 'python']
示例 4:詞干提取(Stemming)
from nltk.stem import PorterStemmerps = PorterStemmer()
print(ps.stem("running")) # 輸出: run
示例 5:詞形還原(Lemmatization)
from nltk.stem import WordNetLemmatizerlemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize("running", pos="v")) # 輸出: run
🎓 四、適用場景
應用 | 使用方式 |
---|---|
教學/學習 NLP | 提供了大量教材和練習 |
簡單的文本分析 | 如情感分析、關鍵詞提取 |
構建小型 NLP 工具 | 比如聊天機器人、詞頻統計 |
中文處理(有限) | 需要自定義分詞器 |
?? 注意:對于中文處理,nltk 不像 jieba 那樣方便,需要自己加載語料和模型。
🆚 五、與其他 NLP 工具對比
工具 | 特點 | 優點 | 缺點 |
---|---|---|---|
nltk | 經典 NLP 工具包 | 學習曲線低,文檔豐富 | 性能一般,不適合大規模生產 |
spaCy | 工業級 NLP 工具 | 快速、準確、適合生產環境 | 對中文支持較弱 |
jieba | 中文分詞利器 | 簡單高效 | 功能單一,僅限中文 |
transformers (HuggingFace) | 使用預訓練模型(如 BERT) | 最先進的 NLP 模型 | 資源消耗大 |
📚 六、推薦學習資源
- 官網:https://www.nltk.org
- 書籍《Natural Language Processing with Python》
- 作者:Steven Bird, Ewan Klein, Edward Loper
- 免費電子版可在網上找到
- YouTube 視頻教程
- 搜索 “NLTK tutorial” 即可找到很多入門視頻