python NLTK快速入门

embedded/2025/1/3 7:06:46/

目录

  1. NLTK简介
  2. 安装NLTK
  3. 主要模块及用法
    • 词汇与语料库
    • 分词与词性标注
    • 句法分析
    • 情感分析
    • 文本分类
  4. 综合实例:简单的文本分析项目
  5. 总结

1. NLTK简介

NLTK(Natural Language Toolkit)是一个强大的Python库,专门用于自然语言处理(NLP)任务,常用于文本分析、语言数据处理和机器学习。NLTK包含丰富的语料库和词汇资源,还提供了众多分析工具。

2. 安装NLTK

在Python环境下,您可以用以下命令来安装NLTK:

pip install nltk

之后,运行下面代码来下载NLTK的语料库(语料库包含了大量预训练的文本数据):

import nltk

nltk.download('all')


3. 主要模块及用法

3.1 词汇与语料库

NLTK 提供了许多内置的语料库和词典,可以帮助我们更好地分析文本。

python">from nltk.corpus import gutenberg # 获取《爱丽丝梦游仙境》前100个字符 
text = gutenberg.raw('carroll-alice.txt') 
print(text[:100])

讲解:这里我们使用 gutenberg 语料库,它包含了很多经典书籍的文本。我们选择了《爱丽丝梦游仙境》并打印了前100个字符。

3.2 分词与词性标注

在自然语言处理中,分词(Tokenization)和词性标注(POS Tagging)是常见的基础操作。

分词示例

from nltk.tokenize import word_tokenize text = "NLTK makes it easy to work with text data." tokens = word_tokenize(text) print(tokens)

讲解word_tokenize 函数会将一句话分割成一个个词语。这里我们输入了一段文字,输出结果是按词语切分的一个列表。

词性标注示例

python">from nltk import pos_tag 
tokens = word_tokenize("The quick brown fox jumps over the lazy dog.") 
tagged = pos_tag(tokens) 
print(tagged)

讲解pos_tag 函数会将分好的词语标注上词性(如名词、动词等),输出的是一个包含词语及其词性标注的元组列表。

3.3 句法分析

NLTK 提供了句法分析工具,可以帮助我们解析句子的语法结构。

示例

python">from nltk import CFG 
from nltk.parse import RecursiveDescentParser # 定义简单的语法 
grammar = CFG.fromstring(""" S -> NP VP NP -> Det N VP -> V NP Det -> 'the' N -> 'cat' | 'dog' V -> 'chases' """) parser = RecursiveDescentParser(grammar) 
sentence = "the cat chases the dog".split() 
for tree in parser.parse(sentence): print(tree)

讲解:这里我们定义了一个简单的上下文无关语法(CFG)来解析句子结构,然后使用 RecursiveDescentParser进行解析。

3.4 情感分析

情感分析是自然语言处理中非常常见的任务,用来分析文本的情感(如积极、消极等)。

示例

python">from nltk.sentiment import SentimentIntensityAnalyzer sia = SentimentIntensityAnalyzer() 
text = "I love programming!" 
sentiment = sia.polarity_scores(text) 
print(sentiment)

讲解SentimentIntensityAnalyzer 会给出一个情感分数,输出包含正面、负面、客观及总体评分。

3.5 文本分类

NLTK也提供了文本分类的基本工具,可以帮助我们训练模型进行文本分类。

示例

python">import random
from nltk.classify import NaiveBayesClassifier
from nltk.corpus import movie_reviews# 数据处理:随机打乱文档列表
documents = [(list(movie_reviews.words(fileid)), category)for category in movie_reviews.categories()for fileid in movie_reviews.fileids(category)
]
random.shuffle(documents)  # 随机打乱顺序,以避免偏差# 特征提取:将单词作为特征
def document_features(words):return {word: True for word in words}# 准备训练集
train_set = [(document_features(d), c) for (d, c) in documents]# 训练分类器:使用前100个文档进行训练
classifier = NaiveBayesClassifier.train(train_set[:100])# 测试分类
test_words = ["love", "wonderful", "amazing"]
print("测试句子:", test_words)
print("分类结果:", classifier.classify(document_features(test_words)))# 显示分类器的性能
print("\n分类器的特征:")
classifier.show_most_informative_features(5)

讲解:这里我们使用了贝叶斯分类器(Naive Bayes),并使用影评数据集对其进行训练,最终用“love”、“wonderful”等词进行分类测试。


4. 综合实例:简单的文本分析项目

结合以上知识点,我们可以进行一个简单的文本分析小项目。

示例:分析电影影评的情感倾向

python">from nltk.classify import NaiveBayesClassifier
from nltk.corpus import movie_reviews# 数据处理
documents = [(list(movie_reviews.words(fileid)), category)for category in movie_reviews.categories()for fileid in movie_reviews.fileids(category)
]# 特征提取
def document_features(words):return {word: True for word in words}# 训练分类器
train_set = [(document_features(d), c) for (d, c) in documents]
classifier = NaiveBayesClassifier.train(train_set[:100])# 测试分类
print(classifier.classify(document_features(["love", "wonderful", "amazing"])))

讲解:这里我们用影评数据集,并结合情感分析器进行影评倾向判断。通过遍历所有影评,统计正面和负面影评的数量。


5. 总结

通过以上步骤,您已经掌握了 NLTK 的核心用法,包括分词、词性标注、句法分析、情感分析和文本分类等。


http://www.ppmy.cn/embedded/135655.html

相关文章

LWIP通信协议UDP发送、接收源码解析

1.UDP发送函数比较简短,带操作系统和裸机一样。以下是udp_sendto源码解析; 2.LWIP源码UDP接收数据 2.1.UDP带操作系统接收数据,以下是源码解析; 2.2.UDP裸机接收数据,以下是源码解析

ORACLE建表(11G)

BEGIN EXECUTE IMMEDIATE DROP TABLE business CASCADE CONSTRAINTS; EXCEPTION WHEN OTHERS THEN IF SQLCODE ! -942 THEN -- 942 是表不存在的错误码 RAISE; END IF; END; CREATE TABLE business ( uuid VARCHAR2(255) NOT NULL, product VARCHAR2(255) NULL, promotion VARC…

如何缩小PPT演示文稿的大小?

有时候PPT的磁盘空间一不小心就变得意想不到的大,比如上百MB,该如何缩小PPT的大小从而便于上传或者携带呢? 导致PPT大的原因: 媒体文件在插入或者复制到演示文稿里会被直接涵盖在其中(.pptx版本)&#xf…

Git (推送到远端仓库)

目录 一、在 gitee 上创建一个仓库 二、将项目推送到远程仓库 三、解释推送命令 一、在 gitee 上创建一个仓库 操作如下: 二、将项目推送到远程仓库 这里例举新的项目推送到远程仓库的例子: 打开仓库查看: 三、解释推送命令 添加远程仓库…

基于微信小程序的移动学习平台的设计与实现+ssm(lw+演示+源码+运行)

摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改…

Spring Boot框架在信息学科平台开发中的高级应用

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

青训2_1106_01 环装DNA 序列的最小表示法

青训2_1106_01 环装DNA 序列的最小表示法 .md 文章目录 青训2_1106_01 环装DNA 序列的最小表示法 .md一、问题描述1.1测试样例1.2 示例 二、答案2.1 简略答案注释输出版本 三、疑问3.1、字典序是啥意思?以A为开头?答案:哦,那就是遍…

如何debug(Eclipse)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 2分钟教会你如何Java中DeBug【IDEA中Java】 在eclipse中如何使用Debug进行调试 双击左侧打断点(取消断点同样双击) 右上角进入debug界面(常用) 选择所需断点位置(勾选右侧需要测试的断点位置) 启动…