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

文本预处理

一、文本的基本单位

1、Token

定义:文本的最小单位,例如单词、标点符号。

示例:

原句: "I love NLP."

分词结果: ['I', 'love', 'NLP', '.']

2、语法与语义

语法:词的结构和句子的组合规则。

语义:词的含义和上下文理解。

示例:

句子 "Time flies like an arrow." 有多重解释:

时间像箭一样飞逝。

像箭一样的飞虫在时间中飞翔。

二、基本的文本预处理

1、分词(Tokenization)

  • 英文分词:基于空格或标点分隔。
  • 中文分词:基于统计和规则的方法,如 Jieba。

2、去停用词

停用词:意义较小或频率过高的词,例如 "the", "is", "and"。

3、词干化

将词语削减为根形式,例如 running → run。

4、词形还原

考虑语法规则还原为词的基本形式,例如 mice → mouse。

三、用nltk库做文本预处理

NLTK(Natural Language Toolkit) 是一个功能强大、 灵活性高的开源 Python 库, 专为自然

语言处理(NLP) 领域的研究和开发而设计。 NLTK 提供了一套丰富的工具和资源, 适合处

理、分析和理解人类语言文本。

1、文本预处理包

  • 分词: nltk.tokenize.word_tokenize
  • 停用词库: nltk.corpus.stopwords
  • 词干化: nltk.stem.PorterStemmer
  • 词形还原: nltk.stem.WordNetLemmatizer

2、案例

使用 Python 对自己的文本数据进行分词、去停用词操作,并计算剩余单词的数量

文本如下:

"Dr. Smith's favorite movie in 2024 is 'Inception'; he rates it 9/10 stars! Isn't that amazing? Let's analyze this #text with NLP techniques: @homework1.py, line 42."

代码如下:

from nltk import pos_tag
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer,WordNetLemmatizerfrom src.common import utildef text_prepare(text):#分词print(f"原始文本:{text}")tokens = word_tokenize(text)print(f"分词后:{tokens}")#去除停用词en_stopwords  = stopwords.words('english') #获取英文停用词表print(f"去除停用词前文本长度:{len(tokens)}")filter_stop_words = []for token in tokens:token = token.lower()if token not in en_stopwords:filter_stop_words.append(token)print(f"去除停用词后文本:{filter_stop_words}")print(f"去除停用词后文本长度:{len(filter_stop_words)}")#词干化prepare_stem = []porter_stemmer = PorterStemmer()for token in filter_stop_words:token = porter_stemmer.stem(token)prepare_stem.append(token)print(f"词干化后:{prepare_stem}")#词性标注tagged_pos = pos_tag(filter_stop_words)print(f"词性标注后:{tagged_pos}")#词形还原prepare_lemma = []wordnetLemma = WordNetLemmatizer()for word, pos in tagged_pos:prepare_lemma.append(wordnetLemma.lemmatize(word,util.get_wordnet_pos(pos)))print(f"词形还原后:{prepare_lemma}")def main():file_path = "example"with(open(file_path, "r", encoding="utf-8")) as file:text = file.read()text_prepare(text)if __name__ == '__main__':main()

运行结果:

原始文本:"Dr. Smith's favorite movie in 2024 is 'Inception'; he rates it 9/10 stars! Isn't that amazing? Let's analyze this #text with NLP techniques: @homework1.py, line 42."分词后:['``', 'Dr.', 'Smith', "'s", 'favorite', 'movie', 'in', '2024', 'is', "'Inception", "'", ';', 'he', 'rates', 'it', '9/10', 'stars', '!', 'Is', "n't", 'that', 'amazing', '?', 'Let', "'s", 'analyze', 'this', '#', 'text', 'with', 'NLP', 'techniques', ':', '@', 'homework1.py', ',', 'line', '42', '.', "''"]去除停用词前文本长度:40去除停用词后文本:['``', 'dr.', 'smith', "'s", 'favorite', 'movie', '2024', "'inception", "'", ';', 'rates', '9/10', 'stars', '!', "n't", 'amazing', '?', 'let', "'s", 'analyze', '#', 'text', 'nlp', 'techniques', ':', '@', 'homework1.py', ',', 'line', '42', '.', "''"]
去除停用词后文本长度:32词干化后:['``', 'dr.', 'smith', "'s", 'favorit', 'movi', '2024', "'incept", "'", ';', 'rate', '9/10', 'star', '!', "n't", 'amaz', '?', 'let', "'s", 'analyz', '#', 'text', 'nlp', 'techniqu', ':', '@', 'homework1.pi', ',', 'line', '42', '.', "''"]词性标注后:[('``', '``'), ('dr.', 'NN'), ('smith', 'NN'), ("'s", 'POS'), ('favorite', 'JJ'), ('movie', 'NN'), ('2024', 'CD'), ("'inception", 'NN'), ("'", "''"), (';', ':'), ('rates', 'NNS'), ('9/10', 'CD'), ('stars', 'NNS'), ('!', '.'), ("n't", 'RB'), ('amazing', 'VBG'), ('?', '.'), ('let', 'NN'), ("'s", 'POS'), ('analyze', 'JJ'), ('#', '#'), ('text', 'JJ'), ('nlp', 'NN'), ('techniques', 'NNS'), (':', ':'), ('@', 'NN'), ('homework1.py', 'NN'), (',', ','), ('line', 'NN'), ('42', 'CD'), ('.', '.'), ("''", "''")]词形还原后:['``', 'dr.', 'smith', "'s", 'favorite', 'movie', '2024', "'inception", "'", ';', 'rate', '9/10', 'star', '!', "n't", 'amaze', '?', 'let', "'s", 'analyze', '#', 'text', 'nlp', 'technique', ':', '@', 'homework1.py', ',', 'line', '42', '.', "''"]

相关文章:

文本预处理

一、文本的基本单位 1、Token 定义:文本的最小单位,例如单词、标点符号。 示例: 原句: "I love NLP." 分词结果: [I, love, NLP, .] 2、语法与语义 语法:词的结构和句子的组合规则。 语义&a…...

SQLAlchemy 2.0的简单使用教程

SQLAlchemy 2.0相比1.x进行了很大的更新,目前网上的教程不多,以下以链接mysql为例介绍一下基本的使用方法 环境及依赖 Python:3.8 mysql:8.3 Flask:3.0.3 SQLAlchemy:2.0.37 PyMySQL:1.1.1使用步骤 1、创建引擎,链接到mysql engine crea…...

基于RAG的知识库问答系统

基于RAG的知识库问答系统 结合语义检索与大语言模型技术,实现基于私有知识库的智能问答解决方案。采用两阶段处理架构,可快速定位相关文档并生成精准回答。 核心功能 知识向量化引擎 支持多语言文本嵌入(all-MiniLM-L6-v2模型)自…...

SQL/Panda映射关系

Pandas教程(非常详细)_pandas 教程-CSDN博客 SQL:使用SELECT col_1, col_2 FROM tab; Pandas:使用df[[col_1, col_2]]。 SQL:使用SELECT * FROM tab WHERE col_1 11 AND col_2 > 5; Pandas:使用df…...

自定义数据集 使用paddlepaddle框架实现逻辑回归

导入必要的库 import numpy as np import paddle import paddle.nn as nn 数据准备: seed1 paddle.seed(seed)# 1.散点输入 定义输入数据 data [[-0.5, 7.7], [1.8, 98.5], [0.9, 57.8], [0.4, 39.2], [-1.4, -15.7], [-1.4, -37.3], [-1.8, -49.1], [1.5, 75.6…...

Docker入门篇(Docker基础概念与Linux安装教程)

目录 一、什么是Docker、有什么作用 二、Docker与虚拟机(对比) 三、Docker基础概念 四、CentOS安装Docker 一、从零认识Docker、有什么作用 1.项目部署可能的问题: 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题&#xff1…...

c/c++高级编程

1.避免变量冗余初始化 结构体初始化为0,等价于对该内存进行一次memset,对于较大的结构体或者热点函数,重复的赋值带来冗余的性能开销。现代编译器对此类冗余初始化代码具有一定的优化能力,因此,打开相关的编译选项的优…...

2024-我的学习成长之路

因为热爱,无畏山海...

vscode软件操作界面UI布局@各个功能区域划分及其名称称呼

文章目录 abstract检查用户界面的主要区域官方文档关于UI的介绍 abstract 检查 Visual Studio Code 用户界面 - Training | Microsoft Learn 本质上,Visual Studio Code 是一个代码编辑器,其用户界面和布局与许多其他代码编辑器相似。 界面左侧是用于访…...

xmind使用教程

xmind使用教程 前言xmind版本信息“xmind使用教程”的xmind思维导图 前言 首先xmind是什么?XMind 是一款思维导图和头脑风暴工具,用于帮助用户组织和可视化思维、创意和信息。它允许用户通过图形化的方式来创建、整理和分享思维导图,可以用于…...

Day33【AI思考】-分层递进式结构 对数学数系的 终极系统分类

文章目录 **分层递进式结构** 对数学数系的 **终极系统分类**总览**一、数系演化树(纵向维度)**数系扩展逻辑树**数系扩展逻辑** **二、代数结构对照表(横向维度)**数系扩展的数学意义 **三、几何对应图谱(空间维度&am…...

k8s二进制集群之ETCD集群证书生成

安装cfssl工具配置CA证书请求文件创建CA证书创建CA证书策略配置etcd证书请求文件生成etcd证书 继续上一篇文章《负载均衡器高可用部署》下面介绍一下etcd证书生成配置。其中涉及到的ip地址和证书基本信息请替换成你自己的信息。 安装cfssl工具 下载cfssl安装包 https://github…...

MySQL5.5升级到MySQL5.7

【卸载原来的MySQL】 cmd打开命令提示符窗口(管理员身份)net stop mysql(先停止MySQL服务) 3.卸载 切换到原来5.5版本的bin目录,输入mysqld remove卸载服务 测试mysql -V查看Mysql版本还是5.5 查看了环境变量里的…...

Golang Gin系列-9:Gin 集成Swagger生成文档

文档一直是一项乏味的工作(以我个人的拙见),但也是编码过程中最重要的任务之一。在本文中,我们将学习如何将Swagger规范与Gin框架集成。我们将实现JWT认证,请求体作为表单数据和JSON。这里唯一的先决条件是Gin服务器。…...

利用Python高效处理大规模词汇数据

在本篇博客中,我们将探讨如何使用Python及其强大的库来处理和分析大规模的词汇数据。我们将介绍如何从多个.pkl文件中读取数据,并应用一系列算法来筛选和扩展一个核心词汇列表。这个过程涉及到使用Pandas、Polars以及tqdm等库来实现高效的数据处理。 引…...

【PyQt】超级超级笨的pyqt计算器案例

计算器 1.QT Designer设计外观 1.pushButton2.textEdit3.groupBox4.布局设计 2.加载ui文件 导入模块: sys:用于处理命令行参数。 QApplication:PyQt5 应用程序类。 QWidget:窗口基类。 uic:用于加载 .ui 文件。…...

Git 的起源与发展

序章:版本控制的前世今生 在软件开发的漫长旅程中,版本控制犹如一位忠诚的伙伴,始终陪伴着开发者们。它的存在,解决了软件开发过程中代码管理的诸多难题,让团队协作更加高效,代码的演进更加有序。 简单来…...

预防和应对DDoS的方法

DDoS发起者通过大量的网络流量来中断服务器、服务或网络的正常运行,通常由多个受感染的计算机或联网设备(包括物联网设备)发起。 换种通俗的说法,可以将其想象成高速公路上的一次突然的大规模交通堵塞,阻止了正常的通勤…...

51单片机开发:独立按键实验

实验目的:按下键盘1时,点亮LED灯1。 键盘原理图如下图所示,可见,由于接GND,当键盘按下时,P3相应的端口为低电平。 键盘按下时会出现抖动,时间通常为5-10ms,代码中通过延时函数delay…...

02.04 数据类型

请写出以下几个数据的类型: 整数 a ----->int a的地址 ----->int* 存放a的数组b ----->int[] 存放a的地址的数组c ----->int*[] b的地址 ----->int* c的地址 ----->int** 指向printf函数的指针d ----->int (*)(const char*, ...) …...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...