【2-0】词表示

一、为什么要用词表示

既然我们想让计算机处理我们的自然语言,就要让计算机看得懂、算得了我们的语言,对吧。
那么问题来了,请算一下“男人”和“女人”两个词的相似程度。
……
发现了吧,根据常识,根本无法计算出一个结果来。

而且我们知道,计算机既然以“计算”为名,它本质上处理的还是数字,而不是中文或英文。
因此我们需要把语言中的词汇用数字来表示。

你能想出什么表示方法?

请思考一下,然后下划查看参考答案。

二、有哪些较为经典的词表示方法

1、one-hot(独热码)

这种方法首先将已有词汇编号,编成一个词典。这样每个词汇都有其独一无二的编号。
假设词典里有10个词汇(只是假设,实际上数量远比这个要大),“男人”这个词的编号是5.
那么“男人”的独热码表示就是这样一个向量:[0,0,0,0,0,1,0,0,0,0],代表着在全部的10个词汇中,“男人”这个词汇排第六。

编号不是5吗?为啥排第六?
(摘墨镜,甩头)你知道吗?在程序员的世界里,数字的开始不是1,而是0。

当然,其不足之处在于,我们依旧无法计算“男人”和“女人”的相似度。因为在这种表示中,两个词的差别只在于编号不同,而这无法体现出二者的真实含义,也就无法计算相似程度。

2、Distributional Representation(上下文词表示)

这个方法的思路是:一个词的意义可以由周围的词来表示
什么意思?
我们说出一句话,其中的每个词之间都有或多或少的联系,也存在着一些常见、固定的搭配(比如“爱”和“你”,“喝”和“水”)。通过这些周围的词,可以在一定程度上表示该词。

举例:
比如词汇“stars”,它周围的重要词汇见下图蓝字部分:

在这里插入图片描述

我们统计出各个重要词出现的频度:

shiningcoldnightbrightlylightbrightseasonsrisenfull
221111111

那么表示“stars”这个词的向量就是:[2,2,1,1,1,1,1,1,1]

这种表示终于有了计算相似度的条件了,就是看表示两个词的两组重要词之间的相似程度,可以转化为两组向量的余弦相似度。

Term-Term矩阵

通过滑动窗口,统计窗口内各词周围的词汇及其出现次数。就像上面的“stars”一样,看看窗口内有多少个词汇,这些词汇出现了几次。然后继续滑动窗口,继续统计。
最终得到n*n大小的矩阵。

Term-Document矩阵

统计每个词在不同文档内的出现次数。
最终得到n*d大小的矩阵。
这种矩阵在信息匹配检索上有较多的应用,可以根据某个搜索词,匹配出现过该词的网页文档。

然而这种统计表示也是有其不足之处的。一是维数太大,太占存储;二是容易造成数据稀疏,影响计算效率和结果。

三、高维稀疏→低维稠密

那么,针对以上两个问题,我们希望:高维稀疏向量→低维稠密向量
常见的有两种方法

3.1 奇异值分解

在深度学习之前,往往都是用数学方法对矩阵进行压缩。奇异值分解就是一个非常经典的方法。

3.2 词嵌入

Distributed Representation(分布式表示)
深度学习出现之后,计算机可以通过学习大量语句,来给每个词分配一个稠密向量。每个词对应一种独有的分布,就像激活神经元的不同分布一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值