96SEO 2026-02-23 11:17 13
下面这张图就形象地呈现了词向量的内涵:把词转化为向量从而捕捉词与词之间的语义和句法关系使得具有相似含义或相关性的词语在向量空间中距离较近。

将词映射到向量空间时会将这个词和它周围的一些词语一起学习这就使得具有相似语义的词在向量空间中靠得更近。
这样我们就可以通过向量之间的距离来度量词之间的相似性了。
稠密向量中的元素大部分为非零值。
稠密向量通常具有较低的维度同时能够捕捉到更丰富的信息。
Word2Vec就是一种典型的稠密向量表示。
稠密向量能够捕捉词与词之间的语义和语法关系使得具有相似含义或相关性的词在向量空间中距离较近。
在自然语言处理中稠密向量通常更受欢迎因为它们能够捕捉到更多的信息同时计算效率更高。
下图直观地展示了二者的区别。
通过Word2Vec学习得到的向量可以捕捉到词与词之间的语义和语法关系。
而且这个算法比以前的方法更加高效能够轻松地处理大规模的文本数据。
因此Word2Vec迅速流行起来。
具体来说Word2Vec有两种主要实现方式:CBOW(Continuous
Words有时翻译为“连续词袋”)模型和Skip-Gram(有时翻译为“跳字”)模型如下图所示。
CBOW模型通过给定上下文词(也叫“周围词”)来预测目标词(也叫“中心词”);而Skip-Gram模型则相反通过给定目标词来预测上下文词。
这两个模型都是通过训练神经网络来学习词向量的。
在训练过程中我们通过最小化预测词和实际词之间的损失来学习词向量。
当训练完成后词向量可以从神经网络的权重中提取出来。
在PyTorch中nn.Embedding是nn中的一个模块它用于将离散的索引(通常是单词在词汇表中的索引)映射到固定大小的向量空间。
在自然语言处理任务中词嵌入是将单词表示为高维向量的一种常见方法。
词嵌入可以捕捉单词之间的相似性、语义关系等。
在训练过程中嵌入层会自动更新权重以最小化损失函数从而学习到有意义的词向量。
:词汇表的大小即唯一单词的数量。
embedding_dim:词嵌入向量的维度。
使用嵌入层有以下优点。
更简洁的代码:与线性层相比嵌入层提供了更简洁、更直观的表示词嵌入的方式。
这使得代码更容易理解和维护。
更高的效率:嵌入层比线性层更高效因为它不需要进行矩阵乘法操作。
它直接从权重矩阵中查找对应的行(嵌入向量)这在计算上更高效。
更容易训练:嵌入层不需要将输入转换为One-Hot编码后的向量。
我们可以直接将单词索引作为输入从而减少训练的计算复杂性。
create_skipgram_dataset(sentences,
将相邻单词与当前单词作为一组训练数据data.append((neighbor,
create_skipgram_dataset(sentences)
embedding_size):super(SkipGram,
从词汇表大小到嵌入大小的嵌入层权重矩阵self.input_to_hidden
从嵌入大小到词汇表大小的线性层权重矩阵self.hidden_to_output
self.hidden_to_output(hidden_layer)
optim.SGD(skipgram_model.parameters(),
torch.tensor([word_to_idx[target]],
torch.tensor([word_to_idx[context]],
warnings.filterwarnings(ignore)
FontProperties(fnameSimHei.ttf,
#plt.rcParams[font.family][SimHei]
#plt.rcParams[font.sans-serif][SimHei]
#plt.rcParams[axes.unicode_minus]False
{skipgram_model.input_to_hidden.weight[idx].detach().numpy()})#
#plt.rcParams[font.family][SimHei]
#plt.rcParams[font.sans-serif][SimHei]
#plt.rcParams[axes.unicode_minus]False
skipgram_model.input_to_hidden.weight[idx].detach().numpy()
weight的维度为[voc_size,embedding_size]。
因此当打印和可视化权重时需要使用weight[idx]
PyTorch的嵌入层中可以通过embedding_size参数来调整它的维度。
此处嵌入层的维度是2但刚才说过处理真实语料库时嵌入层的维度一般来说有几百个这样才可以习得更多的语义知识。
其实几百维的词向量对于动辄拥有上万甚至十万、百万个词的词汇表(《辞海》的词条数总条目数近13万)来说已经算是很“低”维、很稠密了。
所以词向量或者说词嵌入的学习过程就是通过神经网络来习得包含词的语义信息的向量这个向量通常是几维到几百维不等然后可以降维进行展示以显示词和词之间的相似程度。
如图所示。
这些词向量捕捉了词与词之间的关系之后具有相似含义或用法的词在向量空间中会靠得更近。
我们可以使用这些词向量作为其他自然语言处理任务(如文本分类、文本相似度比较、命名实体识别等)的输入特征。
Representation和fastText也都是这样使用的。
我们可以拿到别人已经训练好的词向量G1oVe和fastText都提供现成的词向量供我们下载作为输入来完成我们的下游NLP任务;也可以利用PyTorch
的nn.Embedding来针对特定语料库从头开始词嵌入的学习然后再把学到的词向量也就是经过nn.Embedding的参数处理后的序列信息作为输入完成下游NLP任务。
Word2Vec对整个自然语言处理领域产生了巨大的影响。
后来的许多词嵌入方法如GloVe
这两种被广泛应用的词向量都受到了Word2Vec的启发。
如今Word2Vec已经成为词嵌入领域的基石。
它的出现使得更复杂的NLP任务如文本分类、情感分析、命名实体识别、机器翻译等处理起来更轻松。
这主要是因为
(1)词向量的大小是固定的。
Word2Vec这种“在全部语料上一次习得然后反复使用”的词向量被称为静态词向量。
它为每个单词生成一个固定大小的向量这限制了模型捕捉词义多样性的能力。
在自然语言中许多单词具有多种含义但
Word2Vec无法为这些不同的含义生成多个向量表示。
(2)无法处理未知词汇。
Word2Vec只能为训练过程中出现过的单词生成词向量。
对于未知或低频词汇Word2Vec无法生成合适的向量表示。
虽然可以通过拼接词根等方法来解决这个问题但这并非Word2Vec
值得注意的是Word2Vec本身并不是一个完善的语言模型因为语言模型的目标是根据上下文预测单词而Word2Vec主要关注生成有意义的词向量。
尽管
模型在训练过程中学习了单词之间的关系但它们并未直接对整个句子的概率分布进行建模。
而后来的模型如基于循环神经网络、长短期记忆网络和
的模型则通过对上下文进行建模更好地捕捉到了语言结构从而成为更为强大的语言模型。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback