统计语言模型

来源:互联网 发布:c语言函数有几个? 编辑:程序博客网 时间:2024/05/10 07:02

统计语言模型, Statistical Language Model.

1. 简介

自然语言具有上下文相关的特性, 所以统计语言模型就是为这种相关特性建立语言模型. 它是今天所有自然语言处理的基础.
判断一个句子是否合理, 就用概率来衡量.
一个句子就是一些词语的序列, 假定用S表示, S=w1,w2,...,wn, 那么S是一个通顺的句子的概率P(S)=P(w1,w2,...,wn).
利用条件概率的公式, 展开得

P(S)=P(w1,w2,...,wn)=P(w1)P(w2|w1)P(w3|w1,w2)...P(wn|w1,w2,...,wn1)(1)

其中P(w1)表示第一个词出现的概率, P(w2|w1)表示w_1已经出现的前提下, w_2**挨着它**出现的概率, 以此类推.
前两个比较好算, 但第三个就涉及到了三个变量w1,w2,w3, 再往后就更难算了.

2.马尔可夫假设

假设一个词wi在某个位置出现的概率只与它前面的一个词wi1有关, 这就是马尔可夫假设.
基于此假设, 式(1)就可以改写为

P(S)=P(w1,w2,...,wn)=P(w1)P(w2|w1)P(w3|w2)...P(wn|wn1)(2)

3. n-gram model

式(2)对应的统计语言模型就是bi-gram model, 二元模型.
类似地, 假设一个词wi在某个位置出现的概率只与它前面的两个词wi1,wi2有关, 那么就得到了三元模型.

4.词袋模型

词袋, Bag of words.
对于一个文本,忽略其词法, 语法, 语义, 仅将其看做是一个词的集合, 文本中每个词的出现都是独立的, 那么就得到了词袋模型.
一个语料库由若干文本组成, 先计算出语料库的词袋, 然后就可以用词向量来表示每个文本.

文章A: 她很漂亮, 我都想去搭讪了.
文章B: 我去上学了.
词袋为{她 ,很 , 漂亮 ,我 ,都, 想, 去, 搭讪, 了,上学}

文章 她 很 漂亮 我 都 想 去 搭讪 了 上学 文章A 1 1 1 1 1 1 1 1 1 0 文章B 0 0 0 1 0 0 1 0 1 1

5.词向量

对词典D中的任意词w, 都可以用一个固定长度的实值向量v(w)Rm来描述. 我们称v(w) 是w的词向量, 维度为m.

5.1 one-hot

词袋模型中的文章(或 句子)向量可以看做所包含的词语的词向量加和, 即 wv(w).
其中每个词向量都有one-hot的特征, 即某一分量不为0 , 其他分量全为0.
one-hot有两个缺陷:

  1. 对于同义词等, one-hot 不能够表示这种相似关系.
  2. 词袋模型模型越大, 文章向量越稀疏, 这种维度的激增会对计算提出更高的要求.

5.2 distributed representation

对词典中的每一个词语都用固定长度的向量来表示, 不同于one-hot, 它形如
v(w)={0.054,0.22,0.12,0.215,0.17093,...}.
在word2vec中, 这个向量的维度是自定义的, 默认是100维.

1 0