欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

2025/2/5 18:10:28 来源:https://blog.csdn.net/u014608435/article/details/145405582  浏览:    关键词:【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

文章目录

  • 介绍
  • GloVe 介绍
    • 核心思想
    • 共现矩阵
      • 1. 共现矩阵的定义
      • 2. 共现概率矩阵的定义
      • 3. 共现概率矩阵的意义
      • 4. 共现概率矩阵的构建步骤
      • 5. 共现概率矩阵的应用
      • 6. 示例
      • 7. 优缺点
        • 优点
        • 缺点
      • **总结**
    • 目标函数
    • 训练过程
      • 使用预训练的GloVe词向量
    • 优点
    • 应用
    • 总结

个人主页:道友老李
欢迎加入社区:道友老李的学习社区

介绍

**自然语言处理(Natural Language Processing,NLP)**是计算机科学领域与人工智能领域中的一个重要方向。它研究的是人类(自然)语言与计算机之间的交互。NLP的目标是让计算机能够理解、解析、生成人类语言,并且能够以有意义的方式回应和操作这些信息。

NLP的任务可以分为多个层次,包括但不限于:

  1. 词法分析:将文本分解成单词或标记(token),并识别它们的词性(如名词、动词等)。
  2. 句法分析:分析句子结构,理解句子中词语的关系,比如主语、谓语、宾语等。
  3. 语义分析:试图理解句子的实际含义,超越字面意义,捕捉隐含的信息。
  4. 语用分析:考虑上下文和对话背景,理解话语在特定情境下的使用目的。
  5. 情感分析:检测文本中表达的情感倾向,例如正面、负面或中立。
  6. 机器翻译:将一种自然语言转换为另一种自然语言。
  7. 问答系统:构建可以回答用户问题的系统。
  8. 文本摘要:从大量文本中提取关键信息,生成简短的摘要。
  9. 命名实体识别(NER):识别文本中提到的特定实体,如人名、地名、组织名等。
  10. 语音识别:将人类的语音转换为计算机可读的文字格式。

NLP技术的发展依赖于算法的进步、计算能力的提升以及大规模标注数据集的可用性。近年来,深度学习方法,特别是基于神经网络的语言模型,如BERT、GPT系列等,在许多NLP任务上取得了显著的成功。随着技术的进步,NLP正在被应用到越来越多的领域,包括客户服务、智能搜索、内容推荐、医疗健康等。

GloVe 介绍

GloVe(Global Vectors for Word Representation)是一种用于获取词向量的无监督学习算法,由斯坦福大学的Jeffrey Pennington、Richard Socher和Christopher D. Manning于2014年提出。GloVe通过结合全局统计信息和局部上下文信息来生成词向量,旨在捕捉词语之间的语义关系。

核心思想

GloVe的核心思想是利用词与词之间的共现概率来捕捉语义信息。具体来说,GloVe通过构建一个共现矩阵(co-occurrence matrix)来记录词语在语料库中共同出现的频率。然后,通过优化一个目标函数,使得词向量能够反映这些共现关系。

共现矩阵

共现概率矩阵(Co-occurrence Probability Matrix)是自然语言处理中用于捕捉词语之间关系的一种重要工具。它记录了词语在特定上下文窗口中共同出现的频率或概率,是许多词向量模型(如GloVe)的基础。


1. 共现矩阵的定义

共现矩阵 X X X 是一个 V × V V \times V V×V 的矩阵,其中 V V V 是词汇表的大小。矩阵中的每个元素 X i j X_{ij} Xij 表示词语 i i i 和词语 j j j 在某个上下文窗口内共同出现的次数。

  • 上下文窗口:通常定义一个固定大小的窗口(例如,窗口大小为5表示当前词左右各5个词的范围),统计词语在这个窗口内共同出现的次数。
  • 对称性:共现矩阵通常是对称的,即 X i j = X j i X_{ij} = X_{ji} Xij=Xji,因为词语 i i i j j j 共同出现的次数与词语 j j j i i i 共同出现的次数相同。

2. 共现概率矩阵的定义

共现概率矩阵是在共现矩阵的基础上,将共现次数转化为概率。具体来说,共现概率矩阵 P P P 中的每个元素 P i j P_{ij} Pij 表示词语 j j j 在词语 i i i 的上下文中出现的条件概率:

P i j = P ( j ∣ i ) = X i j X i P_{ij} = P(j|i) = \frac{X_{ij}}{X_i} Pij=P(ji)=XiXij

其中:

  • X i j X_{ij} Xij 是词语 i i i 和词语 j j j 共同出现的次数。
  • X i = ∑ k = 1 V X i k X_i = \sum_{k=1}^{V} X_{ik} Xi=k=1VXik 是词语 i i i 与所有其他词语共同出现的总次数。

3. 共现概率矩阵的意义

共现概率矩阵的核心思想是通过词语之间的共现概率来捕捉语义关系。例如:

  • 如果 P i j P_{ij} Pij 很高,说明词语 j j j 经常出现在词语 i i i 的上下文中,两者可能有较强的语义关联。
  • 如果 P i j P_{ij} Pij 很低,说明词语 j j j 很少出现在词语 i i i 的上下文中,两者可能没有明显的语义关联。

通过分析共现概率矩阵,可以发现词语之间的语义相似性、类比关系(如“国王-男人+女人=女王”)等。


4. 共现概率矩阵的构建步骤

  1. 定义词汇表:从语料库中提取所有唯一的词语,构建词汇表 V V V
  2. 定义上下文窗口:选择一个固定大小的窗口(例如,窗口大小为5)。
  3. 统计共现次数:遍历语料库,统计每对词语在窗口内共同出现的次数,填充共现矩阵 X X X
  4. 计算共现概率:对共现矩阵 X X X 进行归一化,计算共现概率矩阵 P P P

5. 共现概率矩阵的应用

共现概率矩阵是许多词向量模型的基础,例如:

  • GloVe:利用共现概率矩阵来优化词向量,使得词向量能够反映词语之间的共现关系。
  • Word2Vec:虽然没有显式使用共现矩阵,但其Skip-gram模型本质上也是在捕捉词语之间的共现关系。
  • 主题模型:共现矩阵可以用于构建主题模型,如LDA(Latent Dirichlet Allocation)。

6. 示例

假设有一个简单的语料库:

"I like deep learning."
"I like NLP."
"I enjoy learning."

定义词汇表 V = { I , l i k e , d e e p , l e a r n i n g , N L P , e n j o y } V = \{I, like, deep, learning, NLP, enjoy\} V={I,like,deep,learning,NLP,enjoy},窗口大小为2。

共现矩阵 X X X 可能如下(简化示例):

IlikedeeplearningNLPenjoy
I021111
like201110
deep110100
learning111001
NLP110000
enjoy100100

共现概率矩阵 P P P 可以通过归一化得到。例如,对于词语 “I”:
P ( like ∣ I ) = X I , like X I = 2 6 ≈ 0.33 P(\text{like}|I) = \frac{X_{I,\text{like}}}{X_I} = \frac{2}{6} \approx 0.33 P(likeI)=XIXI,like=620.33


7. 优缺点

优点
  • 直观且易于理解。
  • 能够捕捉词语之间的全局统计信息。
缺点
  • 矩阵维度高( V × V V \times V V×V),存储和计算成本大。
  • 对于稀疏矩阵,可能需要降维或优化。

总结

共现概率矩阵是自然语言处理中一种重要的统计工具,能够捕捉词语之间的语义关系。它是许多词向量模型(如GloVe)的基础,广泛应用于文本分析、语义建模等任务。

目标函数

GloVe的目标函数如下:

J = ∑ i , j = 1 V f ( X i j ) ( w i T w ~ j + b i + b ~ j − log ⁡ X i j ) 2 J = \sum_{i,j=1}^{V} f(X_{ij}) (w_i^T \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij})^2 J=i,j=1Vf(Xij)(wiTw~j+bi+b~jlogXij)2

其中:

  • w i w_i wi w ~ j \tilde{w}_j w~j 是词语 i i i j j j 的词向量。
  • b i b_i bi b ~ j \tilde{b}_j b~j 是偏置项。
  • f ( X i j ) f(X_{ij}) f(Xij) 是一个权重函数,用于减少高频词对目标函数的过度影响。

权重函数 f ( X i j ) f(X_{ij}) f(Xij) 通常定义为:

f ( X i j ) = { ( X i j x max ) α if  X i j < x max 1 otherwise f(X_{ij}) = \begin{cases} \left(\frac{X_{ij}}{x_{\text{max}}}\right)^\alpha & \text{if } X_{ij} < x_{\text{max}} \\ 1 & \text{otherwise} \end{cases} f(Xij)={(xmaxXij)α1if Xij<xmaxotherwise

其中, x max x_{\text{max}} xmax α \alpha α 是超参数。

训练过程

  1. 构建共现矩阵:从语料库中统计词语的共现频率,构建共现矩阵。
  2. 初始化词向量:随机初始化词向量和偏置项。
  3. 优化目标函数:使用梯度下降法或其他优化算法最小化目标函数,更新词向量和偏置项。

使用预训练的GloVe词向量

from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec# 构建glove预训练词向量文件
# 传绝对路径
glove_file = datapath(r'D:\Projects\课程资料\自然语言处理(NLP)\学习\data\glove.6B.100d.txt')
worde2vec_glove_file = get_tmpfile('glove.6B.100d.word2vec.txt')
# 转化  (400000, 100)
glove2word2vec(glove_file, worde2vec_glove_file)model = KeyedVectors.load_word2vec_format(worde2vec_glove_file)
model.most_similar('banana')

在这里插入图片描述

model.most_similar(positive=['woman', 'king'], negative=['man'])

在这里插入图片描述

优点

  • 全局信息:GloVe利用了全局的共现统计信息,能够捕捉到词语之间的全局关系。
  • 高效性:相比于传统的词向量模型(如Word2Vec),GloVe在训练过程中更加高效。
  • 可解释性:GloVe生成的词向量具有较好的可解释性,能够反映词语之间的语义关系。

应用

GloVe生成的词向量可以广泛应用于各种自然语言处理任务,如文本分类、情感分析、机器翻译、问答系统等。

总结

GloVe是一种强大的词向量表示方法,通过结合全局统计信息和局部上下文信息,能够生成高质量的词向量。它在自然语言处理领域有着广泛的应用,并且由于其高效性和可解释性,受到了学术界和工业界的广泛关注。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com