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

01_NLP基础之文本处理的基本方法

自然语言处理入门

自然语言处理(Natural Language Processing, 简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域,主要目标是让机器能够理解和生成自然语言,这样人们可以通过语言与计算机进行更自然的互动。

对于自然语言来说,处理的数据主要就是人类的语言,例如:汉语、英语、法语等,该类型的数据不像我们前面接触过的结构化数据、或者图像数据可以很方便的进行数值化。

自然语言处理的主要任务:

  • 语音识别:将语音信号转化为文本

  • 文本分析:从文本中提取有意义的信息,包括情感分析、主题提取等

  • 机器翻译:自动将一种语言的文本翻译为另一种语言

  • 语法分析:分析句子的语法结构,识别句子中的各个成分(如主语、谓语、宾语等)

  • 命名实体识别(NER):识别文本中的重要实体,如人名、地点名、组织名等

  • 对话系统:使计算机能够与人类进行自然流畅的对话,如智能助手、聊天机器人等

  • 自动摘要:从大量文本中提取出最关键信息并生成简洁的摘要

文本预处理

文本预处理是指在NLP任务中,对原始文本数据进行清洗、转换、标准化等一系列处理的过程。这是NLP工作流中至关重要的第一步,旨在通过去除冗余和无关的部分,提高文本数据的质量和可用性,以便后续的机器学习模型或深度学习模型能够更高效地学习和推理。

文本预处理的作用
  • 增强文本表示
    • 向量化: 将文本转换为数值向量(如TF-IDF、词嵌入)。
    • 特征提取: 提取n-gram、词性、句法结构等特征。
    • 上下文建模: 通过预处理为上下文相关的模型(如BERT)提供输入。
  • 提高数据质量
    • 清洗文本:原始文本可能包含多余的噪声(如HTML标签、标点符号、拼写错误等)。这些内容对NLP模型没有实际意义,反而可能会影响模型的学习效果。文本清洗可以去除这些无关的部分。
    • 标准化文本格式:例如统一大小写、统一数字的表示等,有助于减少模型的复杂度,让模型能够聚焦于重要信息。
  • 降低计算复杂度
    • 分词: 将句子拆分为单词或子词单元,便于后续处理。
    • 去停用词:停用词在文本中频繁出现,但对模型的语义贡献较小。去除这些停用词可以有效减少文本的维度,降低计算复杂度。
    • 词形还原与词干提取:通过将不同形式的词汇(如复数、动词时态等)归一化为基础形式,减少了模型的词汇量,有助于提高模型的训练效率和准确性。
  • 改进模型性能
    • 降低维度: 通过去除冗余信息,减少特征空间的维度,提高计算效率。
    • 增强一致性: 统一文本表示(如大小写转换、标点符号处理),避免模型混淆。
    • 改善泛化能力: 通过标准化和归一化,使模型更容易捕捉文本中的关键特征。

文本预处理的基本方法

分词

分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。

  • 英文:单词之间是以空格作为自然分界符的
  • 中文:只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符。

中文分词示例

源数据:[只因你太美!]
分词结果:['只因','你','太美','!']
分词的作用
  • 作为预处理的第一步,将文本拆分成有意义的单元
  • 帮助机器理解句子的基本结构和含义
常用的分词工具
  1. Jieba分词工具

Jieba(“结巴”)是一个开源的Python中文分词组件,它支持精确模式全模式搜索引擎模式三种分词模式。

Jieba分词工具的基本使用方式:

​ 1.jieba.cut:将分词结果返回到一个生成器对象

​ 2.jieba.luct:将分词结果返回到返回一个列表对象

函数剖析:

​ 1.jieba.cut

将中文句子分割成独立的单词,
Parameter:- sentence: 要分割的字符串- cut_all: 模型类型, True表示使用全模型,False表示使用精确模式- HMM:是否使用隐马尔可夫模型

jieba.cut核心源码:

def cut(self, sentence, cut_all=False, HMM=True, use_paddle=False):sentence = strdecode(sentence)  # 统一解码为 Unicodere_han = re_han_default # 正则表达式,匹配连续的,'有意义'的词元re_skip = re_skip_default # 正则表达式,跳过空白或换行符# 选择分词算法if cut_all:cut_block = self.__cut_all  # 全切分elif HMM:cut_block = self.__cut_DAG  # 基于 DAG + HMMelse:cut_block = self.__cut_DAG_NO_HMM  # 基于 DAG 无 HMM# 正则切分文本块blocks = re_han.split(sentence)  # 按正则表达式对 中文/非中文分割for blk in blocks: # 遍历列表,生成单词if not blk:continueif re_han.match(blk):for word in cut_block(blk):yield wordelse:tmp = re_skip.split(blk)for x in tmp:if re_skip.match(x):yield xelif not cut_all:for xx in x:yield xxelse:yield x   

2.jieba.lcut的源码实现:其实就是将生成器对象强转为列表

def lcut(self, *args, **kwargs):return list(self.cut(*args, **kwargs))
  • 精准分词:按照人类的思维逻辑进行分词:比如英雄联盟是一个词

    精准分词的使用:jieba.cut/jieba.lcut,设置参数cut_all=False

def dm01():CONTENTS = "阳光彩虹小白马,滴滴答滴滴答!"# cut_all=False 精准分词# 返回一个可迭代对象obj = jieba.cut(sentence=CONTENTS, cut_all=False)# 返回的是一个生成器对象# print(obj)  # <generator object Tokenizer.cut at 0x00000294FFB2EF00># print(f'是可迭代对象吗?{isinstance(obj, Iterable)}')# print(f'是迭代器吗?{isinstance(obj, Iterator)}')print(f'分词的结果:{list(obj)}')res = jieba.lcut(CONTENTS, cut_all=False)print(f'lcut方式得到的结果:{res}')
  • 全模式分词:将句子中所有可以成词的词语全部扫描出来
def dm02():CONTENTS = "阳光彩虹小白马,滴滴答滴滴答!"obj = jieba.cut(sentence=CONTENTS, cut_all=True)print(obj)words = jieba.lcut(CONTENTS, cut_all=True)print(f'全模式分词后的结果:{words}')
  • 搜索引擎模式分词:在精确模式基础上对长词镜像再次切分,提高召回率,适用于搜索引擎分词

    def dm03():CONTENTS = "阳光彩虹小白马,滴滴答滴滴答!"obj = jieba.cut_for_search(sentence=CONTENTS)print(obj)words = jieba.lcut_for_search(CONTENTS)print(f'搜索引擎模式分词后的结果:{words}')
    
  • 繁体中文分词:针对中国香港, 台湾地区的繁体文本进行分词。

def dm04():content = "煩惱即是菩提,我暫且不提"words = jieba.lcut(content)print('words--->', words)
  • 用户自定义词典分词
    • 词典格式:一般定义在 .txt 文件中
      • 定义的格式:word freq word_type
        • word:词语(必填)
        • freq: 词频(可选)
        • word_type:词性(可选)
以下为示例阳光 5 n小白马 6 nz滴滴答 2
def dm05():CONTENTS = "阳光彩虹小白马,滴滴答滴滴答!"jieba.load_userdict('./data/userdict.txt')words = jieba.lcut(CONTENTS)print('words--->', words)

命名实体识别

命名实体识别(NER)是自然语言处理中的一个任务,旨在从文本中识别出特定类别的实体(如人名、地名、机构名、日期、时间等)。NER是信息抽取的一部分,帮助计算机识别出与任务相关的实体信息。

例如:

鲁迅, 浙江绍兴人, 五四新文化运动的重要参与者, 代表作朝花夕拾.==>鲁迅(人名) / 浙江绍兴(地名)人 / 五四新文化运动(专有名词) / 重要参与者 / 代表作 / 朝花夕拾(专有名词)
  • 作用
    • 信息抽取:NER帮助从海量的文本中自动抽取出结构化的实体信息,为数据分析、问答系统等提供有价值的内容。
    • 问答系统:在智能问答系统中,NER能够帮助系统准确理解用户的提问,并提取相关的实体信息以便生成更准确的回答。
    • 文本理解:NER对于文本理解至关重要,它帮助系统识别出文本中的关键信息,例如人物、地点、组织等,进而为语义分析和事件抽取提供支持。
  • 处理工具
    • SpaCyNLTKStanford NERBERT(通过微调)LTPHanLP等都可以用于命名实体识别任务。

词性标注

词性标注(Part-Of-Speech tagging, 简称POS)就是为文本中的每个词分配一个语法类别(即词性),例如名词、动词、形容词等。词性标注能够帮助模型理解词汇在句子中的语法功能,并为进一步的句法分析和语义分析提供支持。

  • 类型

    • 名词n:表示人、事物、地方等,例如 "中国", "鲁迅"
    • 动词v:表示动作、存在等,例如 "跑", "吃"
    • 形容词a:描述事物的性质或状态,例如 "大", "美丽"
    • 副词d:修饰动词、形容词或其他副词,例如 "马上", "非常"
    • 代词r:代替名词的词,例如 "我", "他们"
  • 作用

    • 理解句子结构:通过词性标注,可以知道每个词在句子中的角色,帮助理解句子的语法结构。
    • 支持其他NLP任务:许多高级任务如命名实体识别(NER)、句法分析、情感分析等,通常依赖于词性标注的结果。
    • 歧义消解:词性标注有助于解决同一单词在不同上下文中可能具有不同词性的情况。例如,单词 “lead” 可能是动词(引导)也可能是名词(铅),通过词性标注可以解决这种歧义。
  • 处理工具

    • JiebaNLTKSpaCyStanford POS Tagger等是常用的词性标注工具。
  • 使用Jieba分词完成POS任务[知道]

import jieba.posseg as psegCONTENT = '我见过很多天才,但他们都叫我天才'def dm_pos():words = pseg.lcut(CONTENT)print('words->', words)name_entities = list()for word, flag in words:# r: 代词, v:动词,n:名词, ns: 地名if flag in ['r', 'v', 'n', 'ns',]:name_entities.append((word, flag))print('name_entities->', name_entities)return name_entities

相关文章:

01_NLP基础之文本处理的基本方法

自然语言处理入门 自然语言处理&#xff08;Natural Language Processing, 简称NLP&#xff09;是计算机科学与语言学中关注于计算机与人类语言间转换的领域&#xff0c;主要目标是让机器能够理解和生成自然语言&#xff0c;这样人们可以通过语言与计算机进行更自然的互动。 …...

(十 六)趣学设计模式 之 责任链模式!

目录 一、 啥是责任链模式&#xff1f;二、 为什么要用责任链模式&#xff1f;三、 责任链模式的实现方式四、 责任链模式的优缺点五、 责任链模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;…...

动态规划/贪心算法

一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术&#xff0c;尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题&#xff0c;并保存这些子问题的解以避免重复计算&#xff0c;从而提高效率。 动态规划的核心思想 最优子结…...

PH热榜 | 2025-03-04

1. MGX 标语&#xff1a;第一支人工智能开发团队 介绍&#xff1a;MGX&#xff08;MetaGPT X&#xff09;是一个基于真实软件标准操作程序&#xff08;SOP&#xff09;的多代理人工智能平台。在这里&#xff0c;你可以随时与AI团队的领导、产品经理、架构师、工程师和数据分析…...

Mybatis-Plus 插件机制与自定义插件实现

1. Mybatis-Plus 插件系统概述 Mybatis-Plus 提供了一个简单而强大的插件机制&#xff0c;允许开发者在 MyBatis 执行 SQL 的过程中插入自定义逻辑。通过插件机制&#xff0c;用户可以实现对 SQL 执行过程的拦截和修改。Mybatis-Plus 插件基于 MyBatis 的拦截器模式进行实现&a…...

开源表单、投票、测评平台部署教程

填鸭表单联合宝塔面板深度定制,自宝塔面板 9.2 版本开始,在宝塔面板-软件商店中可以一键部署填鸭表单系统。 简单操作即可拥有属于自己的表单问卷系统,快速赋能业务。即使小白用户也能轻松上手。 社区版体验地址:https://demo.tduckapp.com/home 前端项目地址: tduck-fro…...

行为模式---命令模式

概念 命令模式是一种行为设计模式&#xff0c;它的核心思想就是将请求封装为一个对象&#xff0c;此对象包含与请求相关的所有信息。可以用不同的请求对客户进行参数化。命令模式通过将请求的发送者和接收者解耦&#xff0c;支持请求的排队、记录、撤销等操作。 使用场景 1、…...

zabbix配置邮件告警

目录 实现步骤&#xff1a; 实现目的&#xff1a; 1.在监控端操作&#xff1a; 2.web界面部署 ​​​​​​​实现步骤&#xff1a; 1、在 zabbix服务端配置邮件发送脚本和修改 zabbix服务端配置文件; 2、在 zabbix前端控制台进行相关设置。 实现目的&#xff1a; Zab…...

INI和CSV文件保存

INI文件 INI文件是一种配置文件格式&#xff0c;通常用于Windows操作系统中的应用程序中。 它是一种文本文件&#xff0c;由多个节和键值对组成&#xff0c;用于存储应用程序的配置信息。 INI文件的特点包括&#xff1a; INI文件是一种文本文件&#xff0c;易于编辑和阅读。…...

汽车智能钥匙中PKE低频天线的作用

PKE&#xff08;Passive Keyless Entry&#xff09;即被动式无钥匙进入系统&#xff0c;汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用&#xff0c;以下是其具体作用&#xff1a; 信号交互与身份认证 低频信号接收&#xff1a;当车主靠近车辆时…...

计算机等级考试

一、计算机等级考试——题库 &#xff08;1&#xff09;选择题 &#xff08;2&#xff09;基本操作题 &#xff08;3&#xff09;上网题 &#xff08;4&#xff09;文字题 &#xff08;5&#xff09;表格题 &#xff08;6&#xff09;演示文稿题 二、计算机等级考试——标准评…...

Geotools中获取Shapefile的属性表格字符集编码的一种方法

目录 前言 1、字符集编码的重要性 2、Geotools 在 GIS 开发中的地位 一、GeoTools的字符集知识 1、字符集的作用 2、shapefile中字符集信息 二、GeoTools中获取字符集的方法 1、默认获取 2、从DataStore中获取 3、从CPG文件中获取 4、生产字符获取实践 三、总结 前言…...

HTTP 与 HTTPS 协议:从基础到安全强化

引言 互联网的消息是如何传递的&#xff1f; 是在路由器上不断进行跳转 IP的目的是在寻址 HTTP 协议&#xff1a;互联网的基石 定义 HTTP&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;&#xff0c;即超文本传输协…...

Scrapy爬虫框架介绍

目录 什么是Scrapy Scrapy核心组件 Scrapy扩展组件 组件交互流程 安装Scrapy Scrapy项目目录结构说明 创建Scrapy项目 创建爬虫 运行爬虫 配置请求头 全局配置请求头 指定爬虫配置请求头 配置管道pipeline 全局配置pipeline 方式一&#xff1a;指定爬虫配置pipe…...

Stable Diffusion模型高清算法模型类详解

Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4&#xff0c;分块尺寸768px★★★★★☆皮肤纹理细腻&#xff0c;但高对比场景易出现…...

软考网络安全口诀

首先&#xff0c;我们来看第一个口诀 “防御为先&#xff0c;安全无小事”。这个口诀强调了网络安全中的防御意识。在软考备考过程中&#xff0c;我们需要深刻理解网络安全不仅仅是技术层面的问题&#xff0c;更是一种全面的防御思维。从网络架构设计到日常运维管理&#xff0…...

Baklib内容中台赋能企业智管

内容中台构建全场景智管 现代企业数字化运营中&#xff0c;全域内容管理能力已成为核心竞争力。通过智能知识引擎驱动的内容中台架构&#xff0c;企业能够实现跨部门、多形态数据的统一归集与动态调度。以某制造企业为例&#xff0c;其利用中台系统将分散在CRM、ERP及内部文档…...

vscode+vue前端开发环境配置

目录 一、安装Vue二、使用vue新建项目 一、安装Vue 在node.js安装好之后&#xff0c; npm config set registry https://registry.npmmirror.com# 安装vue相关工具&#xff0c;webpack用来项目构建、打包、资源整合等。 npm install webpack -g# 安装vue-cli脚手架 npm insta…...

Python项目-基于深度学习的校园人脸识别考勤系统

引言 随着人工智能技术的快速发展&#xff0c;深度学习在计算机视觉领域的应用日益广泛。人脸识别作为其中的一个重要分支&#xff0c;已经在安防、金融、教育等多个领域展现出巨大的应用价值。本文将详细介绍如何使用Python和深度学习技术构建一个校园人脸识别考勤系统&#…...

浅谈C++函数特性

C的函数特性 前言 在C中&#xff0c;函数加入了许多特性&#xff0c;例如&#xff1a;a、函数缺省参数 b、函数重载 c、内联函数 等等……&#xff0c;这里我会和大家详细去探讨这些特性。以及探讨这些特性的一些细节&#xff0c;同时在内联部分&#xff0c;我们还会把C语言的…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

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

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

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...