就像不同的语言系统对同一个事物有不同的描述一样。文本字符串在计算机领域也需要计算机可以理解的表示方式。把文字表示成计算机能够运算的数字或向量,同时这个向量可以表达文本本身的含义。一般称为词嵌入(Word Embedding)方法。把文本的词嵌入到文本空间,用一个向量表示它。
在数学可以理解为一个mapping,f:X->Y. 映射的函数是具有injective 和structure-preserving特点的。也就是单射和结构保存。单射指每个Y只有唯一的X对应,反之亦然。结构保存就是X所属的空间上X1<X2,映射到词向量空间,同理Y1<Y2。word emdedding将单词word映射到另外一个空间,这个映射也是具有上面两个特点。
然而实际情况是生活中语言单词的表达往往很丰富,很难找到映射可以让向量空间中的向量来完全表达语言空间中的单词。比如girl和woman指不同年龄的女性,这两个单词之间都是有关系的,北京、上海、深圳都是地理位置,北京到上海的距离,和北京到深圳的距离,在某些常见也是需要向量可以表达。所以随着NLP技术的应用,存在着多种不同的文本表示方式。
单词表达
One Hot
假设有1000个词汇量的词典,第一个单词可以表示为[1,0,0,0…]。只有第一个位置是1,其余999个位置都是0的1000维的向量。这样每一个单词都是一个维度,彼此independent。
缺点是预料库大的情况下,词典词多会导致维度灾难,比如100W个单词,每个单词就需要表示成100w维的向量。而这个向量是很稀疏的。另外,这种表达方法无法表达单词与单词之间的相似程度。比如beautiful和preety的相似词关系式one-hot无法表达的。
Distributed representation
每个单词彼此无关这个特点明显不符合现实情况。one-hot知识将词符号化,不包含任何语义信息。如何将语义融合到词表示中。这就是分布式表示的目的。
Harris 在 1954 年提出的分布假说( distributional hypothesis)为这一设想提供了理论基础:上下文相似的词,其语义也相似。Firth 在 1957 年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定( a word is characterized by thecompany it keeps)。
基于分布假说的词表示方法,根据建模的不同,主要可以分为三类
- 基于矩阵的分布表示
- 基于聚类的分布表示
- 基于神经网络的分布表示
尽管这些不同的分布表示方法使用了不同的技术手段获取词表示,但由于这些方法均基于分布假说,它们的核心思想也都由两部分组成:一、选择一种方式描述上下文;二、选择一种模型刻画某个词(下文称“目标词”)与其上下文之间的关系。
NLP语言模型
先看一下NLP中的一个关键概念:语言模型。
语言模型包括文法语言模型和统计语言模型,一般我们指的是统计语言模型。之所以要将语言模型摆在词表示方法之前,是因为后面的表示方法马上要用到这一概念。
统计语言模型: 统计语言模型把语言(词的序列)看作一个随机事件,并赋予相应的概率来描述其属于某种语言集合的可能性。给定一个词汇集合 V,对于一个由 V 中的词构成的序列S = ⟨w1, · · · , wT ⟩ ∈ Vn,统计语言模型赋予这个序列一个概率P(S),来衡量S 符合自然语言的语法和语义规则的置信度。
用一句简单的话说,语言模型就是计算一个句子的概率大小的这种模型。有什么意义呢?一个句子的打分概率越高,越说明他是更合乎人说出来的自然句子。
就是这么简单。常见的统计语言模型有N元文法模型(N-gram Model),最常见的是unigram model、bigram model、trigram model等等。形式化讲,统计语言模型的作用是为一个长度为 m 的字符串确定一个概率分布 P(w1; w2; :::; wm),表示其存在的可能性,其中 w1 到 wm 依次表示这段文本中的各个词。
同时通过这些方法均也可以保留住一定的词序信息,这样就能把一个词的上下文信息capture住。
词嵌入(word embedding)
基于神经网络的分布表示又称为词向量、词嵌入,神经网络词向量模型与其它分布表示方法一样,均基于分布假说,核心依然是上下文的表示以及上下文与目标词之间的关系的建模。
词向量可以认为是神经网络训练语言模型的副产品。
上面涉及和介绍了一个关键概念:神经网络语言模型。通过神经网络训练语言模型可以得到词向量,那么,究竟有哪些类型的神经网络语言模型呢?
word2vec与CBOW、Skip-gram
现在我们正式引出最火热的另一个term:word2vec
Word embedding的训练方法大致可以分为两类:一类是无监督或弱监督的预训练;一类是端对端(end to end)的有监督训练。无监督或弱监督的预训练以word2vec和auto-encoder为代表。这一类模型的特点是,不需要大量的人工标记样本就可以得到质量还不错的embedding向量。不过因为缺少了任务导向,可能和我们要解决的问题还有一定的距离。因此,我们往往会在得到预训练的embedding向量后,用少量人工标注的样本去fine-tune整个模型。
对word embedding的理解 现在,词向量既能够降低维度,又能够capture到当前词在本句子中上下文的信息(表现为前后距离关系),那么我们对其用来表示语言句子词语作为NN的输入是非常自信与满意的。
词嵌入来龙去脉 word embedding、word2vec
问题
1.语言模型和神经网络语言模型,其他语言模型,ngram语言模型概念的区别?
2.统计语言模型,文法语言模型的区别,和上面几个概念的区别?