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

文本分词 nltk

目录

NLTK 的主要功能

1. 文本分词(Tokenization)

2. 词性标注(POS Tagging)

3. 停用词过滤(Stopwords Removal)

4. 词干提取(Stemming)

5. 词形还原(Lemmatization)

6. 命名实体识别(NER, Named Entity Recognition)

7. 情感分析(Sentiment Analysis)

NLTK 的典型应用


NLTK(Natural Language Toolkit,自然语言处理工具包)是一个用于 文本处理 和 自然语言处理(NLP) 的 Python 库。它提供了丰富的工具和数据集,适用于 文本分词、词性标注、句法分析、情感分析、机器翻译 等 NLP 任务。


NLTK 的主要功能

1. 文本分词(Tokenization)

  • 句子分词sent_tokenize):将段落拆分成句子。

  • 单词分词word_tokenize):将句子拆分成单词。

from nltk.tokenize import sent_tokenize, word_tokenizetext = "Hello, world! How are you?"
print(sent_tokenize(text))  # 输出:['Hello, world!', 'How are you?']
print(word_tokenize(text))  # 输出:['Hello', ',', 'world', '!', 'How', 'are', 'you', '?']

2. 词性标注(POS Tagging)

  • 标记单词的词性(名词、动词、形容词等)。

from nltk import pos_tag
from nltk.tokenize import word_tokenizetext = "I love coding in Python."
words = word_tokenize(text)
print(pos_tag(words))  # 输出:[('I', 'PRP'), ('love', 'VBP'), ('coding', 'VBG'), ('in', 'IN'), ('Python', 'NNP'), ('.', '.')]
 

3. 停用词过滤(Stopwords Removal)

  • 移除无意义的单词(如 "the", "is", "and")。

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenizetext = "This is a sample sentence."
words = word_tokenize(text)
stop_words = set(stopwords.words("english"))
filtered_words = [word for word in words if word.lower() not in stop_words]
print(filtered_words)  # 输出:['sample', 'sentence', '.']
 

4. 词干提取(Stemming)

  • 将单词还原为词干形式(如 "running" → "run")。

from nltk.stem import PorterStemmerstemmer = PorterStemmer()
print(stemmer.stem("running"))  # 输出:'run'
print(stemmer.stem("better"))   # 输出:'better'(不完全准确)
 

5. 词形还原(Lemmatization)

  • 比 Stemming 更智能,返回单词的基本形式(如 "better" → "good")。

from nltk.stem import WordNetLemmatizerlemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize("better", pos="a"))  # 输出:'good'('a' 表示形容词)
print(lemmatizer.lemmatize("running", pos="v")) # 输出:'run'('v' 表示动词)
 

6. 命名实体识别(NER, Named Entity Recognition)

  • 识别文本中的人名、地名、组织名等。

from nltk import ne_chunk, pos_tag, word_tokenizetext = "Apple is based in Cupertino."
words = word_tokenize(text)
tags = pos_tag(words)
print(ne_chunk(tags))  # 输出:(S (GPE Apple/NNP) is/VBZ based/VBN in/IN (GPE Cupertino/NNP) ./.)
 

7. 情感分析(Sentiment Analysis)

  • 判断文本的情感倾向(正面/负面)。

from nltk.sentiment import SentimentIntensityAnalyzersia = SentimentIntensityAnalyzer()
print(sia.polarity_scores("I love Python!"))  # 输出:{'neg': 0.0, 'neu': 0.192, 'pos': 0.808, 'compound': 0.6369}
 

NLTK 的典型应用

  • 文本预处理(清洗、分词、去停用词)

  • 情感分析(评论、社交媒体分析)

  • 机器翻译(结合其他 NLP 库)

  • 聊天机器人(结合 RNN/LSTM)

  • 搜索引擎优化(SEO)(关键词提取)

http://www.lryc.cn/news/580026.html

相关文章:

  • ODS 系统是什么?企业为什么需要搭建 ODS?
  • CentOS配置网络
  • 【Oracle APEX开发小技巧15】多级弹窗关闭子级保留父级
  • 建议大家都去频繁大量地记录自己:让目标在笔尖下生根发芽
  • 【银行测试】手机银行APP专项项目+测试点汇总(一)
  • 【烧脑算法】最小字典序:巧用单调栈,从栈底到最优解
  • Jmeter安装使用-测试Java接口
  • iOS IPA 混淆,如何对企业定制 App 做渠道差异化保护
  • 写一个ununtu C++ 程序,调用ffmpeg , 来判断一个数字电影的音频文件mxf 的 采样率(频率),通道数, 采样位数
  • ARMv8 没开mmu执行memset引起的非对齐访问异常
  • 新商品冷启动:基于语义Embedding与GBRT的消费指标预估技术实践
  • chrome插件合集
  • vue 循环无限滚动表格
  • Mint密室 · 猫猫狐狐的“特征选择”囚室逃脱
  • QT5.14.2+VS2019 打包程序找dll(纯QT+Opencv程序)
  • 鸿蒙开发List长按Item拖拽切换效果
  • kali安装教程
  • CI/CD持续集成与持续部署
  • spring boot项目配置使用minion
  • 【1】确认安装 Node.js 和 npm版本号
  • 3-1 PID算法改进(积分部分)
  • OpenHarmony 5.0 SIM卡信号格没有变化解决方案(修改成符合标准的信号变化)
  • 《探秘JavaScript虚拟列表:解锁高性能渲染的底层逻辑》
  • 我想要学写GitHub(草拟计划+目标)
  • 【2025/07/04】GitHub 今日热门项目
  • Fiddler 中文版怎么配合 Postman 与 Wireshark 做多环境接口调试?
  • cd-agent更换cd模型(自用)
  • 计算机科学导论(1)哈佛架构
  • 分布式光伏监控系统防孤岛保护装置光功率预测
  • 科学的第五范式:人工智能如何重塑发现之疆