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

news/2025/3/3 11:53:35/

一、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模型能够平滑许多分布信息,对于较小的数据集表现较好。

2. 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 来训练


http://www.ppmy.cn/news/1576284.html

相关文章

网络空间安全(4)web应用程序安全要点

前言 Web应用程序安全是确保Web应用程序、服务和服务器免受网络攻击和威胁的关键环节。 一、编写安全的代码 输入验证与过滤:确保所有的用户输入都被正确验证和过滤,以防止注入攻击等安全漏洞。开发者应对URL、查询关键字、HTTP头、POST数据等进行严格的…

高性能模拟计算:让计算更快、更智能

高性能模拟计算:让计算更快、更智能! 引言:为什么要关注高性能模拟计算? 在这个数据驱动的时代,模拟计算已经成为各行各业的重要工具: 金融行业 需要通过复杂的数学建模来预测市场走势;航空航天 依赖流体力学模拟来优化飞机设计;人工智能 训练深度学习模型时,也涉及…

Python的pdf2image库将PDF文件转换为PNG图片

您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例,包含安装步骤、代码示例和注意事项。 安装依赖库 首先,您需要安装pdf2image库: pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…

处理大数据的架构模式:Lambda 架构 和 Kappa 架构

Lambda 架构 和 Kappa 架构 是两种用于处理大数据的架构模式,尤其在实时数据处理场景中广泛应用。 1. Lambda 架构 核心思想 Lambda 架构将数据处理分为两条独立的流水线: 批处理层(Batch Layer): 处理全量数据&…

Java内存管理与性能优化实践

Java内存管理与性能优化实践 Java作为一种广泛使用的编程语言,其内存管理和性能优化是开发者在日常工作中需要深入了解的重要内容。Java的内存管理机制借助于垃圾回收(GC)来自动处理内存的分配和释放,但要实现高效的内存管理和优…

Stable Diffusion(SD)系列模型及关联算法深度解析

一、‌基础模型架构演进‌ SD v1.5‌ ‌核心架构‌:基于Latent Diffusion Model(LDM),通过VAE将图像压缩至潜空间进行扩散训练,支持512x512分辨率生成,兼容二次元与写实风格混合创作‌12。 ‌训练数据‌&…

AI赋能视频创作:零基础也能玩转短视频制作

在短视频风靡的今天,你是否也渴望创作出属于自己的精彩作品,却苦于没有专业设备和剪辑技巧?别担心,AI技术的飞速发展为我们带来了全新的解决方案!即使你是零基础小白,也能借助AI工具轻松合成小视频&#xf…

手机大厂如何处理安卓分屏退出后最近任务显示一半问题?

背景: 近来在有学员朋友在群里讨论到了一个分屏退出后,在桌面最近任务中的卡片显示异常问题,虽然他的问题和目前市场上的最近任务显示一半情况不一样。但是这里也刚好启发了群里vip学员们对这个最近任务对分屏task只显示一半画面问题进行相关…