PyTorch 实战:从零搭建 CBOW 模型,轻松生成高质量词向量

在自然语言处理(NLP)领域,词向量是非常基础且重要的概念,它能将文本中的词语转化为计算机可理解的数值向量。而 CBOW(Continuous Bag-of-Words)模型是获取词向量的经典方法之一,今天我们就来详细介绍如何使用 PyTorch 框架实现 CBOW 模型,并训练得到词向量。​

一、CBOW 模型原理简介​

CBOW 模型的核心思想是根据上下文词语来预测中间的目标词语。比如在句子 “People create programs to direct processes” 中,如果我们把 “programs” 作为目标词,那么它的上下文可以是 “People”“create”“to”“direct”(这里我们设置上下文窗口大小为 2,即目标词左右各 2 个词)。模型通过学习这种上下文与目标词之间的关系,最终得到每个词语对应的词向量。​

二、代码实现步骤详解​

1. 导入所需库​

首先,我们需要导入实现模型所需的各种库,包括 PyTorch 相关库用于构建和训练模型、numpy 用于数据处理、tqdm 用于显示训练进度等。​

import torch.optim as optim
import numpy as np
import torch
import torch.nn.functional as F
from torch import nn
from tqdm import tqdm

2. 数据预处理​

数据预处理是模型训练的基础,这一步我们需要准备训练数据,包括确定上下文窗口大小、处理原始文本、构建词汇表以及创建词语与索引之间的映射关系。​

(1)设置上下文窗口大小和原始文本​

我们设置上下文窗口大小CONTEXT_SIZE = 2,意味着每个目标词的上下文是其左右各 2 个词。然后定义一段原始文本,用于后续的模型训练。​

CONTEXT_SIZE = 2
raw_text = """We are about to study the idea of a computational process.
Computational processes are abstract beings that inhabit computers.
As they evolve, processes manipulate other abstract things called data.
The evolution of a process is directed by a pattern of rules
called a program. People create programs to direct processes. In effect,
we conjure the spirits of the computer with our spells.""".split()

这里使用split()方法将原始文本按空格分割成单词列表。​

(2)构建词汇表和映射关系​

词汇表是所有不重复

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值