自然语言处理 —— 2.1 词汇表征

词表示

V = [ a , a a r o n , . . . , z u l u , < U N K > ] V=[a,aaron,...,zulu,<UNK>] V=[a,aaron,...,zulu,<UNK>]

目前为止,我们一直都是用词汇表来表示词,上章节中提到的单词表可能是10000个单词,我们一直用one-hot向量来表示词,比如man在词典中是第5391个单词,那么就可以表示成一个向量,这个向量只在第5391处为1,其它地方全为零,我们用O_5391代表这个量,这里的O表示one-hot。接下来,如果women是编号9853,那么就可以用O_9853来表示,这个向量只在9853处为1,其它地方为0。其它的词,如国王,王后,苹果,橘子都可以这样表示出来。

这种表示方法的一大缺点就是,它把每个词孤立起来,这样使得算法对相关词的泛化能力不强。

举个例子,假如你已经学到了一个语言模型: I   w a n t   a   g l a s s   o f   o r a n g e   ( ) I \space want\space a\space glass\space of\space orange \space () I want a glass of orange ()那么下一个词会是什么?很可能是 j u i c e juice juice,即使你的算法已经学习到了,我想喝一杯橙子果汁很可能是一个句子,但如果看到 I   w a n t   a   g l a s s   o f   a p p l e   ( ) I \space want\space a\space glass\space of\space apple \space () I want a glass of apple ()因为算法不知道苹果和橙子之间的关系比橙子与其它词之间的关系更近,比如男人与女人,国王与王后。

所以算法很难从已经知道的橙子果汁是一个很常见的东西而明白苹果果汁也是很常见的东西或者说是很常见的句子。

这是因为任何两个one-hot向量的内积都是0,如果你取两个向量,比如国王和王后,然后计算它们之间的内积,结果就是0。如果计算苹果与橘子之间的内积,也是0。这些词向量的距离是一样的,所以并没有什么价值。所以无法知道苹果与橘子要比国王与橘子或者王后与橘子要相似很多。

换一种表示方式会不会更好?如果我们不用one-hot表示,而是用特征化的表示来表示每个词,我们学习这些词的特征或数值化。

举个例子,对于这些词,比如我们想知道这些词与性别的关系,假定男性的性别为-1,女性的性别为+1。那么男人的性别值为-1,女人的性别值为1。最终根据经验,国王就是-0.95,王后是0.97,苹果和句子没有性别可言。另一些特征可以是这些词有多高贵,或者是这些词与年龄的关系。还有一个特征是这些词是否是食物。当然还可以有很多其它的特征,从尺寸大小,花费多少,这些东西是不是活的,是不是一个动作,或者是不是名词,或者是不是动词,或者其它的等等。

所以你可以想很多的特征,为了说明,我们假设有300个不同的特征,这样的话,对于每个词就得到一列数字,这样300个不同的特征就组成了一个300维的向量来表示男人等词,接下来,我们会用e_5391这个符号表示男人这个词向量。

现在,如果用这种表示方法来表示橙子、苹果这些词,那么橘子、苹果的这种表示肯定会非常相似,可能有些特征不太一样。因为橘子的颜色、苹果的颜色,两者之间的口味或者其它的一些特征会不太一样。但总的来说,橘子和苹果的大部分特征实际上都一样,或者说都有相似的值。这样对于已经知道橙子果汁的算法,很大几率上它也会明白苹果果汁这个东西。这样对于不同的单词,算法会泛化的更好。

后面我们会介绍词嵌入的办法,我们最终学习的特征不会像这里一样这么好理解,不存在说第一个特征是性别,第二个特征是是否高贵等。新特征表示的东西肯定会更难搞清楚。

尽管如此,接下来要学的特征表示方法却能使算法高效地发现苹果和橘子会比国王与橘子更加相似。

如果我们能学习到一个300维的特征向量,或者说300维的词嵌入,通常我们可以做一件事,把这300维的数据嵌入到一个二维空间里,这样就可以可视化了。
在这里插入图片描述
常用的可视化算法是 t − S N E t-SNE tSNE算法,来自 L a u r e n s   v a n   M a a t e n Laurens\space van\space Maaten Laurens van Maaten G e o f f   H i n t o n Geoff\space Hinton Geoff Hinton的论文。如果看这些映射过来的结果也是一种表示方法,你会发现男人和女人这些词聚集在一块,国王和王后聚集在一块,这些都是人,也都聚集在一起,动物也聚集在一起,水果也聚集在一起,数字也聚集在一起。如果把生物看成一个整体,它们也聚集在一起。

希望你能有一个整体的概念,这种词嵌入算法对于相近的概念学习到的特征也比较类似,在对这些概念可视化的时候,这些概念就比较相似,最终将它们映射为相似的特征向量,这种表示方式用的是在300维空间里的特征表示,这叫做嵌入(embedding)。之所以叫嵌入的原因是,你可以想象一个300维的空间,取一个单词比如橘子,它对应一个300维的特征向量,所以这个词就被嵌在300维空间里的一个点上。苹果这个词就被嵌在这个300维空间的另一个点上。为了可视化,算法 t − S N E t-SNE tSNE把这个空间映射到低维空间,你可以画出一个2维图像然后观察,这就是术语嵌入的来源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值