网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

学习Skipgram,如何轻松捕捉?

GG网络技术分享 2025-11-25 10:26 3


订阅专栏探讨了天然语言处理中词向量的关键性, 详细解析了Word2Vec模型的干活原理,包括Skip-Gram和CBOW两种模型,以及怎么得到词的语义表示。深厚度专栏收录该内容9 篇文章。

下面是 Skipgram 模型的训练代码示例:

        import torch
        from torch.utils.data import DataLoader
        def train_skipgram:
            optimizer = torch.optim.Adam, lr=lr)
            data_loader = DataLoader
            model.to
            model.train
            for epoch in range:
                loss_sum = 0
                for batch in data_loader:
                    optimizer.zero_grad
                    x, y = batch
                    x = x.to
                    y = y.to
                    y_pred = model
                    loss = nn.functional.cross_entropy
                    loss.backward
                    optimizer.step
                    loss_sum += loss.item * len
                loss_avg = loss_sum / len
                print
    

上述代码用 PyTorch 给的 DataLoader 模块来加载数据集,并用交叉熵亏本函数和 Adam 优化器来训练模型。训练时模型会将数据移动到指定的设备上,并在个个 epoch 中计算亏本并geng新鲜参数。训练收尾后输出个个 epoch 的平均亏本。

from sklearn.cluster import KMeans def word_clustering: embeddings = model.W.weight.detach.cpu.numpy kmeans = KMeans.fit clusters = for _ in range] for word, idx in vocab.items: clusters].append return clusters

词向量可视化

用 t-SNE 等降维算法将高大维词向量可视化到二维地方。

捕捉单词语境差不许多性方面 CBOW由于是中dou会用到目标单词.这些个资料,Neng帮我们掌握Word2Vec的核心算法、应用以及怎么通过代码...

Skipgram 模型的向量表示Neng应用于各种天然语言处理任务, 比方说:

前面我讲解了skip-gram模型的输入向量及输出的概率表达,以及我们的目标。我们在《Word Embedding:Skip-Gram模型》中轻巧松介绍了Skip-Gram的原理及架构, 至于Skip-Gram怎么把输入转换为、其间有哪些关键点、面对巨大语料库兴许出现哪些瓶颈等,并没有展开说明。

常用的两种的计算的算法就是CBOW和skip-gram, skip-gram是根据一个中心词生成上下文词,CBOW是根据上下文词生成一个中心词,本文基本上介绍skip-gram。

有了input word以后 我们再定义一个叫Zuoskip_windowskip\\_window的参数,它代表着我们从当前input word的一侧选取词的数量。为了得到这些个权沉, 我们先说说要构建一个完整的神经网络作为我们的 Fake Task,后面再返回来kan通过 Fake Task 我们怎么间接地得到这些个词向量。

前面我讲解了skip-gram模型的输入向量及输出的概率表达,以及我们的目标。在我详细介绍skip-gram模型前,我们先来了解下训练数据的格式。

Skipgram 模型是天然语言处理中的一种模型,用于将单词映射到高大维地方中的向量表示。该模型旨在捕获单词之间的语义关系。Skipgram 模型用神经网络来学单词的向量表示,然后用这些个向量来计算单词之间的差不许多度。

生成训练样本方法如下 它一共有三个参数,batch_size是单词对的个数,skip_window用来决定一个句子上下文的长远度,在生成单词对时会在语料库中先取出一个长远度为 skip_window*2+ 1 连续单词列表,这玩意儿连续的单词列表是上面程序....所谓 word2vec,是指一个映射f,它Neng将单词变成向量表示: vec = f。

        import torch
        import torch.nn as nn
        class Skipgram:
            def __init__:
                super.__init__
                self.vocab_size = vocab_size
                self.emb_size = emb_size
                self.W = nn.Linear
                self.WT = nn.Linear
            def forward:
                y = self.W
                z = self.WT
                return z
    

上述代码定义了一个基于 PyTorch 的 Skipgram 模型,其中 x 是输入单词的 one-hot 向量。模型用两个线性层,分别表示了从 one-hot 向量到向量表示的映射和从向量表示到 one-hot 向量的逆映射。

import torch.nn.functional as F def word_similarity: idx1 = vocab idx2 = vocab emb1 = model.W.weight emb2 = model.W.weight cosine_sim = F.cosine_similarity return cosine_sim.item

单词聚类

根据单词向量之间的差不许多度来对单词进行聚类。

由于Skip-gram是根据目标词预测上下文, 所以它Neng够、应用以及怎么通过代码...

单词之间的差不许多度,差不许多度越巨大表示语义上geng接近。

        from sklearn.manifold import TSNE
        import matplotlib.pyplot as plt
        def visualize_embeddings:
            embeddings = model.W.weight.detach.cpu.numpy
            words = list)
            tsne = TSNE
            embeddings_2d = tsne.fit_transform
            fig, ax = plt.subplots)
            for i, word in enumerate:
                ax.scatter
                ax.annotate, fontsize=)
            plt.show
    

Skipgram 模型是天然语言处理中比比kan流行的一种模型,它将单词映射到高大维地方中的向量表示,并用于捕获单词之间的语义关系。本文轻巧松介绍了 Skipgram 模型的原理和实现,并给出了几个应用场景的代码示例。因为天然语言处理手艺的不断进步,Skipgram 模型在实际应用中也将得到越来越广泛的应用。

跳字模型。所以呢, 我们即可用前面常规的Zui巨大似然建模来搞懂怎么对u和v的进行优化求解;也彻头彻尾Neng把skip-model套到上面图1这样的一个轻巧松神经网络中,然后就让工具自己来完成weight的训练,就得到了我们想要的中心词向量。

distributed的表示形式:word vector = , 其中向量维数需要自己指定,个个维度的数值需要通过训练得到。

Skipgram 模型其周围的上下文单词。这样,我们Neng得到个个单词的向量表示,该向量表示Neng在文本分类、文本聚类和推荐系统等应用中用。

标签:

提交需求或反馈

Demand feedback