神经网络之词嵌入模型(基于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 来训练

相关推荐
云泽野13 分钟前
Pytest之parametrize参数化
android·python·pytest
盖盖衍上1 小时前
Java 8 新特性
java·windows·python
mingupup2 小时前
创建一个MCP服务器,并在Cline中使用,增强自定义功能。
python
千里码aicood2 小时前
[含文档+PPT+源码等]精品基于Python实现的vue3+Django计算机课程资源平台
开发语言·python·django
小白教程2 小时前
Python核心技术,Django学习基础入门教程(附环境安装包)
python·学习·django·django教程·django项目·django项目实战·django入门教程
老大白菜3 小时前
基于Flask实现的多语言Hello World
后端·python·flask
乔大将军3 小时前
项目准备(flask+pyhon+MachineLearning)- 3
后端·python·flask
一小路一3 小时前
通往 AI 之路:Python 机器学习入门-数据结构
数据结构·后端·python·学习·机器学习
我要昵称干什么3 小时前
在Pycharm中将ui文件修改为py文件
ide·python·学习·ui·pycharm·pyqt
凌小添4 小时前
Python入门教程丨2.6 文件操作与 OS 模块,领取你的记账小工具
python