文本编码方式(词向量提取方式)

本文详细介绍了文本编码的方式,从one-hot编码的局限性,到分布式表示的发展,包括基于矩阵的GloVe、基于聚类的布朗聚类以及基于神经网络的word2vec和BERT。GloVe通过共现矩阵分解获取词向量,而word2vec的CBOW和Skip-gram模型以及BERT的双向Transformer结构则进一步捕捉词的上下文信息。BERT在多个NLP任务中表现出色,其双向注意力机制是其关键优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 文本编码方式

1.1 one-hot

缺点:

  • 维度大
  • 词和词之间都是孤立的,无法表示词与词之间的语义信息

1.2 分布式表示

正所谓:“物以类聚,人以群分”,所以分布式表示的主要思想为:上下文相似的词,其语义也相似。其主要分为三种方法。

  • 基于矩阵的分布式表示
  • 基于聚类的分布式表示
  • 基于神经网络的分布式表示

2. 分布式表示

如节1.2所述,分布式表示主要分为三种方式。这三种方式使用了不同的技术手段,但都是基于分布假说,核心思想由两部分组成:

  1. 选择一种方式描述上下文
  2. 选择一种模型刻画目标词与上下文的关系

2.1 基于矩阵的分布式表示

这类方法需要构建一个“词-上下文”矩阵,每行对应一个词,每列表示一种不同的上下文,矩阵中的每个元素对应相关词和上下文的共现次数。该方法分为以下三步:

步骤 内容 解释
step1 选取上下文 法1:将词所在的文档作为上下文,形成“词-文档”矩阵
法2:将词附近的上下文中的词(例如上下文窗口中的5个词)作为上下午,形成“词-词”矩阵
法3:将词附近的n元词组作为上下文,形成“词-n元组”矩阵
step2 确定矩阵中各元素的值 常用的有tf-idf、PMI和直接取log
step3 矩阵分解 奇异值分解(SVD)、非负矩阵分解(NMF)、典型关联分析(CCA)、HPCA

LSA:使用“词-文档”矩阵,tf-idf作为元素值,并用SVD分解
Global Vector(GloVe):使用“词-词”矩阵进行分解从而得到词向量

2.1.1 GloVe

正如论文的标题而言,GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。总体上看,GloVe模型是一种对“词-词”矩阵进行分解从而得到词表示的方法。

步骤

GloVe的实现可以分为三步:

  1. 构建共现矩阵: 根据语料库构建共现矩阵 X X X,矩阵第 i 行与第 j 列的值为 v i v_i vi v j v_j vj 在特定大小的上下文窗口的共现次数 x i j x_{ij} xij 。一般而言,这个次数的最小单位是1,但是GloVe不这么认为:它根据两个单词在上下文窗口的距离d,提出了一个衰减函数: d e c a y = 1 / d decay = 1/d decay=1/d 用于计算权重,也就是说距离越远的两个单词所占总计数(total count)的权重越小。
  2. 构建词向量和共现矩阵之间的共现关系: 论文作者提出下面的公式可以近似表达二者的关系。 l o g ( x i j ) = w i T w ~ j + b i ( 1 ) + b j ( 2 ) log(x_{ij})=w_i^T\tilde{w}_j+b_i^{(1)}+b_j^{(2)} log(xij)=wiTw~j+bi(1)+bj(2) 其中 w i w_i wi 为词 v i v_i vi 作为目标词时的词向量, w ~ j \tilde{w}_j w~j 为词 v j v_j vj 作为上下文时的词向量 b ( 1 ) b^{(1)} b(1) b ( 2 ) b^{(2)} b(2)为针对词表中各词的偏移向量。
  3. 在矩阵分解步骤,GloVe模型借鉴了推荐系统中的基于隐因子分解(Latent Factor Model)的方法,在计算重构误差时,只考虑共现次数非零的矩阵元素,同时对矩阵中的行和列加入了偏移项。具体为最小化下式:
    L o s s = ∑ i , j ∈ V , x i j ≠ 0 f ( x i j ) ( w i T w ~ j + b i ( 1 ) + b j ( 2 ) − l o g ( x i j ) ) 2 Loss=\sum_{i,j \in V,x_{ij} \neq 0}f(x_{ij})(w_i^T\tilde{w}_j+b_i^{(1)}+b_j^{(2)}-log(x_{ij}))^2 Loss=i,jV,xij=0f(xij)(wiTw~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值