词向量特征---神经网络文本输入

一、什么是词向量特征

       词向量特征是将词语从词汇表中映射到一个连续的向量空间中,使得语义上相似的词语在向量空间中的距离较近。这种表示方法可以捕捉到词语之间的相似性和差异性,为神经网络提供了一种有效的文本输入方式。

        通俗解释下:在神经网络中,我们的输入一般都是一个多维度的矩阵,而当我们需求输入文本的时候,我们无法将str类型的变量直接传入计算机(计算机并不认识)。
        传统的文本处理是将文本转换成固定长度的特征向量。
        譬如我的所有文本有:"我姓张,弓长张"。
        那么这句话中一共有‘我’,‘姓’,‘张’,‘弓’,‘长’,一共5个类型的字,我们会用一个5*1的向量来分别表示这5个字(词袋模型)。
        比如:[1,0,0,0,0]表示我,[0,1,0,0,0]表示姓。
        如此就产生了一个问题,首先对于一个大语言模型,字词量很大,那么我们的输入向量维度异常的高(词典有多大就有多高维度,一般都是"万"起步),也就产生了大量的参数,同样的这样的表示方法,没法体现字词之间的关系(只用0,1表示出现与否)。如果能够捕捉到词语之间的顺序信息和上下文关系,这无疑可以帮助模型更精确的完成训练和推理。

二、词向量特征的基本原理:

        词向量:是一种将词语从词汇表中映射到一个连续的向量空间的方法,使得语义上相似的词语在向量空间中的距离较近。词向量可以用于计算词语之间的相似性、聚类和分类等任务。

        举个例子:"中国"这个词语的词向量表示是[0.5,0.5,0,0,0,0],"中文"表示为[0.4,0.4,0,0,0]两者在向量空间中距离会比较接近,来体现两者之间有一定的关联性或是相似性。(数据是我随便写的,只是辅助理解)

三、词向量的生成方法:

        常见的词向量生成方法:Word2Vec、GloVe、FastText和ELMo等,下面将简单用代码示例如何实现。PS:训练词向量库也是一个比较大的工程,如果不是特殊情况,其实可以在github上找一些已经训练好的,基本能够满足正常的词义判断。

3.1 Word2Vec

3.1.1 Word2Vec基本概念与模型

        Word2Vec其本质上是一种降为操作。Word2Vec中有两个基本的预言模型:Skip-gram与CBOW。

        Skip-gram:用一个词语作为输入,来预测它周围的上下文

        CBOW:拿一个词语的上下文作为输入,来预测这个词语本身

        来看一个简单的例子:大部分的有监督学习模型都可以归结为:f(x)\rightarrow y,这里我们把y看做x的上下文,所以当y只取一个词语的时候,也就变成了用当前词预测它的下一个词,一般数学模型我们只能接受数值型的输入,我们需要x的一个原始输入形式,这里我们就需要用到one-hot encoder(独热编码)来实现。

        所谓one-hot encoder,本质上使用一个只含一个1,其他都是0的向量来表示唯一词语。举个例子,我们需要用到的一个词语库中公有词语V个,这V个词语会有自己的先后顺序,假设第一个词是[皮卡丘],第二个词是[去吧],那么皮卡丘就可以表示为第一个位置为1,其他为0的一个向量。

        接下来我们就可以看一下Skip-gram的网络结构了,x为独热编码的输入,y为在V个词上输出的概率。隐藏层的激活函数取线性,这也就相当于没做任何处理(经过激活函数处理后的结果与输入本身是相同的)。

        那么我们就能基于这个框架来训练神经网络了,模型训练完成后,我们就能得到神经网络的权重了,而在这个权重中,每一个输入都有其对应的唯一的权重矩阵,为什么呢?因为我们的输入矩阵x中只会有一个参数为1,那么只有对应这个1的位置的权重会被激活,而这些权重组成的向量vx便可以来表示这个输入的矩阵,又每个词语的1的位置是不一样的,所以这个向量vx就可以来唯一表示x.

        纯文字叙述可能有点抽象,那么来画个矩阵吧:

        PS:矩阵是我随手写的,并不准确,只是为了辅助理解。

        首先我们要理解:隐藏层是对应的线性变换,这也就意味着,一个输入只会对应唯一的一个隐藏层,同样该唯一的隐藏层只会对应一个唯一的输出。
        好了让我们来看看上述矩阵,左边是一个输入的1*5的矩阵,中间5*3的是权重矩阵,1*3的则是隐藏层的值了。由于线性变换我们知道[1,0,0,0,0]对应一个唯一的1*3的矩阵[0,0.1,0],那么我们就能通过这个1*3的矩阵来表示[1,0,0,0,0],这不就实现了降维么。而[0,0.1,0]就是我们需要的词向量了。

下面提供了更一般的形式,但本质相同,如果你想深入探究这些模型是如何并联、 cost function 的形式怎样,可以手动搜索下,这里就不一一展开了。

Skip-gram:

CBOW :

3.1.2 如何应用Word2Vec

        其实在真正应用的时候,只需要调用 Gensim接口即可(行吧有点累了,回头继续写代码实现)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

渊兮旷兮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值