自然语言处理之词To词向量

01

回顾

总结了几种常用的深度学习算法:CNN,RNN之LSTM,GRU,关于这部分的介绍请参考:

今天介绍下自然语言处理中,我们利用语料库学习时,首先需要解决的任务:将某个词转换为词向量的背景和方法。

02

背景

2013年末,谷歌发布了word2vec工具,引起了热捧,大家几乎都认为它是深度学习在NLP的一项了不起的应用,并且很多互联网公司也开始跟进,使用word2vec解决实际问题。

NLP的相关任务中,要将我们能看懂的语言交给计算机来处理,通常需要首先将语言数学化,只有这样机器才能认得出,而词向量正是将我们看懂的词进行数学化的一种方法,就是把一个词语表示成一个向量。

一般将词语转化为向量的方法有两种:

One-Hot Representation

Distributed Representation

下面分别介绍这两种方法。

03

词转化为词向量

1 One-Hot Representation

这种方法很暴力,直接将词典的长度标记为向量的长度,每个词向量的分量只有一个为1,其余全为0,1的位置对应该词在词典的位置,比如:

adore 表示为 [0,0,0,1,...,0,0]

respect表示为 [0,0,0,...,0,1,0,..0,0]

这种表示方法的优点是简洁清晰,用哈希表给每个词分配一个编号就可以了,比如 adore编号为102,respect编号为34214,然后配合上最大熵,SVM等算法可以完成NLP的一些任务,但是它的缺点也很明显:

1). 维数灾难,这种方法容易受到这方面的困扰,尤其是用DL的一些算法时;

2.) 不能很好地刻画词语与词语间的相似性,称为“词汇鸿沟”,因为从adore和respect的词向量,编号上,我们看不出它们之间是否存在某种关系,比如为同义词,反义词等,尽管adore和respect是一对同义词。

2Distributed Representation

这种表示是Hinton,在1986年提出的,它解决了One-Hot Representation的问题,其基本思想就是直接用一个普通的向量表示一个词,维度一般不长,比如50维,这个向量怎么表示是要经过训练的,训练方法较多,谷歌开发的word2vec便是其中一个,比如向量长这样 [0.452, 0.256, 0.912,...],当然训练的预料库不一样,或者方法不一样,最终得到了某个词的向量长的也不一样。

显然,这种方法获得了 adore 和 respect 两个词的词向量,这样他俩组成了一个词向量空间,而每一个向量则为该空间中的一个点,即向量的终端点,那么adore和repect这两个点的距离,我们就可以拿来分析了,如果它们很近,就可证明 adore和respect的语法,语义之间的相似性,这样的特性使得词向量很有意义,因此google的Mikolov等人研究出了word2vec。也就是说距离近的词,相似性可能越高。

利用这个特性,可以用于机器翻译领域,通过向量空间,把一种语言转变成另一种语言,举个别人的例子,将英语中的one, two, ..., five自动转化为西班牙语,怎么做呢,首先得到这5个词的词向量,如下图所示:

然后,训练另一套即西班牙语表示的语料库,得到了每个词的词向量,找到与英语one最相近的西班牙单词为:uno,所以one对应西班牙语的uno,依次利用这种距离相近的方法找出其他的词的对应。

以上就是关于词向量的基本介绍,明天学习NLP的语言模型,谢谢阅读。

算法channel会有系统地,认真地推送:机器学习(包含深度学习,强化学习等)的理论,算法,实践,源码实现。期待您的参与!

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171225G0WSJ100?refer=cp_1026

扫码关注云+社区