一.文本的表示方法
将一篇自然语言类文本用数学语言表示的方法有一下几种:
- 基于one-hot、tf-idf、textrank
- 基于词向量的固定表征:word2vec、fastText、glove
- 基于词向量的动态表征:ELMO、GPT、BERT
基于one-hot的词向量
one-hot向量是最简单的词向量表达方法。首先,构建一个输入文本中出现的所有词的词表,对每个词进行编号,假设词表的长度为n,则对于每一个词的表征向量均为一个n维向量,且只在其对应位置上的值为1,其他位置都是0,这就是one-hot形式的词向量,如下图所示:

one-hot向量将每个单词表示为完全独立的实体,这样的表征方法主要有以下几个问题:
- 有序性问题:它无法反映文本的有序性。因为语言并不是一个完全无序的随机序列。比如说,一个字之后只有接特定的字还能组成一个有意义的词,特定的一系列词按特定的顺序组合在一起才能组成一个有意义的句子。
- 语义鸿沟:其无法通过词向量来衡量相关词之间的距离关系,即这样的表征方法无法反映词之间的相似程度,因为任意两个向量的距离是相同的。
- 维度灾难:高维情形下将导致数据样本稀疏,距离计算困难,这对下游模型的负担是很重的。
二.基于词向量的固定表征方法(词向量模型)
由于one-hot形式的词向量有许多问题,所以语言模型被提了出来,最初的语言模型是N-gram模型及NNLM。
2.1 N-gram模型
语言模型想要解决的问题是求一段文本序列在某种语言下出现的概率。这个问题可以通过计算每个候选句作为答案的概率,然后选取概率最大的文本作为答案来解决。
统计语言模型给出了上述问题的一个基本解决框架。对于一段文本序列

要求出一段文本的联合概率,仅需要计算出每个词或者每段文本在给定previous words下的条件概率,由于其巨大的参数空间(或说过长的上文文本),这样一个原始的模型在实际中并没有什么用,比如文中的词与文档开头的词并没有什么相关性。所以更多的是仅用之前的n个文本来计算当前文本的条件概率,即我们常说的N-gram模型:

当假设一个词的出现不依赖于其他任何词时,称为unigram;当一个词的出现依赖于上一个词时,称为bigram。可以用最大似然法去求解Ngram模型的参数,即等价于去统计每个Ngram的条件词频。事实上,由于模型复杂度和预测精度的限制,很少会考虑N>3的模型。
2.2 NNLM
鉴于Ngram等模型的不足,2003年,Bengio等人提出了NNLM模型,NNLM模型的基本思想可以概括如下:
- 假定词表中的每一个word都对应着一个连续的特征向量;
- 假定一个连续平滑的概率模型,输入一段词向量的序列,可以输出这段序列的联合概率;
- 同时学习词向量的权重和Ngram概率模型里的参数。
值得注意的一点是,这里的词向量也是要学习的参数,也就是说词向量是在训练的过程中自动生成的。在03年的论文里,Bengio等人采用了一个简单的前向反馈神经网络 f ( w t − n + 1 , . . . , w t ) f(w_{t−n+1},...,w_t) f(wt−n+1,...,wt)来拟合一个词序列的条件概率 p ( w t ∣ w 1 , w 2 , . . . , w t − 1 ) p(w_t|w_1,w_2,...,w_{t−1}) p(wt∣w1,w

本文介绍了文本表示方法,包括one-hot和词向量模型,详细阐述了词向量模型如word2vec的CBoW和Skip-gram。接着深入探讨了预训练语言模型,包括自回归模型如ELMO和GPT,自编码模型如BERT,以及排列模型XLNET。预训练模型能捕捉词的上下文动态表征,提升了NLP任务的效果。
最低0.47元/天 解锁文章
5253

被折叠的 条评论
为什么被折叠?



