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

【文本到上下文 #2】:NLP 的数据预处理步骤

一、说明

        欢迎阅读此文,NLP 爱好者!当我们继续探索自然语言处理 (NLP) 的广阔前景时,我们已经在最初的博客中探讨了它的历史、应用和挑战。今天,我们更深入地探讨 NLP 的核心——数据预处理的复杂世界。

        这篇文章是我们的“完整 NLP 指南:文本到上下文”博客系列的第二部分。我们的重点非常明确:我们深入研究为 NLP 任务奠定基础所必需的关键数据预处理步骤。虽然 NLP 的进步使得能够开发能够感知和理解人类语言的应用程序,但仍然存在一个关键的先决条件——以机器可以理解的格式准备并向机器提供数据。这个过程涉及一系列多样化且重要的预处理步骤。

        以下是本次深入研究中的预期内容:

  1. 标记化和文本清理:探索将文本分解为有意义的单元并确保原始且易于理解的语言的艺术。这包括处理标点符号和细化文本以进行进一步处理。
  2. 停用词删除:了解为什么删除某些单词对于关注数据集中更有意义的内容至关重要。
  3. 词干提取和词形还原:深入研究文本规范化技术,了解何时以及如何使用词干提取或词形还原将单词简化为词根形式。
  4. 词性标注 (POS):探索为每个单词分配语法类别如何有助于更深入地理解句子结构和上下文。
  5. 命名实体识别 (NER):通过识别和分类文本中的实体,揭示 NER 在增强语言理解方面的作用。

        其中每个步骤都是将原始文本翻译成机器可以理解的语言的关键构建块,为更高级的 NLP 任务奠定了基础。

        在本次探索结束时,您不仅会牢牢掌握这些基本的预处理步骤,而且还会为我们旅程的下一阶段——探索高级文本表示技术做好准备。让我们深入了解 NLP 数据预处理的要点并增强自己的能力。快乐编码!

二. 分词和文本清理

        NLP 的核心是将文本分解为有意义的单元的艺术。标记化是将文本分割成单词、短语甚至句子(标记)的过程。这是为进一步分析奠定基础的第一步。与文本清理(我们删除不必要的字符、数字和符号)相结合,标记化可确保我们使用原始的、可理解的语言单元。

#!pip install nltk
# Example Tokenization and Text Cleaning
text = "NLP is amazing! Let's explore its wonders."
tokens = nltk.word_tokenize(text)
cleaned_tokens = [word.lower() for word in tokens if word.isalpha()]
print(cleaned_tokens)
['nlp', 'is', 'amazing', 'let', 'explore', 'its', 'wonders']

三、 停用词删除:

        并非所有单词对句子的含义都有同等的贡献。像“the”或“and”这样的停用词通常会被过滤掉,以专注于更有意义的内容。

# Example Stop Words
from nltk.corpus import stopwords
stop_words = set(stopwords.words("english"))
filtered_sentence = [word for word in cleaned_tokens if word not in stop_words]
print(filtered_sentence)
['nlp', 'amazing', 'let', 'explore', 'wonders']

四、词干提取和词形还原

        词干提取和词形还原都是自然语言处理 (NLP) 中使用的文本规范化技术,用于将单词还原为其基本形式或词根形式。虽然他们的共同目标是简化单词,但他们在应用语言知识方面的运作方式有所不同。

        词干提取:还原为根形式

        词干提取涉及切断单词的前缀或后缀以获得其词根或基本形式,称为词干。目的是将具有相似含义的单词视为相同的单词。词干提取是一种基于规则的方法,并不总是产生有效的单词,但计算量较小。

        词形还原:转换为字典形式

        另一方面,词形还原涉及将单词减少为其基本形式或字典形式,称为词条。它考虑了句子中单词的上下文并应用形态分析。词形还原会产生有效的单词,并且与词干提取相比在语言学上更具信息性。

        何时使用词干提取与词形还原:

        词干提取:

  • 优点:简单且计算成本较低。
  • 缺点:可能并不总是产生有效的单词。

        词形还原:

  • 优点:产生有效的单词;考虑语言背景。
  • 缺点:比词干提取的计算强度更大。

        在词干提取和词形还原之间进行选择:

Day 4: Stemming and Lemmatization - Nomidl

        词干提取和词形还原之间的选择取决于 NLP 任务的具体要求。如果您需要一种快速而直接的文本分析方法,词干提取可能就足够了。然而,如果语言准确性至关重要,特别是在信息检索或问答等任务中,则通常首选词形还原。

        在实践中,选择通常取决于基于 NLP 应用程序的具体特征的计算效率和语言准确性之间的权衡。

# Example Stemming, and Lemmatization 
from nltk.stem import PorterStemmer, WordNetLemmatizerstemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()stemmed_words = [stemmer.stem(word) for word in filtered_sentence]
lemmatized_words = [lemmatizer.lemmatize(word) for word in filtered_sentence]print(stemmed_words)
print(lemmatized_words)
['nlp', 'amaz', 'let', 'explor', 'wonder']
['nlp', 'amazing', 'let', 'explore', 'wonder']

五、词性标注:

        词性标注(词性标注)是一种自然语言处理任务,其目标是为给定文本中的每个单词分配语法类别(例如名词、动词、形容词等)。这可以更深入地理解句子中每个单词的结构和功能。
Penn Treebank POS 标签集是一种广泛使用的标准,用于在英语文本中表示这些词性标签。

# Example Part-of-Speech Tagging 
from nltk import pos_tag
pos_tags = nltk.pos_tag(filtered_sentence)
print(pos_tags)
[('nlp', 'RB'), ('amazing', 'JJ'), ('let', 'NN'), ('explore', 'NN'), ('wonders', 'NNS')]

六、命名实体识别(NER):

        NER 通过对给定文本中的名称、位置、组织等实体进行识别和分类,将语言理解提升到一个新的水平。这对于从非结构化数据中提取有意义的信息至关重要。

# Example Named Entity Recognition (NER) 
from nltk import ne_chunkner_tags = ne_chunk(pos_tags)
print(ner_tags)
(S nlp/RB amazing/JJ let/NN explore/NN wonders/NNS)

七、NLP 预处理步骤的实际应用

        虽然我们深入研究了 NLP 预处理的技术方面,但了解如何在现实场景中应用这些步骤也同样重要。让我们探讨一些值得注意的例子:

        社交媒体情感分析中的标记化和文本清理
        在社交媒体情感分析中,标记化和文本清理至关重要。例如,在分析推文以评估公众对新产品的看法时,标记化有助于将推文分解为单个单词或短语。文本清理用于消除社交媒体文本中常见的话题标签、提及和 URL 等噪音。

import re
def clean_tweet(tweet):tweet = re.sub(r'@\w+', '', tweet)  # Remove mentionstweet = re.sub(r'#\w+', '', tweet)  # Remove hashtagstweet = re.sub(r'http\S+', '', tweet)  # Remove URLsreturn tweettweet = "Loving the new #iPhone! Best phone ever! @Apple"
clean_tweet(tweet)
'Loving the new ! Best phone ever! '

        搜索引擎中的停用词删除
        搜索引擎广泛使用停用词删除。在处理搜索查询时,通常会删除“the”、“is”和“in”等常用词,以重点关注更有可能与搜索结果相关的关键字。

        文本分类中的词干提取和词形还原
        新闻机构和内容聚合商经常使用词干提取和词形还原进行文本分类。通过将单词简化为基本形式或词根形式,算法可以更轻松地将新闻文章分类为“体育”、“政治”或“娱乐”等主题。

        语音助手中的词性标记
        亚马逊的 Alexa 或苹果的 Siri 等语音助手使用词性标记来提高语音识别和自然语言理解。通过确定单词的语法上下文,这些助手可以更准确地解释用户请求。

        客户支持自动化中的命名实体识别 (NER)
        NER 广泛用于客户支持聊天机器人。通过识别和分类产品名称、位置或用户问题等实体,聊天机器人可以对客户的询问提供更有效和量身定制的响应。

        这些例子凸显了 NLP 预处理步骤在各个行业中的实际意义,使抽象概念更加具体、更容易掌握。了解这些应用程序不仅可以提供背景信息,还可以激发未来项目的想法。

八、结论

        在本文中,我们仔细浏览了增强 NLP 任务文本所必需的各种数据预处理步骤。从最初通过标记化和清理对文本进行分解,到更高级的词干提取、词形还原、词性标记和命名实体识别过程,我们为有效理解和处理语言数据奠定了坚实的基础。

        然而,我们的旅程并没有就此结束。处理后的文本虽然现在更加结构化和信息丰富,但仍需要进一步转换才能完全被机器理解。在下一部分中,我们将深入研究文本表示技术。这些技术,包括词袋模型、TF-IDF(词频-逆文档频率)以及词嵌入的介绍,对于将文本转换为机器不仅可以理解而且可以用于各种用途的格式至关重要。复杂的 NLP 任务。

        因此,请继续关注我们,我们将继续揭开 NLP 的复杂性。我们的探索将为您提供将原始文本转换为有意义的数据的知识,为高级分析和应用做好准备。祝您编码愉快,我们下一篇文章再见!

相关文章:

【文本到上下文 #2】:NLP 的数据预处理步骤

一、说明 欢迎阅读此文,NLP 爱好者!当我们继续探索自然语言处理 (NLP) 的广阔前景时,我们已经在最初的博客中探讨了它的历史、应用和挑战。今天,我们更深入地探讨 NLP 的核心——数据预处理的复杂世界。 这篇文章是我们的“完整 N…...

Minio文件分片上传实现

资源准备 MacM1Pro 安装Parallels19.1.0请参考 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装CentOS7.9请参考 https://blog.csdn.net/qq_41594280/article/details/135420461 部署Minio和整合SpringBoot请参考 https://blog.csdn.net/…...

C语言总结十一:自定义类型:结构体、枚举、联合(共用体)

本篇博客详细介绍C语言最后的三种自定义类型,它们分别有着各自的特点和应用场景,重点在于理解这三种自定义类型的声明方式和使用,以及各自的特点,最后重点掌握该章节常考的考点,如:结构体内存对齐问题&…...

解决Spring Boot应用打包后文件访问问题

在Spring Boot项目的开发过程中,一个常见的挑战是如何有效地访问和操作资源文件。这一挑战尤其显著当应用从IDE环境(如IntelliJ IDEA)迁移到被打包成JAR文件后的生产环境。开发者经常遇到的问题是,在IDE中运行正常的代码&#xff…...

循环神经网络的变体模型-LSTM、GRU

一.LSTM(长短时记忆网络) 1.1基本介绍 长短时记忆网络(Long Short-Term Memory,LSTM)是一种深度学习模型,属于循环神经网络(Recurrent Neural Network,RNN)的一种变体。…...

视频图像的color range简介

介绍 研究FFmpeg发现,在avcodec.h中有关于color的解释,主要有四个属性,primaries、transfer、space和range。 color primaries: 基于RGB空间对应的绝对颜色XYZ的变换,决定了最终三原色RGB分别是什么颜色;…...

tcp的三次握手

http 和 https 都是是基于 TCP 的请求,https 是 http 加上 tls 连接。TCP 是面向连接的协议。 对于 http1.1 协议chrome 限制在同一个域名下最多可以建立 6 个 tcp 连接,所以如果在同一个域名下,同时有超过 6 个请求发生,那么多余…...

unity 矩阵探究

public void MatrixTest1(){ ///Matrix4x4 是列矩阵,就是一个vector4表示一列,所以在c#中矩阵和Vector4只能矩阵右乘坐标。但是在shader中是矩阵左乘坐标,所以在shader中是行矩阵 Matrix4x4 moveMatrix1 new Matrix4x4(new Vector4(1,0,0,0)…...

MySQL---单表查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…...

Python项目——搞怪小程序(PySide6+Pyinstaller)

1、介绍 使用python编写一个小程序,回答你是猪吗。 点击“是”提交,弹窗并退出。 点击“不是”提交,等待5秒,重新选择。 并且隐藏了关闭按钮。 2、实现 新建一个项目。 2.1、设计UI 使用Qt designer设计一个UI界面&#xff0c…...

MySQL练习题

参考:https://blog.csdn.net/paul0127/article/details/82529216 数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号…...

vue-项目打包、配置路由懒加载

1. 简介 在现代前端开发中,Vue.js因其简洁、灵活和高效的特点,已经成为许多开发者的首选框架。 在Vue项目中,打包部署和路由懒加载是两个非常重要的环节。 打包Vue项目是为了将源代码转换为浏览器可以解析的JavaScript文件,以便…...

词语的魔力:语言在我们生活中的艺术与影响

Words That Move Mountains: The Art and Impact of Language in Our Lives 词语的魔力:语言在我们生活中的艺术与影响 Hello there, wonderful people! Today, I’d like to gab about the magical essence of language that’s more than just a chatty tool in o…...

android List,Set,Map区别和介绍

List 元素存放有序,元素可重复 1.LinkedList 链表,插入删除,非线性安全,插入和删除操作是双向链表操作,增加删除快,查找慢 add(E e)//添加元素 addFirst(E e)//向集合头部添加元素 addList(E e)//向集合…...

Mysql 编译安装部署

Mysql 编译安装部署 环境: 172.20.26.198(Centos7.6) 源码安装Mysql-5.7 大概步骤如下: 1、上传mysql-5.7.28.tar.gz 、boost_1_59_0.tar 到/usr/src 目录下 2、安装依赖 3、cmake 4、make && make install 5、…...

【目标检测】YOLOv5算法实现(九):模型预测

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模…...

centos宝塔远程服务器怎么链接?

要远程连接CentOS宝塔服务器,可以按照以下步骤操作: 打开终端或远程连接工具,比如PuTTY。输入服务器的IP地址和SSH端口号(默认为22),点击连接。输入用户名和密码进行登录。 如果你已经安装了宝塔面板&…...

C语言练习day8

变种水仙花 变种水仙花_牛客题霸_牛客网 题目: 思路:我们拿到题目的第一步可以先看一看题目给的例子,1461这个数被从中间拆成了两部分:1和461,14和61,146和1,不知道看到这大家有没有觉得很熟…...

蓝凌OA-sysuicomponent-任意文件上传_exp-漏洞复现

0x01阅读须知 技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的…...

C#,入门教程(38)——大型工程软件中类(class)修饰词partial的使用方法

上一篇: C#,入门教程(37)——优秀程序员的修炼之道https://blog.csdn.net/beijinghorn/article/details/125011644 一、大型(工程应用)软件倚重 partial 先说说大型(工程应用)软件对源代码的文件及函数“…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

零基础设计模式——行为型模式 - 责任链模式

第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

DBLP数据库是什么?

DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...