文本向量化

文章目录

  • 文本的tokenization
  • 向量化
    • 1.one-hot编码
    • 2.word embedding
    • 3.API

文本的tokenization

tokenization就是通常说的分词,分出的每一个词我们把它称为token。

常见的分词工具有很多,比如:

  • jieba分词
  • 清华大学的分词工具THULAC

中文分词的方法:

  • 把句子转化为词语
  • 把句子转化为单个字

向量化

因为文本不能够直接被模型计算,所以需要将其转化为向量。

把文本转化为向量有两种方法:

①转化为one-hot编码

②转化为word embedding

1.one-hot编码

在one-hot编码中,每一个token使用一个长度为N的向量表示,N表示为词典的数量。

即:把待处理的文档进行分词或者是N-gram处理,然后进行去重得到词典,假设我们有一个文档:”深度学习“,那么进行one-hot处理后的结果如下:

tokenone-hot encoding
1000
0100
0010
0001

补充:

  • 句子可以切分为单个字、词来表示,但是有时候也可以切分为2个、3个或者多个词来表示,N-gram就是按n个词语划分文本的方法,其中N表示能够被一起使用的词的数量。

  • 在传统的机器学习中,使用N-gram方法往往能够取得非常好的效果,但是在深度学习中比如RNN中会自带N-gram的效果。

2.word embedding

word embedding是深度学习中表示文本常用的一种方法,和one-hot编码不同。word embedding使用了浮点型的稠密矩阵来表示token。根据词典大小,我们的向量通常使用不同的维度,例如100,260,300等。其中,向量中的每一个数都是一个超参数,其初始值是随机生成的,之后会在训练的过程中进行学习而获得。

假设我们的文本中有20000个词语,如果使用one-hot编码,那么我们会有20000 * 20000的矩阵,其中大多数的位置都为0,但是如果我们使用word embedding来表示的话,只需要20000 * x维度,如果维度x为300的话,得到的矩阵大小就是20000 * 300

形象的表示就是:

tokennumvector
词10[w11,w12,w13…w1n],其中n表示维度
词21[w21,w22,w23…w2n]
词32[w31,w32,w33…w3n]
词mm[wm1,wm2,wm3…wmn],m表示词典的大小

注:我们会把所有的文本转化为向量,把句子用向量表示,但是在这中间,我们会先把token使用数字来表示,再把数字使用向量来表示。即:token—>num—>vector
举个栗子:
比如我们现在有一句话“欢迎来到深度学习”,根据这句话我们可以创建一个词典(如果是预训练好的模型,那词典是基于预训练语料库创建好的)
假如词典如下:

tokenindex
0
1
2
3
4
5
6
7

“欢迎来到深度学习”这句话对应的tokens是[“欢”,“迎”,“来”,“到”,“深”,“度”,“学”,“习”],对应词表得到的数字表示为[1,7,3,0,4,2,5,6],然后给定词向量维度N进行训练,每个词(字)都可以用一个维度为N的向量表示,这句话有8个字,那么这句话最终可以用一个8xN的矩阵表示

3.API

torch.nn.Embedding(num_embeddings,embedding_dim)
参数介绍:

①num_embeddings:词典的大小(数量)

②embedding_dim:embedding的维度

使用方法:

embedding = nn.Embedding(vocab_size,300)  #实例化
input_embeded = embedding(input)          #进行embedding的操作,input是要进行词嵌入的文本

思考:每个batch中的每个句子有10个词,经过形状为[20,4]的word embedding之后,原来的句子会变成什么形状?

每个词语用长度为4的向量表示,所以,最终句子会变为[batch_size,10,4]的形状。

增加了一个维度,这个维度就是embedding的dim。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java版鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

消息队列使用场景介绍

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,K…

【SpringCloud——Elasticsearch(下)】

一、数据聚合 聚合,可以实现对文档数据的统计、分析、运算。常见的聚合有三类: ①、桶聚合:用来对文档做分组 TermAggregation:按照文档字段值分组。Date Histogram:按照日期解题分组,例如一周为一组&am…

Linux--12--Kernel panic – not syncing: Attempted to kill init! Redhat6.2故障修复

1、Linux环境 Redhat6.2, Linux version 2.6.32-220.el6.i686 (mockbuildx86-003.build.bos.redhat.com) (gccversion 4,4.5 20110214 (Red Hat 4.4.5-6) (GCC) ) #1 SMP Wed Nov 9 08:02:18 EST 2011 2、故障现象 修改TCP相关文件,重启完Linux系统之…

LLM-Client一个轻量级的LLM集成工具

大型语言模型(llm)已经彻底改变了我们与文本交互的方式,OpenAI、Google、AI21、HuggingfaceHub、Anthropic和众多开源模型提供了不同的功能和优势。但是每个模型都有其独特的体系结构、api和兼容性需求,集成这些模型是一项耗时且具有挑战性的任务。 所以…

全网超详细的 SpringBoot 整合 Elasticsearch 实战教程

在pom.xml里加入如下依赖&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> 非常重要&#xff1a;检查依赖版本是否与你…

使用 MATLAB 和 C/C++ 生成 GPS L1 C/A 伪随机噪声 (PRN) 代码

function CACode = GpsCaCodePRN(sv)NUM_CODES = 37; %reserving 37 satellitesSR_LEN = 20;CA_PERIOD = 1023

3-如何创建等比数列?【视频版】

目录 问题视频解答 问题 视频解答 点击观看&#xff1a; 3-如何创建等差数列&#xff1f;

利用SQL注入漏洞登录后台

所谓SQL注入&#xff0c;就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令&#xff0c;比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的&#xff0c;这类表单特别容易受到SQ…

(二)WPF - 应用程序

一、运行程序的过程&#xff1a; &#xff08;1&#xff09; Application 对象被构造出来。&#xff08;2&#xff09;Run方法被调用。&#xff08;3&#xff09;Application.Startup 事件被触发&#xff08;4&#xff09;用户代码构造一个或多个 Window 对象。&#xff08;5&…

Finalshell安全吗?Xshell怎么样?

文章目录 一、我的常用ssh连接工具二、Xshell2.1 下载&#xff1a;认准官网2.2 Xshell 配置2.3 Xftp和WinSCP 一、我的常用ssh连接工具 之前讲过&#xff1a; 【服务器】远程连接选SSH&#xff08;PUTTY、Finalshell、WinSCP&#xff09; 还是 远程桌面&#xff08;RDP、VNC、…

使用POI将excel文件导入到数据库

概要 随着时代变化&#xff0c;有的需求也会越来越多&#xff0c;例如&#xff1a;有的文件上千条数据需要导入数据库不可能手动一条条导入吧&#xff1f;太浪费时间了&#xff01;所以需要编写程序让程序来导入 整体架构流程 我这里使用的是springbootmybatisMVC的项目架构…