用途:NLTK 是经典的自然语言处理库,主要用于教学、语言学研究和传统 NLP 任务,提供较全面的语言学数据。适合分词、词干提取、词形还原、词性标注、句法分析,以及为 TF-IDF、朴素贝叶斯、SVM 等经典模型做文本预处理。
主要能力:支持 word_tokenize 分词、stopwords 停用词过滤、WordNetLemmatizer 词形还原、PorterStemmer 词干提取、pos_tag 词性标注与 ne_chunk 命名实体分块;VADER(SentimentIntensityAnalyzer)可对社交媒体文本做基于规则的情感强度打分,输出 compound 分数并按阈值判断正负中性。
使用方式:先安装并下载所需语料,例如 nltk.download('punkt_tab')、nltk.download('stopwords')、nltk.download('wordnet')、nltk.download('vader_lexicon')、nltk.download('averaged_perceptron_tagger_eng')、nltk.download('maxent_ne_chunker_tab')、nltk.download('words')。典型流程为小写化、分词、去标点与停用词、词形还原。词形还原可结合词性标签提升准确度,如 lemmatizer.lemmatize("running", wordnet.VERB) 得到 run,lemmatizer.lemmatize("better", wordnet.ADJ) 得到 good。
适用场景:经典 NLP 与语言学研究、基于规则的情感分析、经典机器学习文本预处理、词频与搭配分析。
限制与建议:NLTK 速度慢于 spaCy,不适合高吞吐生产级分词,此类场景建议使用 Hugging Face tokenizers 或 spaCy;需要语义理解或现代深度学习时建议迁移到 spaCy 或 transformers。不要在每次请求中重复调用 nltk.download(),应在构建或容器阶段一次性下载。若需细粒度动词与名词区分,词形还原应指定词性标签。常见问题包括未下载 punkt_tab 或 wordnet 导致 LookupError,以及大规模文本分词缓慢,可通过批处理或多进程缓解。官方文档见 NLTK Documentation。