一文读懂深度学习中文本处理的4种方式

news2024/9/22 7:31:08

一、序言

文本处理方式是深度学习领域中自然语言处理的基础,即把文本转变成计算机识别的语言过程。转变之后才能用算法做后续的文本分析和理解。所以有必要了解文本处理的几种方式,做到对不同的场景采用不同的处理方式。

常见的文本处理方式有独热编码(one-hot),词袋法(Bag of words),TF-IDF和词向量(Word2Vec)这4种,我们分别为大家解释。

二、文本处理方式之独热编码(one-hot)

首先给大家解释的是独热编码,也称为one-hot编码,是最基础,同时也是用的较多的一种处理方式。

我们举个例子解释下one-hot过程。假设文本有三句话:分别为

  1. 我爱北京。

  1. 爷爷奶奶爱北京。

  1. 我爱爷爷奶奶。

按照one-hot处理步骤,首先需要将语料库的每句话分成单词,即为[我,爱,北京,爷爷,奶奶],总共5个单词,构成一个词典,如图所示:

5个单词构成的词典示例

这相当于字典中只有这5个单词,每个单词对应一个编号。然后分别对每句话中的单词判断,在字典中出现表示为1,不在字典中出现表示为0。

我们先看下第一句话的表示形式,如图:

句子1的one-hot编码示例

可以发现对于"我爱北京" 来说,"我"在词典中出现,所以表示为1。"爱"在词典中出现,表示为1。北京也同样在词典中出现,所以也表示为1。而"爷爷","奶奶" 在这句话里面没有涉及,所以表示为0。最终第一句话表示为[1,1,1,0,0]。这就是第一句话对应的独热编码。

我们再看下第二句话"爷爷奶奶爱北京"的one-hot表示。如图所示:

句子2的one-hot编码示例

可以发现同样对于"爷爷","奶奶","奶","北京",这几个单词来说都分别在词典中出现,所以表示为1。而"我"没有出现,表示为0。最终第二句话的one-hot表示为[0,1,1,1,1]。

同理,第三句话one-hot表示,如图所示:

句子3的one-hot编码示例

这里同样也是将句子中出现的单词在文本中表示为1,没有表示的为0。最终第二句话的one-hot表示为[0,1,1,1,1]。

通过以上案例可以发现,独热编码的处理方式的优点是比较简单,容易理解,并且方便操作。

三、文本处理方式之词袋法(Bag of words)

因为one-hot只是表示单词出现还是不出现,所以这种方法有一个比较明显的问题,就是不能体现单词的重要程度

对于一个文本来说,如果频繁出现某个词,可能意思更倾向于这个单词所表示的主题思想,如下举例:

  1. 我爱北京天安门,天安门上红旗飘。

  1. 我爱北京。

  1. 我爱中国北京。

首先同样还是按照文章中所有出现的单词构造字典。如下:

8个单词组成的词典示例

如果按照one-hot编码的话,结果如下:

三个句子对应的one-hot编码结果

对于第一句话来说,"天安门"出现了两次,所以第一句话的中心思想应侧重强调于对"天安门"这个词的表达。而在上图中one-hot编码这种方式表示仅仅表示了单词"天安门"出现或者不出现,不能很好的突出这个单词在文本中的重要性。

因此我们用词袋法来表示,词袋法主要是统计了每个单词出现的频数,作为当前单词的表达形式。结果如下:

三个句子对应的词袋法表示结果

可以发现对于第一句话,词袋法将"天安门"这个单词表示为2,这样文本在考虑中心词的时候会更倾向于"天安门"这个词的表达,从而更好的体现文章思想。

通过以上案例可以发现,词袋法的处理方式优点是能够体现单词的重要程度。

四、文本处理方式之TF-IDF

从one-hot到词袋法,虽然考虑了单词出现的频数,以单词的频数来表示单词所表达的思想的重要性。

但是这里会有一个问题,单词次数越多,会越重要吗?

比如一篇文章出现好多个"我","我"这个词就一定重要吗? 答案是不一定的,真正重要的不是单词本身,而是这句话所要表达的主题才是最重要的。

所以才有了TF-IDF的发展,其中TF表示的含义是 term frequency就是词频DF是Document Frequency即文档的频率I是Inverse,求逆,也就是TF值除以DF值的含义

我们举个例子来进行讲解,比如以下文本:

1、我爱中国

2、我爱北京

对于以上两个句子中每个句子对应的词频如下:

句子对应的词频示例

这也正是我们的TF。我们再看下对应的DF,DF实际上为每个单词在所有文本中出现的个数。所以DF表示如下:

文档频率示例

对应单词的TF除以DF如图所示:

每个单词的TF-IDF结果示例

可以发现对于句子1,"中国"的TF-IDF值最大,所以第一个句子的主题倾向于"中国"。对于句子2,"北京"的TF-IDF值最大,所以第二个句子的主题思想倾向于"北京"。而文本中的"我"和"爱"因为在各个文本中都有涉及,所以在表达主题上面,其实没有太大的参考意义,因此对应的DF值比较高,最后再通过TF相除之后,TF-IDF值就比较低了。

通过以上案例可以发现TF-IDF处理方式,它除了考虑词频,还考虑了单词在整个语料库里面的频率,这会让一些大部分文本中都有的词对应的权重降低,从而更好的突出文章主题。

五、文本处理方式之词向量(Word2Vec)

以上三种方法,一般来说是比较基础和简单的了,但是它们都忽略了句子单词之间的语境,或者理解为忽略了单词之间的顺序。

举个例子,比如:"我爱苹果" 这里面的"苹果"代表什么意思呢?它是我们所说的苹果手机还是吃的苹果呢?

日常生活的苹果和苹果手机的理解示例

如果按one-hot,词袋法或者TF-IDF中的任何一个算法来计算的话,都是有歧义的。因为这些算法没有考虑单词之间上下文的关系。

举个例子理解下单词之间上下文的关系:比如对文本"我想吃苹果",对于人来说,它吃的一定是水果,不是手机,那怎么能让计算机知道呢?就得靠"苹果"前面的"吃"这个字,来体会到后面是水果。再比如对文本"我想玩苹果",一般情况下它是手机,它就根据前面的"玩"来定义它是苹果。

所以句子的上下文对于词语表达的方式是很重要的一个信息。因此词向量算法应运而生,字面理解,词向量就是把一个词变成向量。只不过在词向量算法里面相近的词位置比较近。

那什么是向量?向量就是高维空间里面的一个点,如果把一个词变成了向量,词就在高维空间里面有个位置。假设文本中"苹果"和"梨"单词的位置表示如图:

单词的词向量表示示例

那此时"苹果"的含义可能是水果,因为离梨比较近。

如果此时最终训练的词向量表示如图所示:

单词的词向量表示示例

那此时"苹果"的含义可能是苹果手机,因为离"华为"单词比较近。

词向量训练本身是一种浅层的神经网络算法,需要我们算法模型不断学习的,最终可以将单词表示成一定维度的向量,它考虑了上下文之间语义的联系,能够很好的表达词真正的含义。

六、总结

文本处理方式比较普遍的就是以上4种,我们要结合不同的情形分别应用。

举个例子,一般来说,对于离散型的特征和标签,我们需要表示为one-hot编码。而对于深度学习算法中的场景,我们的文本需要转成词向量,嵌入到神经网络最开始的层次里面,作为预训练的基础。所以大家需要结合实际工作业务,选择对应的文本处理方式即可。

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

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

相关文章

OSI参考模型与TCP/IP模型比较

TCP/IP模型 — TCP/IP协议簇 TCP/IP分为两种体系结构,一种是分为四层网络接口层、网络层、传输层和应用层;另外一种是分为五层物理层、数据链路层、网络层、传输层和应用层。这两种体系结构都对。 TCP/IP四层模型 — TCP/IP标准模型 TCP/IP五层模型 — T…

hive数据仓库搭建

一、虚拟机安装CentOS7并配置共享文件夹 二、CentOS 7 上hadoop伪分布式搭建全流程完整教程 三、本机使用python操作hdfs搭建及常见问题 四、mapreduce搭建 五、mapper-reducer编程搭建 六、hive数据仓库安装 hive数据仓库搭建一、hive数据仓库安装1.1下载hive安装包1.2修改配置…

2022年亚太杯APMCM数学建模大赛C题全球是否变暖求解全过程文档及程序

2022年亚太杯APMCM数学建模大赛 C题 全球是否变暖 为方便各位阅览及了解掌握亚太杯的写作技巧,这里非技术使用中文,公式部分由于翻译过程繁琐使用英文来撰写此文章. 原题再现: 加拿大的49.6C创造了地球北纬50以上地区的气温新纪录&#xf…

SpringBoot的字符画(banner.txt)

好多小伙伴最近问我如何在启动项目的时候,在控制台打印如下的图案logo 其实很简单,Springboot提供了很方便的操作,在resource目录先新建一个banner.txt 然后将我们想要的图案拼接即可,如下图: 配置完成后正常启动项目…

TorchServe 详解:5 步将模型部署到生产环境

内容导读 TorchServe 自 2020 年 4 月推出至今,经历了 2 年多的发展,变得愈发成熟和稳定,本文将对 TorchServe 进行全面介绍。 TorchServe 是 PyTorch 中将模型部署到生产环境的首选解决方案。它是一个性能良好且可扩展的工具,用 …

【Java】多线程详解

目录 一、线程简介 进程(Process )与 线程(Thread) 二、线程创建 1、线程Thread 1.1. 步骤 1.2 应用 1.3 案例:下载图片 2、实现Runnable接口 2.1 步骤 2.2 应用 3.小结 3. 实现Callable接口(了解…

利用Github账号实现(多个)个人网站

创建仓库 命名一定要是<username>.github.io这种形式username就是自己github账号的用户名。因为我已经有这个仓库&#xff0c;所以这里的报错可以忽略。 往仓库放入静态html文件 命名为index.html&#xff0c;随便放点内容。 在设置里面开启github page 这里可以选…

verilog学习笔记- 2)时序约束文件

目录 为什么要创建时序约束文件&#xff1f; 时序&#xff1a; 创建时序约束文件&#xff1a; 为什么要创建时序约束文件&#xff1f; 对于一些简单的工程时序的要求并不是特别的严格&#xff0c;添不添加时序约束文件影响不大。但是对于一些复杂的工程&#xff0c;涉及到高…

【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口

【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口SpringBoot常用的接口ApplicationContextInitializerBeanDefinitionRegistryPostProcessorBeanFactoryPostProcessorInstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessorBeanFactoryAwareApplica…

Dom 重点核心

关于dom操作&#xff0c;主要针对元素的操作。 主要有创建&#xff0c;增&#xff0c;删&#xff0c;改&#xff0c;查&#xff0c;属性操作&#xff0c;事件操作。 一、创建 1.document.write 2.innerHTML 3.createElement 二、增 1.appendChild&#xff08;在后面添加&am…

【iOS】块与大中枢派发

文章目录[TOC](文章目录)前言理解“块”这一概念块的基础知识块的内部结构全局块&#xff0c;栈块&#xff0c;堆块为常用的块类型创建typedef用handler块降低代码分散程度用块引用其所属对象时不要出现保留环多用派发系列&#xff0c;少用同步锁多用GCD&#xff0c;少用perfor…

Linux/ARM下QT MQTT库的编译安装

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦目录 一、 Linux 环境下编译安装 二、 ARM Linux 环境下安装 一、 Linux 环境下…

破解分布式光伏运维难题,光伏+屋面数字化监控融合是关键

2022年5月&#xff0c;在东南地区某城市一幢写字楼上&#xff0c;技术人员们正不辞辛苦爬上数十米高的墙面&#xff0c;对写字楼的屋面和墙面进行勘察。随后&#xff0c;他们准备赶在台风季来临之前完成该写字楼的建筑光伏一体化项目安装与部署。 这是森特士兴集团股份有限公司…

fixed:error:0308010C:digital envelope routines::unsupported

目录1.故障现场2. 问题分析3. 修复方案4. 参考文献1.故障现场 最近由于一些原因&#xff0c;从Mac OSX 迁移到 Windows 平台&#xff0c;在尝试运行基于vue-element-admin 项目时&#xff0c;发生了如下异常&#xff1a; error:0308010C:digital envelope routines::unsuppor…

MySQL的一些指令,函数以及关键字

这个里面我准备记录一些比较有意思的MySQL的指令和函数&#xff0c;当然使用函数的时候我们要注意&#xff0c;会不会因为函数导致不走索引&#xff0c;走全表扫描的情况。 因为对索引字段做函数操作&#xff0c;可能会破坏索引值的有序性&#xff0c;因此优化器就决定放弃走树…

导读:21 世纪中叶的精准肿瘤学奇点?循环肿瘤细胞和单细胞测序?

Tips: 组学时代的循环肿瘤细胞&#xff1a;我们离实现“奇点”还有多远&#xff1f;&#xff08;Br J Cancer&#xff0c;IF&#xff1a;9.075&#xff09;&#xff0c;原文链接: https://pubmed.ncbi.nlm.nih.gov/35273384/ 循环肿瘤细胞的生物学、脆弱性和临床应用&#xff0…

用javascript分类刷leetcode22.字典树(图文视频讲解)

目录 Trie树&#xff0c;即字典树&#xff0c;又称前缀树&#xff0c;是一种树形结构&#xff0c;典型应用是用于统计和排序大量的字符串&#xff08;但不限于字符串&#xff09;&#xff0c;所以经常被搜索引擎用于文本词频统计。它的优先是&#xff0c;最大限度的减少无谓的…

数据挖掘与机器学习作业_06 决策树

决策树 步骤 1.计算不纯度2.选取不纯度最高的特征进行分支3.计算不纯度4.继续划分 from sklearn import tree from sklearn.model_selection import GridSearchCV from sklearn.model_selection import cross_val_score from sklearn.model_selection import train_test_spl…

单点登录 SSO 解决方案选型指南|身份云研究院

单点登录&#xff08;SSO&#xff09;是目前企业降本增效以及提升用户体验的主流选择方案。常规的单点登录指“登录一次&#xff0c;即可访问所有互相信任的应用&#xff0c;用户不再需要记住每一个应用的账号密码”&#xff0c;这有效解决了密码疲劳、登录效率等问题&#xff…

(深度学习快速入门)第三章第二节:通过一个二分类任务介绍完整的深度学习项目

文章目录一&#xff1a;数据集介绍二&#xff1a;一个完整的深度学习项目必备文件三&#xff1a;项目代码&#xff08;1&#xff09;config.py——超参数文件&#xff08;2&#xff09;preprocess——数据预处理文件&#xff08;3&#xff09;dataloader——数据集封装&#xf…