自然语言处理第3天:Word2Vec模型

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 自然语言处理第3天:Word2Vec模型

什么是语言模型

语言模型的工作原理基于统计学习和概率论,其目标是捕捉语言的概率分布,即我们通过不同的任务训练模型,都是为了使语言模型获取这种概率关系,如文本生成模型,它会判断下一个应该生成什么词,一步步生成完整的文本序列

Word2Vec介绍

介绍

Word2Vec是一个经典的语言模型,它的模型参数是一个词嵌入向量矩阵,它的训练目的就是不断优化这个矩阵,以获得高性能的词嵌入向量矩阵,它有两个具体实现

  • CBOW模型
  • Skip-Gram模型

他们的区分标准是训练任务的不同,让我们继续看下去吧

CBOW模型

介绍

CBOW模型也叫词袋模型。它的训练任务是:给定某个词的上下文,通过这个上下文来预测这个词

  • CBOW模型的输入与输出数据是one-hot向量
  • 训练过程中会逐步更新参数,也就是词嵌入矩阵

训练过程

  • 数据准备: 首先,需要准备训练数据,其中包含了大量的文本语料。文本数据需要进行分词等预处理,将文本转换为词语序列。
  • 创建上下文窗口: 对于每个目标词语, CBOW模型定义了一个上下文窗口。这个窗口的大小由超参数window指定,表示目标词语左右两侧的词语数目。
  • 构建训练样本: 对于每个目标词语,CBOW模型从其上下文窗口中收集上下文词语。每个训练样本由上下文词语构成,并且目标是预测目标词语。
  • 模型结构:CBOW模型的神经网络结构相对简单。它包括一个嵌入层和一个平均池化层,然后是一个输出层,用于预测目标词语。嵌入层将上下文词语映射到词嵌入向量,平均池化层将这些向量取平均,最后通过输出层进行预测。
  • 训练目标:CBOW模型的训练目标是最大化给定上下文词语的条件概率,即最大化目标词语在给定上下文下的概率。这通常通过最小化负对数似然来实现。
  • 梯度下降: 使用梯度下降或其变种,通过反向传播算法来调整嵌入层的权重,使得模型的预测更接近实际的上下文词语。
  • 重复迭代: 重复以上步骤多次,直到模型收敛到一个合适的状态。每一轮迭代都遍历整个训练数据。

图解训练过程

1.经典CBOW模型结构

2.以下是拿具体例子做的详细讲解

注意

  • 图中的两个输入权重矩阵是相同的,这里只是方便表示而将它们拆开
  • 最终结果就是单词的分布式表示,softmax函数可以展现每个词的概率
  • 我们得到了两个权重矩阵——输入与输出权重矩阵,现在常见的方法是将输出权重矩阵作为我们要的词嵌入矩阵

代码实现

# 导入库
import torch
import torch.nn as nn
# 创建输入向量
c0 = torch.Tensor([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
c1 = torch.Tensor([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
# 创建神经网络层
W_in = nn.Linear(20, 3)
W_out = nn.Linear(3, 20)
softmax = nn.Softmax(dim=0)
# 进行传播
h0 = W_in.forward(c0)
h1 = W_in.forward(c1)
h = 0.5 * (h0 + h1)
s = W_out.forward(h)
out = softmax(s)
# 打印结果
print(out)

Skip-Gram模型

介绍

与CBOW模型不同的是,Skip-Gram模型的训练任务是给定某个词,来预测它的上下文,这点与CBOW正好相反

训练过程

  • 数据准备: 和CBOW一样,需要准备包含大量文本语料的训练数据,并对文本进行分词等预处理。
  • 创建训练样本: 对于每个中心词(目标词语),Skip-gram模型选择一个上下文词语。与CBOW不同,Skip-gram关注的是从中心词到上下文词的映射。训练样本由(中心词,上下文词)组成。
  • 模型结构: Skip-gram模型同样包括一个嵌入层和一个输出层。嵌入层将中心词映射到词嵌入向量,然后通过输出层进行预测。与CBOW相反,Skip-gram模型的输出层通常是一个softmax层,用于计算给定中心词的上下文词的条件概率。
  • 训练目标: Skip-gram模型的训练目标是最大化给定中心词的条件概率,即最大化上下文词在给定中心词的情况下的概率。
  • 梯度下降: 使用梯度下降或其变种,通过反向传播算法来调整嵌入层的权重和输出层的权重,以最小化损失函数。
  • 重复迭代: 重复以上步骤多次,直到模型收敛到一个合适的状态。每一轮迭代都遍历整个训练数据。

图解训练过程

Skip-gram的训练过程就是CBOW倒转过来,如图,就不具体做详细说明了

代码

以下是基于CBOW模型的调用了库的示例代码

from gensim.models import Word2Vec
from nltk.tokenize import word_tokenize
# 示例文本数据
corpus = [
    "This is the first sentence.",
    "Word embeddings are interesting.",
    "Word2Vec is a popular embedding model.",
]
# 对文本进行分词
tokenized_corpus = [word_tokenize(sentence.lower()) for sentence in corpus]
# 训练Word2Vec模型
model = Word2Vec(sentences=tokenized_corpus, vector_size=100, window=5, min_count=1, workers=4)
# 获取"word"的词向量
word_vector = model.wv["word"]
# 打印词向量
print(f"Embedding for 'word': {word_vector}")

感谢阅读,觉得有用的话就订阅下《自然语言处理NLP》专栏吧,有错误也欢迎指出

相关文章
|
11天前
|
机器学习/深度学习 自然语言处理 PyTorch
从零开始构建nlp情感分析模型!
本教程介绍了如何使用PyTorch和Hugging Face的Transformers库构建一个情感分析模型。主要内容包括导入所需库、读取训练数据集、加载预训练的BERT模型和分词器、定义情感数据集类、划分训练集和验证集、创建数据加载器、设置训练参数、训练模型、评估模型性能以及定义和测试预测函数。通过这些步骤,可以实现一个简单而有效的情感分析模型。
41 2
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
69 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习中的Transformer模型及其在自然语言处理中的应用
【10月更文挑战第6天】探索深度学习中的Transformer模型及其在自然语言处理中的应用
88 0
|
1月前
|
机器学习/深度学习 自然语言处理 异构计算
【NLP自然语言处理】初识深度学习模型Transformer
【NLP自然语言处理】初识深度学习模型Transformer
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【NPL自然语言处理】带你迅速了解传统RNN模型
【NPL自然语言处理】带你迅速了解传统RNN模型
|
3月前
|
自然语言处理
【NLP】from glove import Glove的使用、模型保存和加载
使用 from glove import Glove 进行词向量训练、保存和加载的基本示例。
51 2
【NLP】from glove import Glove的使用、模型保存和加载
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch与Hugging Face Transformers:快速构建先进的NLP模型
【8月更文第27天】随着自然语言处理(NLP)技术的快速发展,深度学习模型已经成为了构建高质量NLP应用程序的关键。PyTorch 作为一种强大的深度学习框架,提供了灵活的 API 和高效的性能,非常适合于构建复杂的 NLP 模型。Hugging Face Transformers 库则是目前最流行的预训练模型库之一,它为 PyTorch 提供了大量的预训练模型和工具,极大地简化了模型训练和部署的过程。
167 2
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展
深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。
122 6
|
3月前
|
机器学习/深度学习 自然语言处理 数据处理
|
3月前
|
自然语言处理
【NLP】如何实现快速加载gensim word2vec的预训练的词向量模型
本文探讨了如何提高使用gensim库加载word2vec预训练词向量模型的效率,提出了三种解决方案:保存模型以便快速重新加载、仅保存和加载所需词向量、以及使用Embedding工具库代替word2vec原训练权重。
211 2

热门文章

最新文章