NLP处理方法

传统:基于规则

现代:基于统计机器学习

  • HMM、CRF、SVM、LDA、CNN…
  • “规则”隐含在模型参数里

我们希望词编码能够做到什么

词编码需要保证词的相似性

我们希望类似青蛙、蟾蜍这些词在词编码之后保持相似性

不同的青蛙

向量空间分布的相似性

从一个向量从一种语系转化成另一种语系的时候能够保持分布

英语和西班牙语对比

向量空间子结构

$$ V_{king}-V_{Queen}=V_{Man}-V_{Women} \\ V_{Paris}-V_{France}=V_{German}-V_{Berlin} $$

我们希望原始文本信息能够得到保留,例如国王和女王之间的关系和男人与女人之间的关系应是特别接近的,法国和巴黎之间关系与德国和巴黎的关系也是接近的。

最终目标

词向量表示作为机器学习、特别是深度学习的输入和表示空间

在计算机中表示一个词

WordNet

WordNet是由Princeton大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典。它不是光把单词以字母顺序排列,而且按照单词的意义组成一个“单词的网络”。它是一个覆盖范围宽广的英语词汇语义网。名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接。

猫的上位词和同义词

WordNet存在的问题

  1. 不能分别细节的差别
  2. 需要大量的人为劳动
  3. 主观
  4. 无法发现新词
  5. 难以精确计算词之间的相似度

离散表示:One-hot表示

假设有这么一个语料库

John likes to watch movies. Mary likes too.
John also likes to watch football games.

按照这个语料库可以构建出一个词典

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies'": 5,

"also":6, "football": 7, "games": 8, "Mary": 9, "too": 10}

可以看到这个词典里包含了10个单词,每个单词都有一个唯一的索引,在词典的顺序和在句子的顺序没有关联。

John的One-hot表示为

$$ [1,0,0,0,0,0,0,0,0,0] $$

同理likes的One-hot表示为

$$ [0,1,0,0,0,0,0,0,0,0] $$

离散表示:Bag of Words

文档的向量表示可以直接将各词的词向量表示加和

John likes to watch movies. Mary likes too.可表示为

$$ [1,2,1,1,1,0,0,0,1,1] $$

词权重

TF-IDF(Term Frequency - Inverse Document Frequency)

词$t$的IDF weight计算方式为

$$ log(1+\frac{N}{n_t}) $$

其中$N$为文档总数,$n_t$为含有词$t$的文档数

John likes to watch movies. Mary likes too.经过TF-IDF计算后文档向量可表示为

$$ [0.693,1.386,0.693,0.693,1.099,0,0,0,0.693,0.693] $$

Binary Weighting

只统计是否出现过,出现为1不出现为0,不统计出现次数

John likes to watch movies. Mary likes too.的向量记为

$$ [1,1,1,1,1,0,0,0,1,1] $$

离散表示:Bi-gram和N-gram

John likes to watch movies. Mary likes too.
John also likes to watch football games.

依旧以上面两句作为语料库,为了能够考虑到顺序的影响因素,为2-gram建立索引,得到词典如下

wordindex
John likes1
likes to2
to watch3
watch movies4
Mary likes5
likes too6
John also7
also likes8
watch football9
football games10

John likes to watch movies. Mary likes too.的文档向量可表示为

$$ [1,1,1,1,1,1,0,0,0,0] $$

John also likes to watch football games.的文档向量可以表示为

$$ [0,1,1,0,0,0,1,1,1,1] $$

2-gram以每相邻的两个词建立词典,可以考虑到词的顺序对文档的影响,但是这样带来的问题是造成此表的膨胀。

模型参数数量与n的关系

语言模型

判断一句话(词组合)出现的概率

$$ P(w_1,\cdots,w_m)=\prod_{i=0}^mP(w_i|w_1,\cdots,w_{i_1}) $$

Unigram/1-gram

$\begin{aligned} \mathrm{P}(\text { Mary likes too }) &=\mathrm{P}(\text { too } \mid \text { Mark, likes }) * \mathrm{P}(\text { likes } \mid \text { Mary }) * \mathrm{P}(\text { Mary }) \\ &=\mathrm{P}(\text { too }) * \mathrm{P}(\text { likes }) * \mathrm{P}(\text { Mary }) \end{aligned}$

Bigram/2-gram

$\begin{aligned} \mathrm{P}(\text { Mary likes too }) &=\mathrm{P}(\text { too } \mid \text { Mark, likes }) * \mathrm{P}(\text { likes } \mid \text { Mary }) * \mathrm{P}(\text { Mary }) \\ &=\mathrm{P}(\text { too } \mid \text { likes }) * \mathrm{P}(\text { likes } \mid \text { Marry })^{*} \mathrm{P}(\text { Mary }) \end{aligned}$

离散表示的问题

  • 无法衡量词向量之间的关系

$$ \begin{array}{ll} \text { 酒店 } & {[0,1,0,0,0,0,0,0,0,0]} \\ \text { 宾馆 } & {[0,0,0,0,1,0,0,0,0,0]} \\ \text { 旅舍 } & {[0,0,0,0,0,0,0,0,1,0]} \end{array} $$

使用各种度量(与或非、距离)都不合适,太过于稀疏,很难捕捉文本的含义

  • 词表维度随着语料库增长膨胀
  • n-gram词序列随语料库膨胀更快
  • 数据稀疏问题

分布式表示(Distributed representation)

可以用一个词附近的其他词来表示该词

"You shall know a word by the company it keeps——(J. R. Firth 1957: 11)

现代统计自然语言处理中最有创见的想法之一

banking附近的词将会代表banking的含义

共现矩阵

Word-Document的共现矩阵主要用于发现主题(topic),用于主题模型,如LSA(Iatent Semantic Analysis)

局域窗中的Word-Word共现矩阵可以挖掘语法和语义信息

  • I like deep learning
  • I like NLP
  • I enjoy flying

window length设为1(一般设置为5~10),使用对称的窗函数(左右window length都为1)

共现矩阵

存在的问题

将共现矩阵行/列向量作为词向量

  • 向量维数随着词典大小线性增长
  • 存储整个词典的空间消耗非常大
  • 一些模型如文本分类模型会面临稀疏性问题
  • 模型会欠稳定

SVD降维

为了解决维度过大造成的稀疏性问题,最直接的方法是考虑构造低维稠密向量作为词的分布式表示(25~1000维),使用SVD对共现矩阵向量做降维

SVD降维

存在的问题

  • 计算量随着语料库和词典增长膨胀太快,对$X(n\times n)$维的矩阵,计算量为$O(n^3)$,而对大型的语料库,n~400k,语料库大小为1~60Btoken
  • 难以为词典中新加入的词分配词向量
  • 与其他深度学习模型框架差异过大

NNLM(Neural Network Language model)

NNLM是word2vec的前身,直接从语言模型出发,将模型最优化过程转化为求词向量表示的过程。

目标函数

$$ L(\theta)=\sum_{i}\log P(w_t|w_{t-n+1},\cdots,w_{t-1}) $$

  • 使用了非对称的前向窗函数,窗长度为n-1
  • 滑动窗口遍历整个语料库求和,计算量正比与语料库大小
  • 概率P满足归一化条件,这样不同位置t处的概率才能相加,即

$$ \sum_{w\in\{vocabulary\}}P(w|w_{t-n+1},\cdots,w_{t-1})=1 $$

参考资料

知识图谱之WordNet

Last modification:August 2nd, 2020 at 10:29 pm