RNN模型文本预处理--基本处理方法

文本处理的基本方法

在自然语言处理(NLP)领域,文本处理是一项基础且重要的任务。它涉及将原始文本转换为计算机可处理的形式,以便执行诸如情感分析、文本分类、信息检索等多种应用。本文将介绍文本处理的几个基本方法:分词、词性标注和命名实体识别,并提供相应的Python代码示例。

1. 分词(Tokenization)

分词是将连续的字符序列根据一定的规则拆分成一个个词元(token)的过程。在中文中,由于单词之间没有明确的分隔符,分词成为了一个复杂的问题。分词后的每个元素称为词元,它可以是一个字、一个词或一个符号。

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

作用:词作为语言语义理解的最小单元,是人类理解文本语言的基础。

特性

  • 支持多种分词模式:精确模式、全模式和搜索引擎模式。
  • 支持中文繁体分词
  • 支持用户自定义词典:可以通过jieba.load_userdict加载自定义词典,词典格式为每行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开。

应用场景

  • 文本表示:将文本转换为向量形式,如word2id和id2word。
  • 文本相似度:计算两个文本之间的相似度,常用的方法有余弦相似度和欧式距离。

使用 jieba 进行分词

首先,确保已经安装了 jieba 库:

pip install jieba

然后,可以使用以下代码进行分词:

import jieba

# 精确模式
content = "我爱北京天安门"
tokens = jieba.cut(content, cut_all=False)
print("精确模式:", list(tokens))

# 全模式
tokens = jieba.lcut(content, cut_all=True)
print("全模式:", tokens)

# 搜索引擎模式
tokens = jieba.lcut_for_search(content)
print("搜索引擎模式:", tokens)

输出

精确模式: ['我', '爱', '北京', '天安门']
全模式: ['我', '爱', '北京', '天安门', '我爱', '爱北京', '北京天安门']
搜索引擎模式: ['我', '爱', '北京', '天安', '门']
2. 词性标注(Part-of-Speech Tagging, POS)

词性标注是对文本中的每个词进行词性标注的过程,常见的词性包括动词、名词、形容词等。词性标注有助于更深入地理解文本的结构和意义。

作用:对每个词语进行词性的标注,如动词、名词、形容词等。

使用 jieba 进行词性标注

import jieba.posseg as pseg

data = "我爱北京天安门"
words = pseg.lcut(data)

for word, flag in words:
    print(f"词: {word}, 词性: {flag}")

输出

词: 我, 词性: r
词: 爱, 词性: v
词: 北京, 词性: ns
词: 天安门, 词性: ns
3. 命名实体识别(Named Entity Recognition, NER)

命名实体识别的目标是从文本中识别出具有特定意义的实体名称,如人名、地名、机构名、时间、日期、货币、百分比等。命名实体识别是许多高级NLP任务的重要基础环节。

概念:识别出一段文本中可能存在的命名实体。

主要包含的实体类型

  • 人名
  • 地名
  • 机构名
  • 时间
  • 日期
  • 货币
  • 百分比

使用 uie_pytorch 进行命名实体识别

uie_pytorch 是一个基于 PyTorch 的命名实体识别模型。以下是安装和使用的示例:

pip install uie-pytorch
from uie_pytorch import UIE

# 初始化模型
model = UIE(model="uie-base")

# 输入文本
text = "2023年10月1日,小明在北京天安门广场拍照纪念。"

# 进行命名实体识别
entities = model(text)

# 打印结果
for entity in entities:
    print(f"实体: {entity['entity']}, 类型: {entity['type']}, 位置: {entity['start'], entity['end']}")

输出

实体: 2023年10月1日, 类型: DATE, 位置: (0, 9)
实体: 小明, 类型: PERSON, 位置: (12, 14)
实体: 北京天安门广场, 类型: LOCATION, 位置: (16, 21)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/921720.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式:Flash的分类以及Jlink/J-flash的编程支持

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 常见的Flash大致可以分为以下大类: Serial Nor FlashSerial Nand FlashParallel Nor FlashParallel Nand FlashSerial EEPROM Serial Nor Flash 介绍 Se…

【Linux系统编程】第五十弹---构建高效单例模式线程池、详解线程安全与可重入性、解析死锁与避免策略,以及STL与智能指针的线程安全性探究

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、将日志加到线程池 1.1、Thread类 1.2、ThreadPool类 1.2.1、HandlerTask() 1.2.2、其他公有成员函数 1.3、主函数 2、…

基于SSM的作业批改系统+LW示例参考

1.项目介绍 功能模块:管理员(学生管理、教师管理、作业信息管理、作业提交管理、作业批改管理等)、学生(个人信息管理、作业提交、作业查看等)、教师(个人中心、作业创建、作业批改等)技术选型…

RabbitMQ高可用延迟消息惰性队列

目录 生产者确认 消息持久化 消费者确认 TTL延迟队列 TTL延迟消息 惰性队列 生产者确认 生产者确认就是:发送消息的人,要确保消息发送给了消息队列,分别是确保到了交换机,确保到了消息队列这两步。 1、在发送消息服务的ap…

嵌入式面试八股文(十)·RS485特性分析、CAN硬件同步和再同步遵从规则、SPI四种工作模式、错误帧基本概念

目录 1. 相较于传统的RS232接口,RS485的接口特性有哪些? 2. 在CAN接口协议中硬件同步和再同步需要遵从哪些规则? 3. 为什么位错误不能用于帧间隔? 4. SPI四种工作模式? 5. 关于错误帧,基本概念&a…

librdns一个开源DNS解析库

原文地址:librdns一个开源DNS解析库 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 介绍 librdns是一个开源的异步多功能插件式的解析器,用于DNS解析。 源代码地址:GitHub - vstakhov/librdns: Asynchrono…

cookie反爬----普通服务器,阿里系

目录 一.常见COOKIE反爬 普通: 1. 简介 2. 加密原理 二.实战案例 1. 服务器响应cookie信息 1. 逆向目标 2. 逆向分析 2. 阿里系cookie逆向 1. 逆向目标 2. 逆向分析 实战: 无限debugger原理 1. Function("debugger").call() 2. …

大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

width设置100vh但出现横向滚动条的问题

在去做flex左右固定,中间自适应宽度的布局时, 发现这样一个问题: 就是我明明是宽度占据整个视口, 但是却多出了横向的滚动条 效果是这样的 把width改成100%,就没有滚动条了 原因: body是有默认样式的, 会有一定的默认边距, 把默认边距清除就是正常的了 同时, 如果把高度设…

百度在下一盘大棋

这两天世界互联网大会在乌镇又召开了。 我看到一条新闻,今年世界互联网大会乌镇峰会发布“2024 年度中国互联网企业创新发展十大典型案例”,百度文心智能体平台入选。 这个智能体平台我最近也有所关注,接下来我就来讲讲它。 百度在下一盘大棋…

探索 RocketMQ:企业级消息中间件的选择与应用

一、关于RocketMQ RocketMQ 是一个高性能、高可靠、可扩展的分布式消息中间件,它是由阿里巴巴开发并贡献给 Apache 软件基金会的一个开源项目。RocketMQ 主要用于处理大规模、高吞吐量、低延迟的消息传递,它是一个轻量级的、功能强大的消息队列系统&…

Android 基于Camera2 API进行摄像机图像预览

前言 近期博主准备编写一个基于Android Camera2的图像采集并编码为h.264的应用,准备分为三个阶段来完成,第一阶段实现Camera2的摄像机预览,第二阶段完成基于MediaCodec H.264编码,第三阶段完成基于MediaCodec H.264解码,针对不同…

QT 线程 QThread QT5.12.3环境 C++实现

一、线程 QT主线程称为GUI线程,负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。如果把一些比较复杂或者费时的操作放在主线程中,界面就会出现卡顿或者无响应的现象。一般主线程负责影响界面上的操作, 子线程负责负…

【LLM】一文学会SPPO

博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…

Vue3-后台管理系统

目录 一、完成项目历程 1、构建项目 2、项目的自定义选项 3、 封装组件 4、配置对应页面的路由 5、从后端调接口的方式 二、引入Element Plus、Echarts、国际化组件 1、Element Plus安装 2、Echarts安装 3、国际化 三、介绍项目以及展示 1、项目是基于Vue3、Element …

C0030.Clion中运行提示Process finished with exit code -1073741515 (0xC0000135)解决办法

1.错误提示 2.解决办法 添加环境变量完成之后,重启Clion软件,然后就可以正常调用由mingw编译的opencv库了。

【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解

vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的,在大版本v3中彻底重写了这部分,使用了proxy这个数据代理的方式,来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为&#xff0…

Python浪漫之画明亮的月亮

目录 1、效果展示 2、完整版代码 1、效果展示 2、完整版代码 import turtledef draw_moon():# 设置画布turtle.bgcolor("black") # 背景颜色为黑色turtle.speed(10) # 设置绘制速度# 绘制月亮的外圈turtle.penup()turtle.goto(0, -100) # 移动到起始…

《线性代数的本质》

之前收藏的一门课,刚好期末复习,顺便看一看哈哈 课程链接:【线性代数的本质】合集-转载于3Blue1Brown官方双语】 向量究竟是什么 线性代数中最基础、最根源的组成部分就是向量,需要先明白什么是向量 不同专业对向量的看法 物理专…

鸿蒙系统ubuntu开发环境搭建

在RISC-V等平台移植鸿蒙系统OpenHarmony,需要使用linux环境进行代码的编译,为兼顾日常办公需要,可采用WindowsUbuntu虚拟机的混合开发的环境,通过网络及文件夹共享,在主机和虚拟机之间共享文件数据。 工具准备&#x…