文献分享 |【文本表征系列】句子分布式嵌入向量的动态总结

本文回顾了2015年至2018年间关于句子分布式嵌入向量的典型文献,涵盖无监督方法(如词向量均值组合和神经网络编码器)以及有监督方法(依赖下游NLP任务)。通过对比不同方法的步骤和效果,为句向量学习提供参考。

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

作者:王小草

背景介绍

最近对句子的分布式嵌入向量做了些许调研,前程往事自不必多提,未来之事也无需多虑,本文只聚焦于2015年-2018年最近4年最为典型的文献予以介绍和推荐,若读者在工作中有接触和应用更好的方法,跪求您给我留言建议哦,不胜感激。

词嵌入或词表征,是用具有语义相似性的向量来表征自然语言中的词语。以此类推,句子嵌入或句子表征,就是用向量来表征自然语言中的句子,使得向量中携带着句子的语义信息,从而可以被计算机计算和使用。词句披上表征自己含义的向量,游刃于计算机,如同灵魂裹在相由心生的皮囊来往于人世间。

可以将句字嵌入向量的方法分成3大类:
1.无监督-对预训练好词向量进行均值组合得到句向量(本文介绍4篇文献)
2.无监督-对预训练好的词向量通过神经网络编码器得到句向量(本文介绍2篇文献)
3.有监督-对预训练好的词向量通过神经网络编码器+下游有监督的NLP任务进行联合训练得到能产出句向量的编码器(本文介绍2篇文献)


类别一:无监督–对词向量进行均值组合得到句向量

该类别的套路是,先预训练好词向量(一般使用CBOW,Skip-gram,Glove3类经典的方法);然后通过对句子中词的词向量求对应维度上的均值得到相同维度的句向量。直接求算数平均是最基本最简单最粗暴的方法,效果也是不差的,但也总有可以进步的地方,于是下面要介绍的3篇文献都是对如何求均值做了些许改进,从而提高了句向量的质量。

文献一

题目: Siamese CBOW: Optimizing Word Embeddings for Sentence Representations
作者: Tom Kenter1 Alexey Borisov1, 2 Maarten de Rijke1
机构: University of Amsterdam, Yandex, Moscow
时间: 2016
源码: https://bitbucket.org/TomKenter/siamese-cbow.

该文提出Siamese Continuous Bag of Words (Siamese CBOW)模型,一种求sentence embedding的高效神经网络。它对已经训练好的word embedding进行fine tunning,使得利用优化后的词向量通过求均值生成的句向量能有更好的效果。

步骤:

1.预训练好词向量

2.构建神经网络(如下图)
输入:一个source sentence
输出:两个上下文 sentence, 两个nagtive sentence

(1)输入source sentence中的每个词
(2)在预训练的词嵌入矩阵中得到每个词的词向量
(3)将每个词的词向量求均值,表征句子向量
(4)句子向量输入cosine simirayty层,分别计算source sentence和输出层中的4个sentence的余弦相似度
(5)然后进入softmax层,计算概率分布

image_1cku722id1slh392cr117aa9is4f.png-82.1kB

3.通过以上训练得到了新的词向量,用该词向量去求均值计算句向量。

效果:

作者拿word2vec skipgram, word2vec CBOW, skip-thought3者作为basline来和本文提出的模型在20个数据集上作比较,大部分情况下本文的Siamese CBOW模型取得了最好的效果。

文献二

题目:

### 现有文本嵌入向量库 #### 一、预训练词嵌入模型 存在多种流行的预训练词嵌入模型,这些模型利用大规模语料库进行了训练,可以捕捉词语间的复杂语义关系。 - **Word2Vec**:由Google开发的一种高效算法,通过预测给定单词周围的上下文来学习高质量的分布式词汇表征[^1]。它有两种主要架构——连续词袋(CBOW)和跳字(Skip-Gram),其中后者更擅长于处理罕见词。 - **GloVe (Global Vectors)**:斯坦福大学提出的另一种流行方案,基于全局共现统计信息构建低维实数向量空间,在这个过程中保持了线性子结构特性。相比Word2Vec而言,GloVe倾向于提供更加稳定的性能表现。 这两种方法都属于静态词嵌入技术范畴,即无论环境如何变化,同一个词总是映射到相同的向量上[^3]。 ```python from gensim.models import KeyedVectors # 加载预先训练好的 Google News Word2Vec 模型 word_vectors = KeyedVectors.load_word2vec_format('path_to_model/GoogleNews-vectors-negative300.bin', binary=True) # 获取 "king" 的词向量 vector_king = word_vectors['king'] print(vector_king.shape) ``` #### 二、上下文化词嵌入模型 近年来兴起了一种新的范式—上下文化的词嵌入(contextualized embeddings), 它们能够根据具体的使用场景动态调整同一词汇的不同含义表示形式。 - **ELMo (Embeddings from Language Models)**:首次引入了双向LSTM网络用于生成具有方向性的字符级特征序列,并将其拼接起来形成最终的词级别表达。这种方法允许不同位置上的相同单词拥有不同的内部状态转移路径,从而更好地反映了自然语言的真实情况。 - **BERT (Bidirectional Encoder Representations from Transformers)**:采用Transformer编码器堆叠而成的强大框架,实现了真正意义上的双向注意力机制,使得每一个token都能充分感知其前后依赖关系。此外,由于采用了掩码语言建模(masked language modeling, MLM)任务作为辅助目标函数之一,因此即使面对未见过的新颖组合也能给出合理的推测结果。 对于上述提到的各种类型的文本嵌入工具包来说,通常都会配套相应的API接口供开发者调用,比如`transformers`库就支持一键加载官方发布的多版本BERT权重文件并执行推理操作: ```python from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') text = 'Here is some text to encode.' encoded_input = tokenizer(text, return_tensors='pt') output = model(**encoded_input)[0] print(output.size()) # 输出维度应为 [batch_size=1, sequence_length, hidden_dim=768] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值