《深度学习进阶:自然语言处理》读书笔记:第2章 自然语言和单词的分布式表示

第2章:自然语言和单词的分布式表示

2.1 什么是自然语言处理

通过对所有单词创建近义词集合,并用图表示各个单词的关系,可以定义单词之间的联系。利用这个“单词网络”,可以教会计算机单词之间的相关性。也就是说,我们可以将单词含义(间接地)教给计算机,然后利用这一知识,就能让计算机做一些对我们有用的事情。

2.3.3 分布式假设

分布式假设所表达的理念非常简单。单词本身没有含义,单词含义由它所在的上下文(语境)形成。

2.3.4 共现矩阵

>> def create_co_matrix(corpus, vocab_size, window_size=1):
...     corpus_size = len(corpus)
...     co_matrix = np.zeros((vocab_size, vocab_size), dtype=np.int32)
...
...     for idx, word_id in enumerate(corpus):
...         for i in range(1, window_size+1):
...             left_idx = idx - i
...             right_idx = idx + i
...
...             if left_idx >= 0:
...                 left_word_id = corpus[left_idx]
...                 co_matrix[word_id, left_word_id] += 1
...
...             if right_idx < corpus_size:
...                 right_word_id = corpus[right_idx]
...                 co_matrix[word_id, right_word_id] += 1
...
...     return co_matrix

首先,用元素为0的二维数组对co_matrix进行初始化。然后,针对语料库中的每一个单词,计算它的窗口中包含的单词。同时,检查窗口内的单词是否超出了语料库的左端和右端。

这样一来,无论语料库多大,都可以自动生成共现矩阵。

2.3.5 向量间的相似度

余弦相似度直观地表示了”两个向量在多大程度上指向同一方向”。两个向量完全指向相同的方向时,余弦相似度为1;完全指向相反的方向时,余弦相似度为-1。

2.4.1 点互信息

我们将共现矩阵转化为了PPMI矩阵。此时,PPMI矩阵的各个元素均为大于等于0的实数,我们得到了一个由更好的指标形成的矩阵,这相当于获取了一个更好的单词向量。

但是,这个PPMI矩阵还是存在一个很大的问题,那就是随着语料库的词汇量增加,各个单词向量的维数也会增加。

另外,我们发现这个矩阵很多元素是0。这表明向量中的绝大多数元素并不重要,也就是说,每个元素拥有的“重要性”很低。

另外,这样的向量也容易受到噪声影响,稳健性差。

对于这些问题,一个常见的方法是向量降维。

2.4.2 降维

所谓降维,顾名思义,就是减少向量维度。但是,并不是简单地减少,而是在尽量保留“重要信息”地基础上减少。

向量中的大多数元素为0的矩阵(或向量)称为稀疏矩阵(或稀疏向量)。这里的重点是,从稀疏向量中找出重要的轴,用更少的维度对其进行重新表示。结果,稀疏矩阵就会被转化为大多数元素均不为0的密集矩阵。这个密集矩阵就是我们想要的单词的分布式表示。

2.4.5 基于PTB数据的评价

使用语料库,计算上下文中的单词数量,将它们为PPMI矩阵,再基于SVD降维获得好的单词向量。这就是单词的分布式表示,每个单词表示为固定长度的密集向量。

2.5 小结

本章,我们以自然语言为对象,特别是以让计算机理解单词含义为主题展开了讨论。为了达到这一目标,我们介绍了基于同义词词典的方法,也考察了基于计数的方法。

使用基于同义词词典的方法,需要人工逐个定义单词之间的相关性。这样的工作非常费力,在表现力上也存在限制(比如,不能表示细微的差别)。而基于计数的方法从语料库中自动提取单词含义,并将其表示为向量。具体来说,首先创建单词的共现矩阵,将其转化为PPMI矩阵,再基于SVD降维以提高稳健性,最后获得每个单词的分布式表示。另外,我们已经确认过,这样的分布式表示具有在含义或语法上相似的单词在向量空间上位置相似的性质。

为了方便处理语料库中的文本数据,我们实现了几个预处理函数。具体来说,包括测量向量间相似度的函数、用于显示相似单词的排名的函数。

本章所学的内容:

1.使用WordNet等同义词词典,可以获取近义词或测量单词间的相似度等;

2.使用同义词词典的方法存在创建词库需要大量人力、新词难更新等问题;

3.目前,使用语料库对单词进行向量化是主流方法;

4.近年来的单词向量化方法大多基于“单词含义由其周围的单词构成”这一分布式假设;

5.在基于计数的方法中,对语料库中的每个单词周围的单词的出现频数进行计数并汇总(=共现矩阵);

6.通过将共现矩阵转化为PPMI矩阵并降维,可以将大的稀疏向量转变为小的密集向量;

7.在单词的向量空间中,含义上接近的单词距离上理应也更近。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值