当前位置: 首页 > web >正文

Transformer 通关秘籍11:Word2Vec 及工具的使用

将文字文本转换为词向量(word embedding)的过程中,一个非常著名的算法模型应该就是 Word2Vec 了。

相信大家或多或少都听说过,本节就来简单介绍一下 Word2Vec 。

什么是 Word2Vec ?

Word2Vec 可以非常有效的创建词嵌入向量,你可以把它理解为是一个算法模型,也可以理解为是一个工具包。

它 2013 年由 Google 推出,自问世以来,一直被广泛的应用在自然语言处理的词嵌入向量的表达过程中,它可以完成文本到词向量的映射,同时保留文本在向量空间的语义关系。

关于文本在向量空间的语义关系,可以参考10、词向量运算:queen=king-man+wowem的内容。

所以我们可以说, Word2Vec 是一个算法模型,人们利用这个模型对大量的文本数据进行训练,从而使模型可以输出训练好的词向量。

在使用 Word2Vec 模型训练时,其内部支持使用两种不同的训练算法进行训练:

    1. 连续词袋算法(Continuous Bag of Words, CBOW):该算法通过给定文本上下文单词,来预测中心词。
    1. 跳元算法(Skip-gram): 该算法通过给定文本中心词,来预测文本上下文词。

什么是上下文词和中心词呢?

假设有如下的句子:We are about to study the idea of deep learning.

如果已知 We are about to 和 the idea of deep learning,去预测 study,那么就相当于通过上下文去预测中心词,此时实用的也就是 CBOW 算法。

反过来,如果给定了单词 study,去预测句子中的其他上下文词(比如 idea),则是使用了 Skip-gram 算法。

这两种算法是 Word2Vec 中支持的两种算法,这里暂时不多介绍两种算法的细节。大家只需要知道,无论是连续词袋算法还是跳元算法,都是用来更好的预测文本中的词,以此来达到对大量单词进行语义学习的目的,从而产生更加有效的词向量。

Word2Vec 工具

Google 将 Word2Vec 进行了开源,并且提供了一套简洁可用的工具包。我们可以非常方便的使用这些工具来进行词向量相关的测试。

开源的源代码仓库 github 链接为:https://github.com/dav/ Word2Vec 。

该仓库为 C++ 源码仓库,使用前需要确保具备 C++ 源码的编译和运行环境。

如何编译?

代码下载之后,在 src 目录下,执行 ‘make’ 命令便可完成代码仓库的编译,编译生成的可执行文件会放在 bin 目录下。

在bin目录下,可以执行对应的可执行程序来测试词向量。

比如可以使用 distance程序来计算单词的相似程度。

例如,你可以执行下面的命令后,进入工具交互界面。

./distance ~/GoogleNews-vectors-negative300.bin

上述命令中的 GoogleNews-vectors-negative300.bin 是需要提前下载到本地中,是一个已经训练好的词嵌入模型(包含了词嵌入向量)文件,该文件的下载方式在10、词向量运算:queen=king-man+wowem有介绍。

需要先将其下载到本地电脑中,再进行使用。

执行完上述命令后,在交互界面输入“compute"单词。

distance 工具会输出该单词在词汇表中所处的位置,下图显示 compute 单词位于词汇表中的第 33688 的位置。
在这里插入图片描述

同时,distance 工具会给出与 compute 单词最接近的其他单词(使用余弦距离表示),比如 computation,calculate等。
在这里插入图片描述

你可以使用该工具测试其他单词。

该源码仓库完成编译后,还包含了很多其他的工具,详细的使用可以参考官方指南:https://code.google.com/archive/p/ Word2Vec /。

本节仅需要知道 Word2Vec 是Google开发的一个用来将文本转换为词向量的算法模型(工具)即可,并且该模型内置支持了两种不同的算法完成文本到词向量的转换,分别是 CBOW 和 Skip-gram 算法。

CBOW 和 Skip-gram 两种算法的细节非本专栏重点,这里就不深入介绍了,感兴趣的同学可以去百度一下。

总结一下

至此,我们把自然语言处理模型需要的预处理预备知识基本介绍完了。

这些知识包括: token 的概念,词汇表, token 转换到词向量的必要性以及一些代码演示。相信看到这里你应该对这些基础概念有了一定的了解。

事实上,以上的预备知识和操作,仅仅完成了一件事,那就是将人类可以理解的文本,转换到了高维空间的词向量。

只有将文本转换为词向量后,才可以输入给自然语言模型进行处理。

另外,对于基于 transformer 架构的模型而言,单有词向量是不够的,还需要使用位置编码来对文本信息进一步处理。这一点可以查看本节最上面的配图以了解这个过程。

只有将词向量和位置编码结合起来,才能作为真正的输入给到 transformer 架构(大模型)。

这一部分内容,为了逻辑连贯,并且更好理解,在后面介绍 transformer 技术细节时,再进行位置编码的相关介绍,主要会包括:transformer 的输入为什么需要位置编码,以及相关的算法和原理。

http://www.xdnf.cn/news/9490.html

相关文章:

  • 智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
  • js中后台框架的增删改查要点
  • 影响沉金价格的因素如何体现在多层电路板制造上?
  • Eclipse 插件开发 5.2 编辑器 获取当前编辑器
  • C语言循环结构实战:while和for到底用哪个?
  • 时序数据库IoTDB如何快速高效地存储时序数据
  • 芯科科技推出首批第三代无线开发平台SoC,高度集成的解决方案推动下一波物联网实现突破
  • 国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
  • 如何在网页中嵌入UE/Unity/WebGL程序,并与网页端通信
  • 第 85 场周赛:矩阵重叠、推多米诺、新 21 点、相似字符串组
  • CMake指令:source_group()
  • 【数据分析】特征工程-特征选择
  • Git 使用规范
  • 关于git的使用流程
  • 2025年中国电商618年中大促策略分析:存量博弈与生态重构
  • 深度 |推动公共数据按需有序安全流动
  • mock库知识笔记(持续更新)
  • 如何解决网站服务器的异常问题?
  • 班翎流程平台 | 流程变量赋值事件,简化流程配置,灵活构建流程
  • 8.8 Primary ODSA service without ODSA Portal
  • LLaDa——基于 Diffusion 的大语言模型 打平 LLama 3
  • DM达梦数据库开启SQL日志记录功能
  • java导入excel
  • 2025超全面Redis笔记!!!
  • Redis缓存设计与性能优化
  • 题目 3316: 蓝桥杯2025年第十六届省赛真题-数组翻转
  • mac 下安装Rust Toolchain(Nightly)
  • Redis--缓存穿透与缓存雪崩详解及解决方案
  • Cloudera Manager 学习笔记
  • 程序的 “内存舞台”:深入解析虚拟地址空间与内存管理