【自然语言处理】word2vec

目录

[1 什么是word2vec?](#1 什么是word2vec?)

[2 模型结构](#2 模型结构)

[2.1 CBOW(连续的词袋模型)](#2.1 CBOW(连续的词袋模型))

[2.1.1 网络结构](#2.1.1 网络结构)

[2.1.2 代码](#2.1.2 代码)

[2.1.3 运行结果](#2.1.3 运行结果)

[2.2 Skip-gram(跳字模型)](#2.2 Skip-gram(跳字模型))

[2.2.1 网络结构](#2.2.1 网络结构)

[2.2.2 代码](#2.2.2 代码)

[2.2.3 运行结果](#2.2.3 运行结果)

参考资料


本人为小白,欢迎补充!

1 什么是word2vec?

Word2Vec 是一个用于将单词表示为向量的算法,是由 Google 的研究人员在 2013 年开发的。它基于神经网络模型,通过训练大量的语料库数据来学习单词之间的语义和语法关系。它通过学习大量文本语料库中的单词上下文信息,将每个单词映射到一个连续的向量空间中。Word2Vec 可以生成高维空间中的向量表示,使得具有相似含义的单词在向量空间中距离较近,从而可以实现对单词的语义相似性分析和文本挖掘任务。它被广泛应用于自然语言处理和机器学习领域,包括词义相似度计算、文本分类、情感分析等任务。这样的向量表示具有许多有用的性质,例如可以计算单词之间的相似度、执行词语的聚类等。

2 模型结构

Word2Vec 有两种主要的结构:CBOW(Continuous Bag-of-Words)和 Skip-gram。无论是 CBOW 还是 Skip-gram,Word2Vec 使用神经网络进行训练。训练过程中,模型通过最大化目标函数(例如,使用负对数似然函数)来调整单词的向量表示,以便在语义上相似的单词在向量空间中更加靠近。最终,Word2Vec 生成了一个具有语义信息的单词向量空间,可以用于各种自然语言处理任务。

2.1 CBOW(连续的词袋模型)

CBOW(Continuous Bag-of-Words)模型的目标是根据上下文单词来预测当前单词。

在CBOW模型中,首先将上下文单词的向量表示作为输入,通过一个隐藏层进行线性组合,然后通过一个输出层进行softmax操作,以预测当前单词的概率分布。

具体来说,CBOW模型将上下文单词的向量表示进行求和或平均,得到一个综合的表示,然后将该表示传递给隐藏层。隐藏层的神经元通过线性组合和非线性激活函数(通常是sigmoid或ReLU)将该综合表示转换为一个新的向量表示。最后,输出层使用softmax函数将隐藏层的输出转换为当前单词的概率分布。

CBOW模型适用于小型语料库和频繁出现的单词,因为它能够较好地捕捉常见单词的上下文信息,并生成相应的单词向量表示。

2.1.1 网络结构

CBOW网络结构由输入层、隐藏层和输出层组成。

  • 输入层:输入层接收上下文单词的独热编码作为输入。每个单词都被编码为一个长度为词汇量大小的向量,其中只有一个元素为1,其余元素都为0。
  • 隐藏层:隐藏层的节点数是根据设计的网络规模确定的。每个隐藏层节点都与输入层的所有节点连接,并且使用全连接的权重矩阵进行加权求和。隐藏层可以将输入的上下文单词的向量表示组合成一个更高维度的向量表示。
  • 输出层:输出层是一个softmax分类器,它根据隐藏层的向量表示预测中心单词的概率。输出层的节点数等于词汇量大小,每个节点表示一个单词。通过softmax函数将隐藏层的向量表示映射为一个概率分布。

CBOW网络的训练目标是最大化预测中心单词的概率。通过反向传播算法,根据预测概率和实际标签之间的误差,可以更新权重矩阵和隐藏层的向量表示,以使得预测结果更接近实际标签。整个训练过程可以使用随机梯度下降等优化算法进行迭代更新。

2.1.2 代码

(待更新)

2.1.3 运行结果

(待更新)

2.2 Skip-gram(跳字模型)

Skip-gram(跳字模型)的目标与CBOW模型不同,它是根据当前单词预测上下文单词。

在Skip-gram模型中,对于给定的一个单词,它的上下文单词作为输入,而当前单词则是要预测的目标。具体来说,Skip-gram模型通过将当前单词的向量表示传递给隐藏层,然后通过输出层生成与目标单词相对应的上下文单词的概率分布。

Skip-gram模型使用了层级softmax或负采样的方法来处理大型词汇表,因为计算一个单词的概率分布需要对所有的词汇表进行遍历,这在大型词汇表中是非常耗时的。

Skip-gram模型适用于大型语料库和罕见单词,因为它能够更好地捕捉罕见单词的上下文信息,并生成相应的单词向量表示。

2.2.1 网络结构

Skip-gram网络结构也由输入层、隐藏层和输出层组成。

  • 输入层:输入层接收中心单词的独热编码作为输入。每个单词都被编码为一个长度为词汇量大小的向量,其中只有一个元素为1,其余元素都为0。
  • 隐藏层:隐藏层的节点数是根据设计的网络规模确定的。每个隐藏层节点都与输入层的所有节点连接,并且使用全连接的权重矩阵进行加权求和。隐藏层可以将输入的中心单词的向量表示映射为一个更低维度的向量表示。
  • 输出层:输出层是一个softmax分类器,它根据隐藏层的向量表示预测上下文单词的概率。输出层的节点数等于词汇量大小,每个节点表示一个单词。同样,通过softmax函数将隐藏层的向量表示映射为一个概率分布。

Skip-gram网络的训练目标是最大化预测上下文单词的概率。与CBOW不同,Skip-gram算法通过中心单词来预测上下文单词,因此训练样本是中心单词与其周围的上下文单词对。通过反向传播算法,根据预测概率和实际标签之间的误差,可以更新权重矩阵和隐藏层的向量表示,以使得预测结果更接近实际标签。整个训练过程可以使用随机梯度下降等优化算法进行迭代更新。

2.2.2 代码

(待更新)

2.2.3 运行结果

(待更新)

参考资料

  1. NLP必学:Word2Vec、Glove和ELMO_word2vec glove-CSDN博客
  2. Word2Vec-CSDN博客
  3. Skip-Gram神经网络体系结构_skip-gram网络结构-CSDN博客
  4. 论文|万物皆可Vector之Word2vec:2个模型、2个优化及实战使用_w2vti模型架构-CSDN博客
相关推荐
2601_95575962几秒前
code0 gpt-image-2 场景相关:广告投放素材快速生成流程
人工智能·gpt
方华世界9 分钟前
企业级Java AI Agent应用平台
java·开发语言·人工智能
aqi0012 分钟前
15天学会AI应用开发(十三)上下文与RAG的阶段性总结
人工智能·python·大模型·ai编程·ai应用
m沐沐18 分钟前
【深度学习】dlib 人脸关键点实时疲劳检测
人工智能·深度学习·计算机视觉·疲劳检测·关键点检测·人脸检测·dlib
一个处女座的程序猿21 分钟前
AI之Tool:Flint(酷炫可编辑图表)的简介、安装和使用方法、案例应用之详细攻略
人工智能·chart·flint
阿演26 分钟前
DataDjinn v0.2.11:SQL 编辑、AI 协作和表格操作继续打磨
数据库·人工智能·sql
私人珍藏库32 分钟前
[Android] PocketPal -本地离线AI助手+大模型部署神器
android·人工智能·app·软件·多功能
止语Lab33 分钟前
「诚实」是新的「聪明」——Claude 4.8 对 AI 评价体系的三重追问
人工智能
智慧景区与市集主理人42 分钟前
巨有科技智慧康养|避开康养文旅内卷,做能变现的疗愈数字化
大数据·人工智能·科技