TensorFlow之文本分类算法-3

news2025/8/8 8:52:36

1 前言

2 收集数据

3 探索数据

4 选择模型

5 准备数据

N-gram向量集

序列向量集

序列向量集主要是用于序列模型中对文本执行分词与向量化,与n-gram向量集类似,也使用特征选择与标准化的技术优化序列向量集的表示。

在一些文本样例中,单词的顺序会对文本的意义产生关键的影响,也就是,单词顺序不同,则文本表示的意义不同。例如,文本【I used to hate my commute. My new bike changed that completely】,只能在按单词的顺序理解文本自身的意义。模型CNNs/RNNs(卷积神经网络/循环神经网络,在后续章节中详细描述)能按照样例中单词的顺序推断出文本的意义。因此,对于这些模型,使用分词的序列表示文本,而序列会体现出分词在原文中的顺序。

分词

文本可以表示成一个字符序列或者一个单词序列,实际证明单词序列的表示能提供更加优越的性能,在工业界这是一种常用而且高效的文本处理方法,而字符序列只适用于存在大量拼写错误的文本中,这是非常少见的场景。

向量化

向量化是将分词所得的单词序列转换成数字化的向量集,使用1-gram以及分词索引实现向量化的转换如下所示:

如上所示,Texts是原文本,包括两个文本,Index表示使用1-gram分词所得的索引列表,列表中每个分词是乱序的,其编号表示的索引位是从1到6,而索引位0用于标识未知的分词,索引位1表示分词the,由于the在原文中出现的频率高,因此,其索引位被赋予值1。Sequence表示第一个文本的数字化的单词序列,序列是按照原文的单词顺序排列,其中1表示索引位的the,2表示索引位的mouse,以此类推。

以下分别描述两类单词序列的编码方式,One-hot encoding、Word embeddings。

One-hot encoding

该编码方式是使用n维向量空间表示单词序列,其中,n表示分词所得的词汇总量,如上例中,n等于7。由于以词汇为单位的表示方式简单,因此,其耗费的工作量也很小,但是在实际的应用场景中,词汇总量通常达到几十万个,one-hot编码方式将使得向量集合变得非常稀疏以及低效,如下所示:

如上所示,文本是二维数组,其中,第一维的大小等于6,表示原文单词序列的大小。第二维的大小等于7,表示单词序列中每个元素在词汇中的索引位。例如,第一维对应的第一行是[0, 1, 0, 0, 0, 0, 0],对应词汇集合中的第一索引位的元素,表示the,第二维对应的第二行是[0, 0, 1, 0, 0, 0, 0],对应词汇集合中的第二索引位的元素,表示mouse,依次类推。

Word embeddings

该编码方式是使用嵌入层处理相似的分词集合,使用一个稠密的向量空间表示分词集合,向量空间中的单词位置以及单词之间的距离可以体现出单词的相似度,其关系模型如下所示:

如上所示,Male-Female表示性别的向量空间,Verb Tense表示动词时态的向量空间,Country-Capital表示国家与首都的向量空间。

在神经网络的机器学习模型中,通常提供一个嵌入层作为第一层,该层的主要作用是将单词编码所得的向量集合转换成word embedding向量集合用于训练,其中,每个单词的索引都可以表示成一个稠密类型的向量集合,该向量集合存储真实的单词以及体现出单词在语义空间中的位置,嵌入层的演进如下所示:

如上所示,从左边向右边演进,左边输入原文,随后分词,根据分词的索引对原文编码,随后对编码的向量集合执行转换,每个单词对应一个稠密类型的表示。

特征选择

并非所有的分词在标签预测中都发挥作用,需要对机器学习的过程进行优化,使用有效的方法从词汇集合中删除那些出现频率较低或者与预测不相关的单词,如前面所述,事实证明选择20k的分词数据量作为特征分析与预测是最有效的,序列向量模型的执行步骤如下所示:

  • 对文本执行分词

  • 选择使用top-20k的词汇量

  • 转换分词成序列向量集合

  • 转换序列向量集合成固定的序列长度(稠密类型)

使用TensorFlow的技术框架实现代码步骤如下所示:

标签向量化

前面部分所描述内容是与原文的向量化相关,在实际的应用环境中,也需要将标签向量化,例如,可以将标签分类成[0, num_classes - 1]范围的数组,其中,num_classes是类别的总数。

稀疏矩阵的数据结构

在一个矩阵中,如果0值元素个数远大于非0值元素个数,则该矩阵是稀疏矩阵,为了节省存储空间,通常将稀疏矩阵进行压缩存储,其数据结构描述如下所示:

稀疏矩阵的压缩存储使用三个一维数组:

数组1:将矩阵中每列的非0值存储在该一维数组中,从矩阵的第一列开始递增排列

数组2:存储数组1中的每个元素在矩阵的行索引

数组3:存储数组1的索引位,每个元素表示数组2中开始矩阵新列的列索引,列索引递增,最后一个元素表示数组1的长度

假设,存在如下的矩阵:

1 0

0 2

3 0

数组1:[1,3,2]

数组2:[0,2,1]

数组3:[0,2,3]

稠密矩阵的数据结构

在一个矩阵中,如果0值元素个数远小于非0值元素个数,则该矩阵是稠密矩阵,其数据结构一般是直接使用一维数组存储,其数据结构描述如下所示:

稠密矩阵的存储使用一个一维数组:

数组1:将矩阵中每列的所有元素存储在该一维数组中,从矩阵的第一列开始递增排列

(未完待续)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GaussDB-物理、逻辑备份 使用方法和[GAUSS-53403]解决办法

文章目录1.逻辑备份-gs_dump2.逻辑备份恢复数据库3.物理备份(分布式集群验证)查看物理全量备份集:查看物理增量备份集:查看所有备份集(该命令无法确定备份是否有效)停止物理备份:使用物理备份集…

centos7安装mysql8.0.31

mysql 官网 https://www.mysql.com/ 找到对应的版本 然后下载 连接虚拟机 mysql 会和 mariadb这个有冲突,需要卸载掉 查看是否有mariadb rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs 这个是强制卸载命令 再查看一下 rpm -qa|grep mariadb 在根目录创建…

2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 问题一python代码实现(更新完毕)

2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新完毕) 更新信息 2022-11-24 10:00 更新问题1和问题2 思路 2022-11-24 23:20 更新问题一代码 2022-11-25 11:00 更新问题二代码 相关链接 【2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 问题一pytho…

高性能数据访问中间件 OBProxy(六):一文讲透数据路由

在《高性能数据访问中间件 OBProxy(五):一文讲透数据路由》中,我们讲到了数据路由影响因素包括功能因素、性能因素和高可用因素。本文主要介绍高可用因素相关的内容。 相比传统的 IOE 架构,OceanBase 利用更低的成本实…

【你不知道的javascript上】2. 第三章 全局作用域,函数作用域和块作用域,立即执行函数

预警:【你不知道的javascript】开头的文章,是用来总结书籍《你不知道的Javascript》中我不熟悉的知识,单纯的用来巩固学到的知识,和加深记忆。 可能有些地方我理解的不透彻,所以不能够保证内容的正确性,欢迎…

使用Mysqldump进行定时全备和增备脚本

使用mysqldump进行全备,增备是备份binlog日志 对应的一些变量按照实际环境进行修改即可,如果有更好的思路也可以进行评论交流。 配合计划任务即可完成定时备份的需求,脚本中备份文件存放目录提前创建或者在加个判断进行创建不过我觉得没啥必…

UNIAPP实战项目笔记44 订单页面顶部选项卡 有数据页面样式布局和无数据页面样式布局

UNIAPP实战项目笔记44 订单页面顶部选项卡 有数据页面样式布局和无数据页面样式布局 订单页面顶部选项卡 具体内容图片自己替换哈,随便找了个图片的做示例 具体位置见目录结构 通过 v-show 的false 和 true来切换有无数据页面布局 代码 my-order.vue 页面部分 my-…

[附源码]java毕业设计医院挂号管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

自动化测试定位不到元素怎么办?

1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化。用ID去找元素,每次刷新页面ID都会发生变化。 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素。 2.iframe原因定位不到元素 分析原因:…

studio3T import a SQL Database to Mongodb(从mysql中导入数据到mongodb)

具体参考studio3T官方文档:Import a SQL Database to MongoDB in 5 Steps | Studio 3T 1、打开SQL Migration-->选择SQL to MongoDB Migration 2、创建源数据库的连接(本文源数据库是mysql) 3、选择目标数据库 默认选择当前连接的数据库…

【观察】OceanBase社区版4.0:引领时代,更创造时代

今年8月10日,在2022 OceanBase年度发布会上,OceanBase 4.0首次亮相,在经过85天的快速升级迭代,且历经内外部客户的场景测试与真实业务场景的稳定性“打磨”之后,OceanBase 4.0将“简单易用”的应用感受留给了客户。而在…

JS中的setter、getter数据存取器

JS属性可分为两种类型 ① 数据属性    只是简单存储了一个值 ② 存取器属性    最大的特点是在设置、获取属性值的时候能够做一些其他的操作 设置存取器属性的两种方式 ① 直接在对象中设置 let obj {count: 5, // 普通的数据属性// index为存取器属性_index: 1, // _in…

Linux系统上搭建Java的运行环境,并且部署JavaWeb程序

Linux系统上搭建Java的运行环境,并且部署JavaWeb程序 1.JDK 基于yum【包管理器】来进行安装即可。 yum list列出应用商店上所有的软件包名字。 yum list | grep jdk验证安装成功!! 2.Tomcat 由于yum商店里的tomcat的版本过低&#xff0…

SpringBoot SpringBoot 原理篇 1 自动配置 1.6 bean 的加载方式【四】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.6 bean 的加载方式【四】1.6.1 Import1 自动配置 1.6 bean 的加…

正大数据周五新鲜报 做期货要关注哪块消息?

正规的外盘期货公司都是在香港证监会的监管下,持有合法合规金融牌照。这点好比国内证券和期货公司在中国证监会的监管下一个道理,完全正规合法。 ​ ​如果你是想做主账户往下开展业务: 一、进入香港证监会官网查询该期货公司的编号 二、…

Spring 中 Bean 的作用域和生命周期

目录 1. Bean 的作用域 1.1 Bean 的六大作用域 1.1.1 单例作用域 (singleton) 1.1.2 原型作用域 (prototype) 1.1.3 请求作用域 (request) 1.1.4 会话作用于 (session) 1.1.5 全局作用于 (application) 1.1.6 HTTP WebSocket 作用域 (websocket) 1.2 如何设置 Bean 的…

142.如何个性化推荐系统设计-2

142.1 离线训练 离线训练流程 如何线上实时反馈特征? 在线计算,与曝光日志一起上报,离线直接使用 如何解决曝光不足问题? 使用CTR的贝叶斯平滑(CTR 曝光次数 / 点击次数) 所有新闻自身CTR服从Beta分布: 某…

199道SpringCloud面试题,你能答上来吗

前言 Spring Cloud Alibaba 是阿里中间件团队主导的一个新生项目,正处于高速迭代中。 其次,对于中国用户来说,Spring Cloud Alibaba 还有一个非常特殊的意义:它将曾经红极一时的 Dubbo,以及阿里巴巴的强力消息中间件…

每天花2小时复习Java面试指南,高级架构视频,我进了阿里定级P7

Java进阶架构师必备 基础 容器 并发 JVM Java8 计算机网络 计算机操作系统 Linux 数据结构 算法 mysql (优化思路) 系统设计 分布式 线上问题调优(虚拟机,tomcat) 面试指南 工具 ​ 编辑 添加图片注释,不超过 140 字(可选&…

用Python采集球员信息,成功预测到了球赛胜负?

前言 嗨嗨,最近看球赛的朋友多吗 emm怎么说,我对这个虽然兴趣不是很大 但是还是想跟朋友赌赌,自己对这些球员也不是很熟悉,索性叫我的好同事帮我用Python采集了各国球员的一些信息,没料到竟预测成功了! …