NLP 中的连续词袋模型 (CBOW)

17 Mar 2025 | 4 分钟阅读

连续词袋模型(CBOW)是一种用于自然语言处理的神经网络模型。它可以用于多种任务,如语言翻译和文本分类。它用于根据周围的词来预测词。我们可以使用随机梯度下降等不同的优化算法在大型数据集上训练这个模型。CBOW模型在训练后会产生数值向量,称为词嵌入。词嵌入用于将词表示为数值向量。

Word2vec是一种基于神经网络的方法,用于创建词的长的向量表示,这些向量包含其上下文含义和关联。连续词袋模型是实现Word2vec的主要方法。

连续词袋模型简介

连续词袋模型是一种用于生成词嵌入的自然语言处理技术。词嵌入对于许多NLP任务都很有用,因为它们代表了语言中词语之间的语义和结构连接。CBOW是一种基于神经网络的算法,它根据上下文词来预测目标词。它是一种无监督方法,从无标签数据中学习。它可以用于情感分析、机器翻译和文本分类。

周围词的窗口作为连续词袋模型的输入,然后预测窗口中心的目标词。该模型基于文本或词语在海量数据集上进行训练。它从先前的数据和输入数据的模式中学习。该模型可以与其他自然语言处理技术结合使用,例如skip-gram模型,以增强自然语言处理任务的性能。

CBOW模型训练以改变隐藏层神经元的权重,以生成最佳的目标词输出。该模型一次性有效地快速预测输出,称为一次性学习。该模型的主要目标是开发复杂的词表示,其中语义相似的词在嵌入空间中彼此靠近。

连续词袋模型架构

CBOW模型试图分析周围词的上下文来预测目标词。我们来看一个短语:“Today is a rainy day.”(今天是个下雨天。)该模型将这个句子分解为词对(上下文词和目标词)。词对看起来像([today, a], is)、([is, rainy], a)、([a, day], rainy)。模型将使用这些词对和窗口大小来预测目标词。

Continuous Bag of Words (CBOW) in NLP

输入层将由上下文词的数量和相应的窗口大小构成。例如,如果使用四个上下文词来预测一个目标词,那么四个1 * W(W是窗口大小)的输入向量将被用作输入层。隐藏层将接收输入向量,并将其与一个W*N矩阵相乘。隐藏层的输出(1 * N)将进入求和层,在该层中,元素首先按元素相加,然后进行激活以获得输出。

Continuous Bag of Words (CBOW) in NLP

让我们使用Python实现连续词袋模型

Python提供了一个名为gensim的模块,用于自然语言处理,它提供了各种嵌入模型。

在Python中安装gensim

CBOW模型实现

步骤1:库和数据

我们将导入所有库,然后加载我们的数据。我们使用了一个名为“brown”的NLTK语料库。

代码

我们已经导入了gensim模型和Word2Vec词汇表。此外,我们还使用NLTK及其语料库。

我们已从NLTK模型下载了brown语料库,并将其用作输入数据。

步骤2:模型初始化

代码

我们使用gensim库的Word2Vec类创建一个CBOW模型,并配置一些模型的超参数,例如最小词频、嵌入向量大小、窗口大小和训练算法(CBOW = 0)。

步骤3:模型训练

代码

在训练期间,CBOW模型会分析输入数据,并调整隐藏层和输出层单元的偏差和权重,以减少预测的实际目标词嵌入与实际目标词之间的误差。这被称为反向传播。更多的训练轮次会给出更准确的输出。

步骤4:词嵌入

代码

在此步骤中,模型正在学习词嵌入。

步骤5:检查余弦相似度

代码

输出

The Cosine Similarity between 'girl' and 'boy': 0.61204993724823

我们将计算两个词之间的余弦相似度。它将告诉我们这两个词在意义上有多相似。

我们可以分析词语及其嵌入之间的相似性。意义或上下文相似的词应该彼此靠近。