神经网络之词嵌入模型(基于torch api调用)

一、Word Embedding(词嵌入)简介

Word Embedding(词嵌入): 词嵌入技术是自然语言处理(NLP)领域的一项重大创新,它极大地推动了计算机理解和处理人类语言的能力。

通过将单词、句子甚至图像转换为数字向量,词嵌入技术不仅改善了文本的表示方式,更重要的是,它捕捉到了语言的本质

Word Embedding

语义搜索(Semantic Search): Word Embedding这一创新使得语义搜索成为可能,我们能够更精准地理解和分析不同语言的文档。通过探索这些高级的数值表示形式,我们能够洞察计算机是如何开始理解人类语言的细微差别的。 这一进步正在改变我们在数字时代处理信息的方式,使得我们能够更高效地处理和分析大量的文本数据。

2.原理

词嵌入模型则通过将词映射为连续的向量,使得语义上相似的词在向量空间中的位置相近,从而捕捉到了词之间的语义关系。

语义相似性

Word2Vec: 一种基于神经网络的词嵌入模型,它利用神经网络来训练词向量。在训练过程中,Word2Vec通过预测上下文中的词来学习词向量,使得语义上相似的词在向量空间中的距离更近。

它通过在大规模文本语料库上的训练,能够理解单词间复杂的关系,如同义词、反义词和关联词,这些都是通过向量空间的几何属性来实现的。

Word2Vec

Word2Vec工作原理: 通过一个简单的双层神经网络来从大量文本中学习单词之间的联系。 这一模型的设计基于一个核心假设:出现在相似语境中的单词在语义上是相似的。

Word2Vec通过两种主要的训练算法来实现这一目标: 连续词袋(CBOW)和Skip-Gram。 这两种算法在处理单词上下文的方法上有所区别,但共同致力于捕捉单词之间的语义关系。

1.连续词袋(CBOW)

工作原理:CBOW模型通过上下文(即周围的词)来预测当前词。具体来说,它首先接收上下文中的多个词向量作为输入,然后通过对这些词向量的处理(如求和或平均)来预测目标词。

实现方式:CBOW模型通常包括输入层、隐藏层和输出层。输入层接收上下文词的one-hot编码,隐藏层通过权重矩阵将输入转换为低维的密集向量,输出层则使用softmax函数来预测目标词的概率分布。

优点:在处理大型语料库时,CBOW模型能够平滑许多分布信息,对于较小的数据集表现较好。

  1. Skip-Gram

工作原理:与CBOW相反,Skip-Gram模型通过当前词来预测上下文中的词。它接收一个中心词的词向量作为输入,然后尝试预测该词周围一定窗口大小内的上下文词。

实现方式:Skip-Gram模型同样包括输入层、隐藏层和输出层。但在这里,输入层只接收中心词的one-hot编码,隐藏层同样通过权重矩阵转换为密集向量,而输出层则尝试为上下文中的每个词分配概率。

优点:Skip-Gram模型在处理较小数据集时表现更好,尤其是在捕捉稀有词上。此外,它通常能够学习到更细致的词向量表示。

3.实现流程

1. 语料库准备

  • 数据收集:从各种渠道收集大量的文本数据,这些渠道可以包括新闻网站、社交媒体平台、书籍、学术论文等。例如,若要训练一个新闻领域的词向量模型,就可以从各大新闻媒体网站抓取新闻文章作为语料库的基础数据。
  • 数据预处理
    • 分词:将文本分割成单个的词或标记。对于英文文本,通常可以使用空格和标点符号进行简单分割;对于中文文本,需要使用专门的分词工具,如结巴分词。例如,"我爱自然语言处理" 经过分词后可能变为 "我 爱 自然语言处理"。
    • 去除停用词:停用词是指在文本中频繁出现但对语义表达贡献较小的词,如 "的""是""在" 等。去除停用词可以减少数据的噪声,提高后续处理的效率。
    • 标准化处理:包括将所有单词转换为小写形式,统一数字、标点符号的表示等。例如,将 "Apple" 和 "apple" 都转换为 "apple"。

2. 词汇表构建

  • 提取唯一词汇:对预处理后的语料库进行遍历,提取其中出现的所有唯一词汇。例如,对上述分词后的文本集合进行处理,得到一个包含所有不同词汇的列表。
  • 过滤低频词:根据实际需求,过滤掉那些在语料库中出现频率过低的词汇。因为这些低频词可能是拼写错误或者非常罕见的词汇,对模型的训练贡献不大,反而会增加计算量和存储成本。
  • 构建映射关系:为词汇表中的每个词分配一个唯一的索引,形成词到索引和索引到词的映射关系。这样在后续处理中,可以方便地通过词查找其索引,或者通过索引查找对应的词。

3. 词向量训练

  • 选择模型:常见的词向量训练模型有 Word2Vec(包括 CBOW 和 Skip - gram 模型)、GloVe 等。以 Word2Vec 的 Skip - gram 模型为例,它的目标是根据当前词来预测其上下文词。
  • 初始化词向量:为词汇表中的每个词随机初始化一个低维向量表示。这些初始向量是模型训练的起点,在训练过程中会不断调整和优化。
  • 训练模型:使用预处理后的语料库对模型进行训练。在训练过程中,模型会根据输入的上下文信息,不断调整词向量的参数,使得语义相近的词在向量空间中的距离逐渐靠近。例如,在一个包含大量体育新闻的语料库中训练时,"篮球" 和 "投篮" 的词向量会在训练过程中逐渐变得相似。
  • 保存词向量:训练完成后,将每个词对应的最终向量保存下来,以便后续使用。可以将词向量保存为文本文件、二进制文件等格式

4.基于别人预训练的词向量来实现:

python 复制代码
self.embedding_pretrained = torch.tensor(
            np.load(dataset + '/data/' + embedding)["embeddings"].astype('float32'))\
            if embedding != 'random' else None       

self.embed = self.embedding_pretrained.size(1)\
            if self.embedding_pretrained is not None else 300      

确定维度和以及预训练的模型

python 复制代码
        if config.embedding_pretrained is not None:
            self.embedding = nn.Embedding.from_pretrained(config.embedding_pretrained, freeze=False)
        else:
            self.embedding = nn.Embedding(config.n_vocab, config.embed, padding_idx=config.n_vocab - 1)

调用api 来训练

相关推荐
灏瀚星空1 小时前
基于Python的策略开发与回测:统计套利策略
开发语言·python·学习·算法·机器学习
爱宇阳2 小时前
如何将本地 Jar 包安装到 Maven 仓库(以 Aspose 为例)
python·maven·jar
数据系的公考小白2 小时前
2025五一杯数学建模C题代码分享
python·数学建模·pandas·五一杯
啊阿狸不会拉杆2 小时前
人工智能数学基础(十)—— 图论
人工智能·python·数学·算法·图论
AlexandrMisko2 小时前
从零实现基于Transformer的英译汉任务
人工智能·pytorch·python·深度学习·transformer
进来有惊喜2 小时前
主成分分析(PCA)与逻辑回归在鸢尾花数据集上的实践与效果对比
python
鬼义II虎神2 小时前
Django缓存框架API
python·缓存·django
执键行天涯2 小时前
Apache Velocity代码生成简要介绍
开发语言·python·apache
患得患失9492 小时前
【python】【UV】一篇文章学完新一代 Python 环境与包管理器使用指南
开发语言·python·uv
一个天蝎座 白勺 程序猿2 小时前
Python爬虫(19)Python爬虫破局动态页面:逆向工程与无头浏览器全链路解析(从原理到企业级实战)
开发语言·爬虫·python·websocket·ajax