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 的输入为什么需要位置编码,以及相关的算法和原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值