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

【AI知识点】词嵌入(Word Embedding)

词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将词语或短语映射为具有固定维度的实数向量。这些向量(嵌入向量)能够捕捉词语之间的语义相似性,即将语义相近的词映射到向量空间中距离较近的位置,而语义相异的词会被映射到较远的位置。词嵌入是文本表示学习的核心,广泛应用于文本分类、机器翻译、文本生成、问答系统等任务中。

1. 词嵌入的基本概念

词嵌入将离散的词语转换为稠密的低维向量表示,这些向量通常在100到300维之间。相比于传统的词袋模型(Bag-of-Words,BOW)或词频-逆文档频率(TF-IDF)模型生成的高维稀疏向量,词嵌入模型生成的向量更加紧凑且具有语义信息。

例如,词袋模型会将每个词表示为一个非常高维的向量,每个维度对应一个词汇表中的词,而词嵌入则将每个词用一个低维稠密向量表示。通过这种方式,模型能够捕捉到词语之间的语义关系。


2. 词嵌入的表示

每个词语被表示为一个向量。例如,假设我们使用300维度的词嵌入,那么词“苹果”可能会被表示为如下的300维向量:

v 苹果 = [ 0.21 , − 0.56 , 0.87 , … , 0.34 ] \mathbf{v_{\text{苹果}}} = [0.21, -0.56, 0.87, \dots, 0.34] v苹果=[0.21,0.56,0.87,,0.34]

而词“香蕉”也会被映射到一个向量,如果“苹果”和“香蕉”在语义上相似,那么它们的嵌入向量(Embedding Vector)在向量空间(vector space)中的距离就会较近。


3. 词嵌入的原理

词嵌入模型的基本思想是:语义相似的词通常会出现在相似的上下文中。这种观点源自于“分布式语义学”(distributional semantics),即词语的语义可以通过它们的上下文来确定。基于这个思想,词嵌入模型会通过上下文中的词语共现关系来学习每个词的嵌入向量。

通过学习,模型能够将语义相似的词语映射到向量空间中相近的点。例如,在大规模文本语料中,“苹果”和“香蕉”可能频繁出现在类似的上下文中,例如“我喜欢吃___”,因此它们会具有相似的嵌入向量。


4. 常见的词嵌入模型

a. Word2Vec

Word2Vec 是一种经典的词嵌入模型,由Google的Mikolov等人提出。它通过神经网络学习词语的嵌入向量,目标是让语义相似的词语具有相似的向量表示。Word2Vec 提供了两种训练方法:

  • CBOW(Continuous Bag of Words):通过预测上下文来推测目标词。例如,给定句子“我喜欢吃苹果”,模型使用“我”、“喜欢”和“吃”预测目标词“苹果”。
  • Skip-Gram:反过来,通过目标词预测上下文。例如,使用“苹果”预测“我”、“喜欢”和“吃”。

Word2Vec 的输出是一个固定维度的词嵌入向量,它能够很好地捕捉词语之间的语义关系。例如,向量 v 国王 − v 男人 + v 女人 \mathbf{v_{\text{国王}}} - \mathbf{v_{\text{男人}}} + \mathbf{v_{\text{女人}}} v国王v男人+v女人 的结果向量会接近于 v 女王 \mathbf{v_{\text{女王}}} v女王,表明“国王”和“女王”之间的关系与“男人”和“女人”之间的关系相似。

b. GloVe

GloVe(Global Vectors for Word Representation) 是斯坦福大学提出的一种基于全局词共现矩阵的词嵌入方法。与 Word2Vec 的局部上下文学习方式不同,GloVe 利用全局的词语共现信息来学习嵌入向量。

GloVe 的训练目标是最小化词语与上下文共现概率的差异。它的基本公式是:

log ⁡ P ( w i , w j ) = v w i ⋅ v w j \log P(w_i, w_j) = \mathbf{v_{w_i}} \cdot \mathbf{v_{w_j}} logP(wi,wj)=vwivwj

其中 P ( w i , w j ) P(w_i, w_j) P(wi,wj) 表示词 w i w_i wi 和词 w j w_j wj 的共现概率, v w i \mathbf{v_{w_i}} vwi v w j \mathbf{v_{w_j}} vwj 是它们的嵌入向量。GloVe 通过全局语料中的词共现信息训练出词嵌入向量,因此它在大型语料库上具有良好的表现。

c. FastText

FastText 是 Facebook 提出的一种基于子词单元的词嵌入模型,它扩展了 Word2Vec 的功能。FastText 的主要优势在于它不仅将每个词表示为一个嵌入向量,还将词分解为多个子词(如词干、前缀、后缀),从而可以更好地处理未登录词(即在训练语料中未出现的词)以及词语的形态变化。

FastText 的一个典型应用是在处理类似于“running”和“run”这种形态变化时,它能够识别出两者的关系并生成相似的嵌入向量。

d. BERT

BERT(Bidirectional Encoder Representations from Transformers) 是一种基于Transformer架构的预训练语言模型。与Word2Vec和GloVe的静态词嵌入不同,BERT 生成的词嵌入是动态的,即词语的嵌入向量会根据上下文的不同而变化。

BERT通过双向上下文(即同时考虑前后文)生成词嵌入,能够更好地处理词语在不同语境中的多义性。例如,词“bank”在“金融机构”和“河岸”的不同语境下会有不同的嵌入向量表示。


5. 词嵌入模型的训练方法

词嵌入模型通过无监督学习在大规模语料库上进行训练,主要基于上下文词语的共现关系。模型的目标是通过优化一个损失函数,使得在相似上下文中出现的词语具有相似的嵌入向量。

  • 共现矩阵:词嵌入模型依赖于上下文中词与词之间的共现关系。共现矩阵统计了每对词语在相邻位置中出现的次数。基于这些统计,模型可以推导出词语之间的相似性。

  • 优化目标:模型通过最小化某个损失函数来学习词嵌入。例如,Word2Vec 使用负采样(Negative Sampling)方法,通过最大化真实上下文词对的概率,最小化随机负样本词对的概率。


6. 词嵌入的应用

a. 文本分类

词嵌入是文本分类任务中的基础表示方式。通过将文档中的词语转换为嵌入向量,模型可以将文档表示为向量或矩阵,然后用于训练分类器(如SVM、神经网络等),以预测文档的类别。

b. 文本相似性计算

词嵌入能够帮助衡量文本之间的相似性。通过将两个文本中的词转换为嵌入向量,可以计算这些向量之间的余弦相似度或其他相似度度量,从而判断文本的语义相似性。

c. 机器翻译

在机器翻译任务中,词嵌入通过捕捉不同语言中词语的相似性来帮助翻译模型生成更准确的译文。词嵌入模型能够将源语言的词语映射到目标语言中的相应词语,进而提高翻译的质量。

d. 信息检索

在搜索引擎中,词嵌入帮助改进查询和文档的表示方式。通过将查询词和文档中的词嵌入到向量空间中,信息检索系统可以更好地理解用户的意图并返回更相关的搜索结果。


7. 词嵌入的优点

  • 捕捉语义相似性:词嵌入通过上下文学习生成,能够很好地捕捉词语的语义相似性,使得相似的词在向量空间中靠近。例如,“苹果” 和 “香蕉” 可能在向量空间中距离较近,因为它们经常出现在类似的上下文中。

  • 稠密低维表示:与词袋模型(Bag-of-Words)或TF-IDF模型生成的高维稀疏向量不同,词嵌入将词语映射到低维的稠密向量,这种表示方式更加紧凑,且可以减少数据的稀疏性问题,同时提高计算效率。

  • 处理未登录词:FastText等模型通过将词语分解为子词或n-gram的方式,可以处理未在训练语料中出现过的词语。即便是新的、未见过的词语,模型也能生成合理的嵌入向量。

  • 保留语法和语义关系:词嵌入能够捕捉到词语之间的某些语法关系。比如通过词嵌入向量的运算,能够发现一些有趣的词语关系,如:

    v 国王 − v 男人 + v 女人 ≈ v 女王 \mathbf{v_{\text{国王}}} - \mathbf{v_{\text{男人}}} + \mathbf{v_{\text{女人}}} \approx \mathbf{v_{\text{女王}}} v国王v男人+v女人v女王

    这种词嵌入向量的运算反映了“国王”与“男人”的关系类似于“女王”与“女人”的关系。


8. 词嵌入的局限性

虽然词嵌入模型有许多优点,但它们也存在一些局限性:

a. 上下文无关的静态嵌入

传统的词嵌入模型(如Word2Vec和GloVe)生成的是静态词嵌入,即每个词的嵌入向量在所有上下文中都是相同的。比如词语“bank”在“金融机构”和“河岸”这两种完全不同的语义下,其向量表示都是一样的,模型无法识别出多义词在不同语境下的不同含义。

b. 无法捕捉长距离依赖

词嵌入模型通常依赖于局部上下文(如Word2Vec中的窗口大小),因此它们无法有效处理长距离依赖关系。对于依赖远距离词语的信息(如复杂句法结构或长篇文本),词嵌入模型的表现可能较弱。

c. 需要大量训练数据

词嵌入模型的训练通常需要大量的文本数据,尤其是在低频词和稀有词的语义学习上,如果训练数据不足,模型可能无法很好地捕捉这些词语的语义信息。

d. 缺乏动态性

静态词嵌入模型生成的是固定的词向量,不能根据上下文变化调整词的语义。这限制了模型在处理多义词和不同语境中的表现。


9. 动态词嵌入模型的出现

为了克服传统词嵌入模型的局限性,动态词嵌入模型(如BERTGPT)应运而生。这些模型不仅能根据上下文生成不同的嵌入向量,还能捕捉长距离的依赖关系。

a. BERT(Bidirectional Encoder Representations from Transformers)

BERT 是一种基于Transformer架构的预训练语言模型,它通过双向建模(即同时考虑词语的前后文)生成动态词嵌入。这使得BERT能够根据上下文调整词语的表示方式。例如,词语“bank”在“金融机构”和“河岸”这两种上下文中会生成不同的嵌入向量,从而解决了传统词嵌入模型无法处理多义词的问题。

b. GPT(Generative Pretrained Transformer)

GPT 是一种生成式预训练模型,它通过单向语言建模生成词语的嵌入向量。GPT可以用于文本生成、对话系统等任务,其嵌入向量不仅能够捕捉词语的语义,还能根据句子结构生成合适的词嵌入。

这些动态词嵌入模型在诸如机器翻译、文本生成、问答系统等任务中表现优异,因为它们能够根据具体语境动态生成词向量,从而捕捉更加复杂的语言现象。


10. 词嵌入的应用场景

a. 文本分类

通过将文本中的词语表示为嵌入向量,词嵌入模型可以帮助文本分类任务,例如垃圾邮件分类、情感分析等。嵌入向量能够捕捉词语的语义信息,从而提高分类器的性能。

b. 文本相似性计算

词嵌入广泛用于衡量文档或句子之间的相似性。通过计算两个文本的嵌入向量之间的余弦相似度或其他距离度量,可以判断它们在语义上的相似程度。例如,两个语义相似的句子会具有较高的相似度评分。

c. 机器翻译

在机器翻译任务中,词嵌入帮助将源语言的词映射到目标语言的词,进而生成更加准确的翻译结果。词嵌入的语义信息使得翻译系统能够生成与上下文语义一致的译文。

d. 信息检索

词嵌入被广泛用于搜索引擎和信息检索系统中。通过将查询词和文档表示为嵌入向量,系统能够更好地理解查询意图,并返回与查询语义相关的文档。

e. 对话系统

词嵌入可以应用于对话系统中,通过捕捉用户语句中的语义信息,生成更加自然的对话应答。例如,基于词嵌入的系统能够根据用户输入的词语生成语义相关的回复,提升对话系统的智能性。


11. 总结

词嵌入(Word Embedding) 是自然语言处理中的核心技术之一,它通过将词语映射到低维稠密向量空间中,捕捉词语之间的语义关系。传统的词嵌入模型如 Word2VecGloVe 能够生成静态的词嵌入,并在许多NLP任务中表现出色。然而,随着自然语言处理技术的发展,动态词嵌入模型(如 BERTGPT)逐渐成为主流,它们能够根据上下文生成动态的嵌入向量,并捕捉更复杂的语义和上下文关系。

词嵌入在文本分类、文本相似性计算、机器翻译、信息检索、对话系统等领域都有广泛应用。随着技术的不断进步,词嵌入模型将继续在自然语言处理领域中发挥关键作用,为语言理解和生成任务提供更智能的解决方案。

相关文章:

【AI知识点】词嵌入(Word Embedding)

词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将词语或短语映射为具有固定维度的实数向量。这些向量(嵌入向量)能够捕捉词语之间的语义相似性,即将语义相近的词映射到…...

Python从入门到高手5.1节-Python简单数据类型

目录 5.1.1 理解数据类型 5.1.2 Python中的数据类型 5.1.3 Python简单数据类型 5.1.4 特殊的空类型 5.1.5 Python变量的类型 5.1.6 广州又开始变热 5.1.1 理解数据类型 数据类型是根据数据本身的性质和特征来对数据进行分类,例如奇数与偶数就是一种数据类型。…...

Hbase要点简记

Hbase要点简记 Hbase1、底层架构2、表逻辑结构 Hbase HBase是一个分布式的、列式的、实时查询的、非关系型数据库,可以处理PB级别的数据,吞吐量可以到的百万查询/每秒。主要应用于接口等实时数据应用需求,针对具体需求,设计高效率…...

RabbitMQ的各类工作模式介绍

简单模式 P: ⽣产者, 也就是要发送消息的程序 C: 消费者,消息的接收者 Queue: 消息队列, 图中⻩⾊背景部分. 类似⼀个邮箱, 可以缓存消息; ⽣产者向其中投递消息, 消费者从其中取出消息.特点: ⼀个⽣产者P,⼀个消费者C, 消息只能被消费⼀次. 也称为点对点(Point-to-…...

李宏毅深度学习-图神经网络GNN

图卷积的开源代码网站DGL 好用的还是 GAT, GIN(指出最好的卷积 就是 hi 邻居特征(而且只能用 sum)) Introduction GNN 可以理解为是由 Graph(图) Nerual Networks 组合而成的,图结构应该都在数据结构与…...

Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)

目录 一、单点 Redis 的问题 1. 数据丢失问题 2. 并发能力问题 3. 故障恢复问题 4. 存储能力问题 5. 四种问题的解决方案 二、Redis持久化(两种方案) 1. RDB持久化 1.1. 简介 1.2. 执行时机 save命令 bgsave命令 停机时 触发RDB条件 1.3. …...

python交互式命令时如何清除

在交互模式中使用Python,如果要清屏,可以import os,通过os.system()来调用系统命令clear或者cls来实现清屏。 [python] view plain copy print? >>> import os >>> os.system(clear) 但是此时shell中的状态是:…...

Token,Cookie,Session,JWT详解

这四个技术虽然在功能上有所不同,但在web应用中常常一起使用,已实现用户身份验证,授权和会话管理。 Token:指的是用于身份验证,授权成信息交换的令牌,可以有不同的实现方式,例如JWT。 Cookie&…...

opencv-rust 系列: 1, 安装及运行自带示例和测试程序

opencv-rust 系列: 1, 安装及运行自带示例和测试程序 运行环境: ubuntu ; rust 已安装; 对rust的掌握为三脚猫程度一. opencv-rust安装:二. 运行自带examples和tests 运行环境: ubuntu ; rust 已安装; 对rust的掌握为三脚猫程度 一. opencv-rust安装: 安装软件: sudo apt in…...

Linux系统编程(一):Linux平台上静态库和动态库的制作与使用

本篇文章我们通过 gcc 或g编译器手动制作Linux 平台上的静态库和动态库。由于涉及的内容较多,所以后面分多次来完成本篇文章。做任何事情都是一样的,我们不可能一次性把处在舒适区的事情做好。 本讲主要内容如下: 库的基本概念Linux 平台上…...

Nginx的基础讲解之重写conf文件

一、Nginx 1、什么是nginx? Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 2、用于什么场景 Nginx适用于各种规模的网站和应用程序,特别是需要高并发处理和负载均衡的场…...

RIFE: Real-Time Intermediate Flow Estimation for Video Frame Interpolation

Paper name RIFE: Real-Time Intermediate Flow Estimation for Video Frame Interpolation Paper Reading Note Paper URL: https://arxiv.org/pdf/2011.06294 Code URL: https://github.com/hzwer/ECCV2022-RIFE TL;DR 2022 年旷视出品的实时视频帧插值工作。提出 RIFE…...

rabbitMq-----broker服务器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言管理的字段 前言 搭建一个网络服务器,在内部提供各个业务接口即可。 在业务处理函数中,每次请求过来找到对应的信道,通过信…...

MAC备忘录空白解决方案

打开icloud->备忘录 取消勾选同步此MAC后再次勾选,然后点击完成即可。...

cnn突破七(四层bpnet网络公式与卷积核bpnet公式相关)

我们要有一个概念,就是卷积核就是我们的w1,w12,w2 那么我们的5*5卷积核怎么表达,当他在14*14的图像中流动时,对应的像素也在变化 这个和我们的上面w1,w12,w2不同,因为这几个都是全…...

PHP中的PEAR是什么

PHP中的PEAR是PHP Extension and Application Repository的缩写,即PHP扩展与应用库。它是一个PHP扩展及应用的代码仓库,提供了许多常用的PHP库和工具,涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService等许多…...

(C语言贪吃蛇)4.贪吃蛇地图优化及算法说明

上节代码示例&#xff1a; #include <curses.h>void initNcurse() {initscr();keypad(stdscr,1); }void gamePic() {int hang;int lie;for(hang 0;hang < 20;hang ){if(hang 0){for(lie 0;lie < 20;lie ){printw("--");}printw("\n");for(…...

国外电商系统开发-运维系统拓扑布局

点击列表中设备字段&#xff0c;然后定位到【拓扑布局】中&#xff0c;可以看到拓扑发生了变化 再回头&#xff0c;您再次添加一个服务器到系统中&#xff0c;并且选择该服务器的连接节点为您刚才创建的“SDN路由器”&#xff0c;保存后&#xff0c;您可以看到这个服务器连接着…...

使用winsock和ip相关指令重置Window网络配置

netsh winsock reset 和 netsh int ip reset 是 Windows 中用于修复网络问题的命令。它们分别用于重置 Winsock 和 TCP/IP 网络配置&#xff0c;以解决可能由于配置错误或网络堆栈损坏而导致的网络连接问题。 1. netsh winsock reset 1.1 作用 重置 Winsock 目录。Winsock 是…...

用AI做电子萌宠,快速涨粉变现

今天给大家分享一个很热门的小副业—AI宠物视频 项目介绍 前一阵刷到一个萌宠账号&#xff0c;爆款率可真高&#xff0c;涨粉可真快呀。 28篇笔记涨粉3.2万&#xff0c;点赞更是达到了十几万。其中有6篇点赞上万。 至于究竟是不是AI其实没那么重要&#xff0c;重要的是&…...

如何在 Axios 中封装事件中心EventEmitter

在 Axios 中封装一个事件中心 EventEmitter 允许你在请求的不同阶段&#xff08;如请求开始、请求成功、请求失败等&#xff09;触发事件。这可以通过创建一个自定义的 Axios 实例&#xff0c;并结合 Node.js 的 events 模块来实现。以下是一个详细的步骤指南和示例代码&#x…...

计算机网络——ftp

在网络通信中&#xff0c;控制连接和数据连接是两种不同类型的连接&#xff0c;它们各自具有特定的功能和用途。 一、控制连接 定义与功能&#xff1a; 控制连接主要用于在通信双方之间传输控制信息&#xff0c;以建立、维护和终止数据连接。它负责协调和管理数据传输的过程&am…...

Redis:set类型

Redis&#xff1a;set类型 set命令SADDSMEMBERSSISMEMBERSCARDSPOPSRANDMEMBERSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 内部编码intsethashtable 当把一些关联的数据放到一起&#xff0c;就构成一个集合。在Redis中&#xff0c;使用set类型维护…...

九大排序之插入排序

1.前言 插入排序是把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。实际中我们玩扑克牌时&#xff0c;就用了插入排序的思想。 本章重点&#xff1a;主要着重的介绍两种插入排序…...

DNABERT: 一个基于 Transformer 双向编码器表征的预训练 DNA 语言模型

本文结合 DNABERT 的原文&#xff0c;主要介绍了&#xff1a; Overview of DNABERT 开发 DNABERT 的背景 DNABERT 的 tokenization DNABERT 的模型架构 DNABERT 的预训练 基于微调 DNABERT 的应用 1. Overview of DNABERT 我们之前介绍了 BERT&#xff0c;它是一个基于 Transfo…...

基于Hive和Hadoop的电商消费分析系统

本项目是一个基于大数据技术的电商消费分析系统&#xff0c;旨在为用户提供全面的电商消费信息和深入的消费行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 S…...

记一次炉石传说记牌器 Crash 排查经历

大家好这里是 Geek技术前线。最近在打炉石过程中遇到了HSTracker记牌器的一个闪退问题&#xff0c;尝试性排查了下原因。这里简单记录一下 最近炉石国服回归&#xff1b;由于设备限制&#xff0c;我基本只会在 Mac 上打炉石。并且由于主要打竞技场&#xff0c;所以记牌器是必不…...

精益驱动的敏捷开发

1. 什么是精益&#xff1f;精益能给软件开发带来什么&#xff1f; 精益是一种起源于制造业的管理哲学&#xff0c;尤其是从丰田的生产体系中发展而来。它的核心目标是通过最小化浪费、提高效率和优化流程来实现高效的生产。精益的核心原则包括&#xff1a; 消除浪费&#xff…...

SolidWorks机器转ROS2 URDF

文章目录 开发环境SolidWords插件使用生成urdf文件之后的处理CMakeLists文件修改package.xml变更Launch更改运行 开发环境 Linux系统&#xff1a;Ubuntu 22.04 Ros2版本&#xff1a;humble Solidwords版本&#xff1a;2023 &#xff08;2019以上版本应该都是可以的&#xff09…...

(Linux驱动学习 - 6).Linux中断

一. Linux 中断 API 函数 1.中断号 每个中断都有一个中断号&#xff0c;通过中断号即可区分不同的中断&#xff0c;有的资料也把中断号叫做中 断线。在 Linux 内核中使用一个 int 变量表示中断号。 2.申请中断 - request_irq 函数原型&#xff1a; int request_irq(unsigne…...