郭震 AI公众号:郭震AI

13 从零学NLP系列教程:生成词向量之GloVe

发布日期:

最近更新:

分类: NLP小白

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点6 个
图文要点6 张
正文规模2.1k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 6 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

GloVe流程图查看大图
GloVe流程图

GloVe 把全局共现统计和向量学习结合起来。理解它时,重点看共现概率如何变成词之间的语义关系。

GloVe实操核对图查看大图
GloVe实操核对图

我会先确认语料规模和共现窗口。语料太小或领域不匹配,训练出的词向量会很脆弱。

在前一篇教程中,我们介绍了Word2Vec模型,这是一个非常流行的生成词向量的方法。今天,我们将继续探讨一种替代的词向量生成方法——GloVe(Global Vectors for Word Representation)。

GloVe简介

GloVe是由斯坦福大学的研究者于2014年提出的。与Word2Vec不同,GloVe的主要思想是利用词与词之间的全局统计信息来生成词向量。具体来说,GloVe通过构建词频矩阵,利用词与上下文之间的共现关系,从而获得词的向量表示。

GloVe词向量判断卡查看大图
GloVe词向量判断卡

学习 GloVe 时,先看共现矩阵、词频权重、向量训练目标、相似度和与 Word2Vec 的区别。

GloVe模型的核心假设是:对于任何两个词ij,它们的向量表示vi\mathbf{v}_ivj\mathbf{v}_j之间的关系与它们在语料库中共现的频率存在一定的对应关系。其基本思想可以用以下公式表示:

PijPiPj=viTvj+bi+bj\frac{P_{ij}}{P_{i}P_{j}} = \mathbf{v}_i^T \mathbf{v}_j + b_i + b_j

其中:

  • PijP_{ij}是词i和词j的共现概率;
  • PiP_iPjP_j是词i和词j的单独出现概率;
  • vi\mathbf{v}_ivj\mathbf{v}_j是词i和词j的向量表示;
  • bib_ibjb_j是偏置项。

通过最小化上述目标函数,GloVe能够学习到词向量。

GloVe的实现步骤

接下来,我们将从以下几个方面详细介绍GloVe的实现步骤:

自然语言处理阅读地图卡查看大图
自然语言处理阅读地图卡

看完《从零学NLP系列教程:生成词向量之GloVe》后,建议用一分钟复盘:关键概念是否分清、练习步骤是否可复现、结论能不能换成自己的话。

  1. 构建共现矩阵
  2. 训练词向量
  3. 使用生成的词向量

1. 构建共现矩阵

首先,我们需要处理语料库,生成词与上下文的共现矩阵。假设我们有一段文本,以下是一个简单的例子:

我 爱 自然 语言 处理
自然 语言 处理 是 一个 非常 有趣 的 领域

我们希望统计每个词与其他词的共现次数。假设我们设置上下文窗口为1。

自然 语言 处理 非常 有趣 领域
自然 0 1 1 0 0 0 0 0 0
语言 1 0 1 0 0 0 0 0 0
处理 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
非常 0 0 0 0 0 0 0 0 0
有趣 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
领域 0 0 0 0 0 0 0 0 0

在这个过程中,我们会记录每对词的共现次数以填充共现矩阵。

2. 训练词向量

获得共现矩阵后,我们需要通过优化算法来训练词向量。在这一步,GloVe使用了一个损失函数来最小化词与共现概率的差异。如下所示的损失函数:

J=i=1Vj=1Vf(Xij)(viTvj+bi+bjlog(Xij))2J = \sum_{i=1}^{V} \sum_{j=1}^{V} f(X_{ij}) \left( \mathbf{v}_i^T \mathbf{v}_j + b_i + b_j - \log(X_{ij}) \right)^2

其中:

  • XijX_{ij}是共现矩阵的值;
  • f(Xij)f(X_{ij})是一个权重函数,通常用来减少稀疏共现对损失的影响。

我们可以使用Python和GloVe库来实现这个过程,以下是一个简单的代码示例:

import numpy as np
from glove import Corpus, Glove

# 构建语料库
sentences = [
    ['我', '爱', '自然', '语言', '处理'],
    ['自然', '语言', '处理', '是', '一个', '非常', '有趣', '的', '领域']
]

corpus = Corpus()
corpus.fit(sentences, window=5)
glove = Glove(no_components=10, learning_rate=0.05)
glove.fit(corpus.matrix, epochs=100, no_threads=4, verbose=True)

# 保存模型
glove.save('glove.model')

3. 使用生成的词向量

训练完成后,我们就可以使用生成的词向量进行各种自然语言处理任务,例如:

  • 文本分类
  • 情感分析
  • 语义相似度计算

下面是如何加载训练好的模型并查询词向量的示例代码:

# 加载模型
from glove import Glove

glove = Glove.load('glove.model')

# 查询词向量
word_vector = glove.word_vectors[glove.dictionary['自然']]
print(word_vector)

# 查询相似词
similar_words = glove.most_similar('自然')
print(similar_words)
从零学NLP系列教程:生成词向量之GloVe应用复盘卡查看大图
从零学NLP系列教程:生成词向量之GloVe应用复盘卡

复习《从零学NLP系列教程:生成词向量之GloVe》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。

从零学NLP系列教程:生成词向量之GloVe应用检查卡查看大图
从零学NLP系列教程:生成词向量之GloVe应用检查卡

练习《从零学NLP系列教程:生成词向量之GloVe》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。

总结

在本节中,我们学习了GloVe模型的基本原理和实现步骤。从构建共现矩阵,到使用优化算法训练词向量,再到应用这些词向量,我们对GloVe有了一个全面的

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

从零学NLP系列教程:生成词向量之GloVe适合谁读?

这是 自然语言处理入门 系列第 13 / 30 篇,适合正在学习自然语言处理入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇自然语言处理入门教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...