当前位置: 首页 > news >正文

Python 库 包 nltk (Natural Language Toolkit)

文章目录

    • 🧰 一、nltk 的主要功能
      • ✅ 文本处理功能
      • ✅ 内置语料库(Corpora)
    • 📦 二、安装与使用
      • 1. 安装 nltk
      • 2. 下载语料库(第一次使用时需要下载)
    • 🔍 三、常用功能示例
      • 示例 1:分词
      • 示例 2:词性标注
      • 示例 3:停用词过滤
      • 示例 4:词干提取(Stemming)
      • 示例 5:词形还原(Lemmatization)
    • 🎓 四、适用场景
    • 🆚 五、与其他 NLP 工具对比
    • 📚 六、推荐学习资源

nltkNatural 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 模型资源消耗大

📚 六、推荐学习资源

  1. 官网:https://www.nltk.org
  2. 书籍《Natural Language Processing with Python》
    • 作者:Steven Bird, Ewan Klein, Edward Loper
    • 免费电子版可在网上找到
  3. YouTube 视频教程
    • 搜索 “NLTK tutorial” 即可找到很多入门视频
http://www.xdnf.cn/news/1076797.html

相关文章:

  • 视频断点续播全栈实现:基于HTML5前端与Spring Boot后端
  • 141.在 Vue 3 中使用 OpenLayers Link 交互:把地图中心点 / 缩放级别 / 旋转角度实时写进 URL,并同步解析显示
  • 【Maven 】 <resources> 配置中排除 fonts/** 目录无效,可能是由于以下原因及解决方案:
  • 计算机网络(二)应用层HTTP协议
  • (LangChain)RAG系统链路向量存储之Milvus(四)
  • 【1.4 漫画PostgreSQL高级数据库及国产数据库对比】
  • 【MyBatis保姆级教程下】万字XML进阶实战:配置指南与深度解析
  • 2025年6月28和29日复习和预习(C++)
  • JVM调优实战 Day 15:云原生环境下的JVM配置
  • SQLite与MySQL:嵌入式与客户端-服务器数据库的权衡
  • sqlmap学习ing(2.[第一章 web入门]SQL注入-2(报错,时间,布尔))
  • C++ 第四阶段 STL 容器 - 第九讲:详解 std::map 与 std::unordered_map —— 关联容器的深度解析
  • 解决安装UBUNTU20.04 提示尝试将SCSI(0,0,0),第一分区(sda)设备的一个vfat文件系统挂载到/boot/efi失败...问题
  • poi java设置字体样式
  • 数据结构day4——栈
  • WPF学习笔记(18)触发器Trigger
  • Cypher 是 Neo4j 专用的查询语言
  • 归因问答-有效归因实践
  • 笔记本电脑怎样投屏到客厅的大电视?怎样避免将电脑全部画面都投出去?
  • Nginx重定向协议冲突解决方案:The plain HTTP request was sent to HTTPS port
  • Qt中使用QSettings数据或结构体到INI文件
  • 用 YOLOv8 + DeepSORT 实现目标检测、追踪与速度估算
  • 05【C++ 入门基础】内联、auto、指针空值
  • 物联网数据洪流下,TDengine 如何助 ThingLinks 实现 SaaS 平台毫秒级响应?
  • 在Linux中下载docker
  • 【SQL优化案例】索引创建不合理导致SQL消耗大量CPU资源
  • SpringBoot - 定时任务改Cron不重启,调度规则生效
  • RuoYi-Vue前后端分离版实现前后端合并
  • 用Fiddler中文版抓包工具掌控微服务架构中的接口调试:联合Postman与Charles的高效实践
  • docker desktop部署本地gitlab服务