当前位置: 首页 > 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*, ...) …...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...