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

【NLP】Word2Vec 介绍


Word2Vec 是一种非常流行的自然语言处理技术,它将每个单词表示为高维向量,并且通过向量之间的相似度来表示单词之间的语义关系。

1 One-Hot 编码🍂

在自然语言处理任务中,我们需要将文本转换为计算机可以理解的形式,即向量表示。One-Hot 编码是一种常见的文本向量化方法,它将每个单词表示为一个长度为词汇表大小的向量,其中只有一个元素为1,其余元素都为0,该元素的位置表示单词在词汇表中的索引。

"cat": [1, 0, 0, 0]
"dog": [0, 1, 0, 0]
"apple": [0, 0, 1, 0]
"orange": [0, 0, 0, 1]

例如,假设有一个包含4个单词的词汇表[“cat”, “dog”, “apple”, “orange”],则对应的 One-Hot 编码如上所示。

但是设想一下词汇表包含上万个单词呢,那么就意味着每一个单词的 One-Hot 编码向量长度都是上万的,这无疑添加了计算的复杂度。

1.1 优缺点🍁

虽然 one-hot 编码是一种简单有效的表示方法,但它也存在一些缺点。

  1. 线性表示:由于每个单词只有一个维度为1,其余维度都是0,因此 one-hot 编码的向量是线性表示的。这意味着,单词之间的关系只能通过向量之间的距离来衡量,而无法通过其他非线性的方式来表示单词之间的语义和语法关系,也就是无法度量词语之间的相似性。
  2. 稀疏性:one-hot 编码的向量通常非常稀疏,其中大部分维度都是0。这导致 one-hot 编码需要存储大量的无用信息,使得向量变得非常庞大,且容易出现维度灾难,从而增加了计算的复杂度和存储成本。
  3. 无法处理未知词:由于 one-hot 编码只能表示已知单词,因此它无法处理未知词汇。当出现新单词时,必须重新调整向量空间的维度,并重新训练模型,这会带来很大的计算成本和时间开销。

尽管 one-hot 编码有一些缺点,但它仍然是一种简单而有效的文本向量化方法,尤其适用于一些简单的自然语言处理任务,例如文本分类等。同时,one-hot 编码也是其他文本表示方法的基础。

2 Word2Vec🌸

因此,针对上述 one-hot 编码缺点,近年来出现了很多新的词向量表示方法,例如 Word2Vec、GloVe 等,它们能够更好地捕捉单词之间的语义和语法关系,同时也具有更高的计算效率和更小的存储空间。


Word2Vec 是一种广泛使用的自然语言处理技术,用于将单词映射到低维向量空间中。它是由谷歌公司的研究人员在2013年提出的,主要用于解决语言模型中的词汇丰富性和数据稀疏性问题。

Word2Vec 算法通过训练神经网络模型来学习单词的分布式表示,这些分布式表示可以用于表示单词的语义和语法特征。具体来说,Word2Vec 算法包括两个主要的模型:连续词袋模型(CBOW)和 Skip-gram 模型。

2.1 CBOW🌹

连续词袋模型(CBOW)是一种根据上下文单词来预测目标单词的模型。具体来说,给定一个窗口大小为 n 的上下文单词序列,连续词袋模型的任务是预测中间的目标单词,如下图所示。

连续词袋模型的优点是:由于它是基于上下文单词来预测目标单词的,因此它可以利用上下文单词的信息来推断目标单词的语义和语法特征;模型参数较少,训练速度相对较快。


2.2 Skip-gram🌍

Skip-gram 模型是一种根据目标单词来预测上下文单词的模型。具体来说,给定一个中心单词,Skip-gram 模型的任务是预测在它周围窗口大小为 n 内的上下文单词,如下图所示。

Skip-gram 模型的优点是:由于它是基于目标单词来预测上下文单词的,因此它可以利用目标单词的语义和语法特征来预测上下文单词;模型能够生成更多的训练数据,因此可以更好地训练低频词汇的表示;Skip-gram 模型在处理大规模语料库时效果比 CBOW 模型更好。

总的来说,CBOW 模型适合用于训练低频词汇的表示,并且可以较快地训练;Skip-gram 模型适合用于处理大规模语料库,并且可以更好地学习单词之间的语义和语法关系。

2.3 负采样(negative sampling)☎️

Word2Vec 技术中使用负采样(negative sampling)的主要目的是加速训练过程,同时也可以提高模型的准确性。在 Word2Vec 模型中,Skip-gram 和 CBOW 模型都需要对每个单词计算 softmax 概率,这个过程需要对整个词汇表进行计算,计算量非常大,因此会导致训练速度非常慢。为了解决这个问题,Mikolov 等人在2013年提出了负采样的方法。

负采样的基本思想是对每个训练样本,随机选择一定数量的负样本,并令它们的标签为0,然后将这些正样本和负样本送入模型进行训练。这样做可以避免对整个词汇表进行 softmax 计算,从而大大降低了计算量。

具体来说,对于每个正样本,我们随机选择 k 个负样本(即从词汇表中随机选取k个单词),并将它们与 target word 组成 k+1 个样本,其中正样本的标签为1,负样本的标签为0。然后,我们使用 sigmoid 函数将这 k+1 个样本的得分(即向量点积)转换为概率,并将其作为模型的输出,然后通过反向传播算法更新模型参数。

通过负采样,Word2Vec 模型的训练速度得到了极大的提升,同时也可以提高模型的准确性。在实践中,通常将k的取值设为5-20之间,较小的 k 可以加快训练速度,但可能会影响模型的准确性,较大的 k 可以提高模型的准确性,但会增加计算量。

3 GloVe⚽️

虽然 word2vec 是一种非常流行的词向量模型,但它也有一些缺点。

  1. Out-of-vocabulary 问题:如果 word2vec 没有在训练数据中看到某个单词,则它无法将其表示为向量。
  2. 上下文窗口大小的选择:word2vec 中上下文窗口大小的选择对最终词向量的质量有很大影响。如果窗口大小太小,则可能无法捕捉到单词之间的语义关系;如果窗口大小太大,则可能会引入太多的噪音。
  3. 训练时间长:word2vec 的训练时间通常很长,特别是对于大型语料库和高维词向量来说。
  4. 无法处理多义词:word2vec 为每个单词生成唯一的向量表示,因此它不能处理多义词,即一个单词有不同的含义,例如 “bank” 既可以表示银行,也可以表示河岸。

相比之下,GloVe 是一种基于全局矩阵分解的词向量模型,它可以缓解一些 word2vec 的缺点,以下是一些 GloVe 的优点。

  1. 处理多义词能力:GloVe 使用词与词之间的共现统计信息来学习词向量,因此它可以将多个含义相似的单词映射到同一个向量空间中。
  2. 更好的向量质量:由于 GloVe 使用全局矩阵分解来学习词向量,因此它可以利用整个语料库中的统计信息来学习更准确的词向量。
  3. 更少的超参数:GloVe 中只有一个超参数,即词汇表大小,而 word2vec 需要选择多个超参数,例如上下文窗口大小和负采样数量。

虽然 GloVe 相对于 word2vec 具有一些优点,但它也有一些缺点,例如它的训练时间可能比 word2vec 更长。在选择哪种词向量模型时,需要考虑特定任务的要求以及可用的计算资源和数据量等因素。

4 Supplement🏀

除了one-hot 编码、Word2Vec 和 GloVe 等常见的文本向量表示方法外,还有许多其他的方法可以将文本表示为向量,下面列举了几种比较常见的方法:

  1. FastText:FastText 是 Facebook 于2016年提出的一种文本向量表示方法,它基于 Word2Vec 模型,但是将单词视为子词的集合,通过子词级别的向量表示来表示单词。这种方法不仅能够表示常见单词,还能够表示罕见单词和未知单词,因此在自然语言处理中得到了广泛应用。
  2. Paragraph Vector(Doc2Vec):Paragraph Vector 是一种将文本表示为向量的方法,它是在Word2Vec 的基础上进行扩展,可以同时将单词和文本表示为向量。Paragraph Vector 通过在训练中使用文本标签来捕捉文本的上下文信息,从而提高了文本向量的质量。
  3. ELMo:ELMo 是一种基于深度双向语言模型的文本向量表示方法,它可以为每个单词生成多个不同的向量表示,每个向量表示都捕捉了不同层次的语义信息。这种方法能够更好地捕捉单词的多义性和上下文相关性,因此在自然语言处理中得到了广泛应用。
  4. Transformer:Transformer 是一种基于自注意力机制的神经网络结构,它在机器翻译任务中表现出了优异的性能。Transformer 可以将文本表示为向量序列,每个向量捕捉了该位置的语义信息和上下文相关性。这种方法不仅能够捕捉单词之间的语义和语法关系,还能够处理长文本和多语言文本等复杂情况。

这些方法各有特点,可以根据不同的任务需求选择合适的方法进行文本表示。

相关文章:

【NLP】Word2Vec 介绍

Word2Vec 是一种非常流行的自然语言处理技术,它将每个单词表示为高维向量,并且通过向量之间的相似度来表示单词之间的语义关系。 1 One-Hot 编码🍂 在自然语言处理任务中,我们需要将文本转换为计算机可以理解的形式,即…...

3月6日,30秒知全网,精选7个热点

///石家庄地铁:在指定店铺购物金额不限 就可免费乘地铁 乘客只要在指定商铺或地铁站内36524便利店购物,便能得到一张当日乘车券,可免费乘坐地铁一次,不限里程 ///神州泰岳:公司语音机器人等产品能够进行多轮问答 公司…...

Python笔记 -- 字典

文章目录1、概述2、增删改查3、遍历3.1、遍历所有键值对3.2、分别遍历键和值4、嵌套4.1、字典列表4.2、在字典中储存列表4.3、在字典中储存字典1、概述 字典是一系列键值对,可将任何Python对象作为字典中的值 字典和列表容易混淆,列表也可用{} 字典是一…...

【独家】华为OD机试 - 滑动窗口(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

MySQL调优 - SQL查询深度分页问题

一、问题引入 例如当前存在一张表test_user,然后往这个表里面插入3百万的数据: CREATE TABLE test_user (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键id,user_id varchar(36) NOT NULL COMMENT 用户id,user_name varchar(30) NOT NULL COMMENT 用…...

0306spring--复习

一,spring是什么 Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架 理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架 优点&#xff1…...

动手实现一遍Transformer

最近乘着ChatGpt的东风,关于NLP的研究又一次被推上了风口浪尖。在现阶段的NLP的里程碑中,无论如何无法绕过Transformer。《Attention is all you need》成了每个NLP入门者的必读论文。惭愧的是,我虽然使用过很多基于Transformer的模型&#x…...

【Flutter入门到进阶】Flutter基础篇---弹窗Dialog

1 AlertDialog 1.1 说明 最简单的方案是利用AlertDialog组件构建一个弹框 1.2 示例 void alertDialog(BuildContext context) async {var result await showDialog(barrierDismissible: false, //表示点击灰色背景的时候是否消失弹出框context: context,builder: (context)…...

【操作系统】进程和线程的区别

文章目录1. 概述2. 进程3. 线程4. 协程5. 进程与线程区别1. 概述 进程和线程这两个名词天天听,但是对于它们的含义和关系其实还有点懵的,其实除了进程和线程,还存在一个协程,它们的关系如下: 首先,我们需要…...

Linux开发环境配置--正点原子阿尔法开发板

Linux开发环境配置–正点原子阿尔法开发板 文章目录Linux开发环境配置--正点原子阿尔法开发板1.网络环境设置1.1添加网络适配器1.2虚拟网络编辑器设置1.3Ubuntu和Windows网络信息设置Ubuntu网络信息配置方式:1.系统设置->网络->选项2.配置网络文件2源码准备2.…...

Android ThreadPoolExecutor的基本使用

ThreadPoolExecutor是Java中的一个线程池类,Android中也可以使用该类来管理自己的线程池,它为我们管理线程提供了很多方便。 线程池是一种能够帮助我们管理和复用线程的机制,它可以有效地降低线程创建和销毁的开销。使用线程池可以避免不必要…...

基于区域生长和形态学处理的图像融合方法——Matlab图像处理

✅ 大三下时弄的 文章目录最终效果图摘要1 研究背景及意义2 基本原理描述3 实验数据来源3.1 原始图像的来源3.2 天空背景图像的来源4 实验步骤及相应处理结果4.1 原始图像的预处理4.2 区域生长法分割图像4.3 形态学处理填充孔洞4.4 边缘检测根据二值图像构造RGB图像4.5 图像拼接…...

三个案例场景带你掌握Cisco交换机VLAN互通

VLAN间路由的方式现在主流的组网主要是依靠三层交换机通过配置SVI接口【有的厂商叫VLANIF接口】,当然也有比较小型的网络,它就一个出口路由器可管理的二层交换机,还有一种更加差的,就是出口路由一个可管理的二层交换机&#xff0c…...

小白入门之持久连接与非持久连接的差别

对比 HTTP 0.9 已过时 HTTP1.0:非持续连接,每个连接只处理一个请求响应事务,有些服务器端甚至还在用此,可以在一定时间内复用连接,具体复用时间的长短可以由服务器控制,一般在15s左右。 HTTP 1.1 默认使用持…...

TypeScript篇.01-简介,类,接口,基础类型

1.简介(1)安装及编译安装: npm install -g typescript创建 .ts 后缀名的文件编译: tsc 文件名.ts 编译后会生成同名 .js 的文件查看: 在html文件中script引入js文件,运行查看控制台即可(2)类型注解TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式 变量或函数声…...

分享几种WordPress怎么实现相关文章功能

一淘模板(56admin.com)给大家介绍一下WordPress代码实现相关文章的几种方法,希望对大家有所帮助! WordPress很多插件可以实现相关文章的功能,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响…...

PANGO的IOB的电平能力那些事

LVCMOS33 如果要使用33电平,VCCIO则必须供电3V3. 在此制式下,VILMAX为0.8V,VIHMIN为2.0V,即,电平处于0.8V到2.0V之间时,处于浮游态。 VOLMAX是0.4V,VOHMIN是VCCIO-0.4V,折算下来&am…...

scrpy学习-02

新浪微博[Scrapy 教程] 3. 利用 scrapy 爬取网站中的详细信息 - YouTubedef parse(self,response):soup BeautifulSoup(response.body,html.parser)tags soup.find_all(a,hrefre.compile(r"sina.*\d{4}-\d{2}-\d{2}.*shtmls"))#匹配日期for tag in tags:url tag.get(…...

MySQL运维篇之Mycat分片规则

3.5.3、Mycat分片规则 3.5.3.1、范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片。 示例: 可以通过修改autopartition-long.txt自定义分片范围。 注意: 范围分片针对于数字类型的字段,…...

vue router elementui template CDN模式实现多个页面跳转

文章目录前言一、elementui Tabs标签页和NavMenu 导航菜单是什么?二、使用方式1.代码如下2.页面效果总结前言 写上一篇bloghttps://blog.csdn.net/jianyuwuyi/article/details/128959803的时候因为整个前端都写在一个index.html页面里,为了写更少的代码…...

ElasticSearch - ElasticSearch基本概念及集群内部原理

文章目录1. ElasticSearch的应用场景01. Elasticsearch 是什么?02. 为何使用 Elasticsearch?03. Elasticsearch 的用途是什么?04. Elasticsearch 的工作原理是什么?05. Elasticsearch 索引是什么?06. Logstash 的用途是…...

【反射中,Class.forName和ClassLoader区别】

在Java中,可以使用反射机制来获取类的信息并动态地创建对象。其中,Class是Java反射机制中的重要类,表示一个类的信息。 Class.forName()和ClassLoader都可以用于获取类的Class对象,但它们之间存在一些差别: 1、是否会…...

2023了为什么还有人在问:女生适合做跨境电商吗?

女生适合做跨境电商吗?这是东哥最近咨询里面问最多的,今天东哥就给大家解答一下你们内心的疑惑,虽然代表的是东哥我自己的观点,但我觉得还是很值得深思的。 女生适合做跨境电商吗? 性别并不是决定一个人是否适合从事跨…...

磁盘分区和挂载

磁盘分区和挂载一、linux分区1.原理介绍2.分区和文件关系示意图:3.硬盘说明二、linux分区1.查看所有设备挂载情况三、挂载案例1.使用lsblk命令查看2. 虚拟机硬盘分区3.虚拟机硬盘分区格式化4.mount挂载 重启挂载失效4.1挂载名词解释4.2注意事项4.3挂载4.4挂载非空目…...

电子技术——晶体管尺寸

电子技术——晶体管尺寸 在本节我们介绍关于IC设计的一个重要的参数晶体管尺寸(例如长度和长宽比)。我们首先考虑MOS反相器。 反相器尺寸 为了说明 (W/L)(W/L)(W/L) 的尺寸大小以及 (W/L)p(W/L)_p(W/L)p​ 和 (W/L)n(W/L)_n(W/L)n​ 的比例问题对于MO…...

Tuxera NTFS2023MacOS读写软件功能介绍使用

当我们遇到磁盘不能正常使用的情况时本能的会以为是磁盘损坏了,但某些情况下却并非如此。对于mac操作系统来说,软件无法使用设备无法正常读写似乎是很常见的事,毕竟现在的mac电脑对PC机上的产品无法完全适应使用,经常会存在兼容方…...

2022年数维杯国际大学生数学建模挑战赛A题自动地震地平线跟踪解题全过程论文及程序

2022年数维杯国际大学生数学建模挑战赛 A题 自动地震地平线跟踪 原题再现: 随着我国经济社会发展,地质工作的重要性也日益提高。地震资料解释是地震勘探工程的一个重要阶段,可以明确油气勘探的地下构造特征,为油气勘探提供良好和…...

推荐系统[八]:推荐系统常遇到问题和解决方案[物品冷启动问题、多目标平衡问题、数据实时性问题等]

相关文章推荐: 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展 推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF/TDM/Ai…...

shutil.copyfile PermissionError: [Errno 13] Permission denied

File "G:/od15/调试/翻译文件更换/更新翻译po文件.py", line 42, in <module> shutil.copyfile(gxpath,dir_file_path) File "E:\odsoft\python\lib\shutil.py", line 120, in copyfile with open(src, rb) as fsrc: PermissionError: [Er…...

07react+echart,大屏代码开发

react框架引入第三方插件原链接gitHub:GitHub - hustcc/echarts-for-react: ⛳ Apache ECharts components for React wrapper. 一个简单的 Apache echarts 的 React 封装。import ReactECharts from echarts-for-react;import * as echarts from echarts;一、软件简介echarts-…...