python NLTK快速入门

目录

  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 提供了许多内置的语料库和词典,可以帮助我们更好地分析文本。

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 函数会将一句话分割成一个个词语。这里我们输入了一段文字,输出结果是按词语切分的一个列表。

词性标注示例

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 提供了句法分析工具,可以帮助我们解析句子的语法结构。

示例

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 情感分析

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

示例

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

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

3.5 文本分类

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

示例

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. 综合实例:简单的文本分析项目

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

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

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.rhkb.cn/news/464588.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大 时间:2023年 机构:北京邮电大学 发表在:IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 25, 2023 代码源码地址: pytorch版本:https://github.com/dyh…

【力扣专题栏】重排链表,如何实现链表里面节点之间的交换?

题解目录 1、题目描述解释2、算法原理解析3、代码编写 1、题目描述解释 主要就是实现:第一个节点和最后一个节点交换,第二节点和倒数第二个节点交换,依次交换下去。 2、算法原理解析 3、代码编写 class Solution { public:void reorderList(…

TP-LINK TL-XDN7000H免驱版 ubuntu 20.04驱动安装

最近装机购买的主板没有无线网卡,PCIE网卡因为显卡占位无法安装,无奈只能购买USB无限网卡。 1 网卡型号 TP-LINK WiFi6免驱900M usb无线网卡 外置高增益 台式机笔记本电脑wifi接收器发射器 TL-XDN7000H 2 驱动下载链接 TL-XDN7000H免驱版 V1.1 Linu…

【初阶数据结构与算法】复杂度分析练习之轮转数组(多种方法)

文章目录 复杂度练习之轮转数组方法1方法2方法3 总结 复杂度练习之轮转数组 题目链接:https://leetcode.cn/problems/rotate-array/description/    为什么我们把这道题作为复杂度的练习题呢?是因为我们以后做题都会涉及到复杂度的计算,我…

H265编码丢帧问题分析

问题 通过海思芯片编码后,将编码的数据通过UDP网口发送到UDP 服务端,UDP服务端收到后保存成文件。 保存的文件有时候用VLC软件可以打开。有时候不能打开,同时用Elecard HEVC Analyer工具打开,发现VLC不能打开时丢帧。如下图,实际为858帧,而此处只有846帧。 分析 UDP包…

如何学习Java“高并发”,并在项目中实际应用?

高并发编程 提到并发编程很多人就会头疼了;首先就是一些基础概念:并发,并行,同步,异步,临界区,阻塞,非阻塞还有各种锁全都砸你脸上,随之而来的就是要保证程序运行时关键…

《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字

《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字 《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字基本概念服务端客户端 基于 Linux 平台的 "Hello world!" 服务端和客户端基于 Linux 的文件操作打开文件关闭文件…

C#-类:声明类、声明类对象

一:类的声明 class 类名 {//特征——成员变量//行为——成员方法//保护特征——成员属性//构造函数和析构函数//索引器//运算符重载//静态成员 }类名:帕斯卡 同一个语句块中的不同类 不能重名 二:声明类对象 2.1 类的声明 ≠ 类对象的声…

qt QProgressBar详解

1、概述 QProgressBar是Qt框架中的一个控件,专门用于显示任务的进度。它提供了一个可视化的进度条,让用户能够直观地了解任务的完成程度。QProgressBar支持水平和垂直两种显示方向,并且可以通过设置最小值和最大值来指定进度条的范围。此外&…

Node.js 入门指南:从零开始构建全栈应用

​🌈个人主页:前端青山 🔥系列专栏:node.js篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js-入门指南:从零开始构建全栈应用 前言 大家好,我是青山。作…

基于vue框架的的冷链食品物流信息管理系统v81wb(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,司机,冷链食品,冷链食品订单,冷链车辆,配送信息,订单费用,站点信息,食品种类,省,市,食品质量,县 开题报告内容 基于Vue框架的冷链食品物流信息管理系统开题报告 一、研究背景与意义 随着全球食品贸易的快速发展和消费者对食品品质…

使用GetX实现GetPage中间件

前言 GetX 中间件(Middleware)是 GetX 框架中的一种机制,用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件,可以有效地控制用户的访问流程,并在适当条件下引导用户到所需页面。 这…

你知道Mac也能拥有丰富的右键菜单栏吗?

Mac的右键菜单栏功能少的可怜,和Windows没法比,所以许多朋友在使用Mac会有很多不习惯的地方,但是Mac的右键菜单栏也能够拥有超多功能,甚至丰富程度可以超越Windows,你知道吗 超级右键能够丰富拓展Mac的右键菜单栏&…

Spring Boot 注解大全:全面解析 Spring Boot 常用注解及其应用场景

Spring Boot 注解大全:全面解析 Spring Boot 常用注解及其应用场景 简介 Spring Boot 是一个基于 Spring 框架的简化开发框架,它旨在简化 Spring 应用的初始搭建和开发过程。Spring Boot 提供了一系列的注解,使得开发者可以更加方便地进行应用开发和配置。本文将详细介绍 S…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎,可用于全文搜索、分析和数据可视化。传统上,Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名,其中文档基于精确或部分关键字匹配进行匹配。然而,Elasticsearch 已经发展到支…

(一)<江科大STM32>——软件环境搭建+新建工程步骤

一、软件环境搭建 (1)安装 Keil5 MDK 文件路径:江科大stm32入门教程资料/Keil5 MDK/MDK524a.EXE,安装即可,路径不能有中文。 (2)安装器件支持包 文件路径:江科大stm32入门教程资料…

【顶刊核心变量】上市公司企业数字创新数据(数字产品、流程、业务模式创新(2001-2023年)

1.资料名称:2023-2001年上市公司企业数字创新数据 2.测算方式:参考《系统工程理论与实践》郑攀攀(2024)老师的做法,本文基于上市公司年报文本, 结合文本分析和机器学习方法, 测度了企业数字创新(DI) . 具体的测度步骤…

在K8s平台部署个人博客

在K8s平台部署个人博客 实验步骤查看wordpress前端的service配置word press 实验步骤 kubectl create secret generic mysql-pass --from-literalpasswordYOUR_PASSWORD把mysql.tar.gz和wordpress.tar.gz上传到K8s工作节点,手动解压即可: 通过网盘分享的…

Qt项目实战:红绿灯小程序

目录 一.初始化对象 二.捕获并处理特定的事件 三.自定义绘制方法 四.绘制外部边框 五.绘制内部边框 六.绘制按钮的背景色 七.绘制覆盖层(高光效果) 八.效果 九.代码 1.h 2.cpp 一.初始化对象 1.设置文本、颜色、边框和背景色等默认值。 2.安…

408——计算机网络(持续更新)

文章目录 一、计算机网络概述1.1 计算机网络的概念1.2 计算机网络体系结构1.3 总结 二、物理层2.1 物理层的基本概念2.2 物理层的基本通信技术2.3 总结 一、计算机网络概述 1.1 计算机网络的概念 计算机网络的定义:将地理位置不同的具有独立功能的计算机通过网络线路…