NLP(三)_统计语言模型

概念

统计语言模型:是描述自然语言内在的规律的数学模型。广泛应用于各种自然语言处理问题,如语音识别、机器翻译、分词、词性标注,等等。简单地说,语言模型就是用来计算一个句子的概率的模型

即P(W1,W2,W3....WK)。利用语言模型,可以确定哪个词序列的可能性更大,或者给定若干个词,可以预测下一个最可能出现的词语。

N_gram语言模型

  • 简述

    NLP中,人们基于一定的语料库,可以利用Ngram来预计或者评估一个句子是否合理。另外一方面,Ngram可以用来评估两个字符串之间的差异程度,这是模糊匹配中常用的一种手段。而且广泛应用于机器翻译、语音识别、印刷体和手写体识别、拼写纠错、汉字输入和文献查询。

  • 引入Ngram模型

    假定S表示某个有意义的句子,由一串特定顺序排列的词w1,w2,w3,..,wn组成,n是句子的长度。想知道S在文本中(语料库)出现的可能性,也就是数学上所说的概率P(S):

    P(S)=P(w1,w2,w3,..,wn)=
    P(S)=P(w1,w2,w3,..,wn)=P(W1)P(W2|W1)P(W3|W1,W2)..P(Wn|W1,W2,..,Wn?1)

可是这样的方法存在两个致命的缺陷:

參数空间过大:条件概率P(wn|w1,w2,..,wn-1)的可能性太多,无法估算,不可能有用;

数据稀疏严重:对于非常多词对的组合,在语料库中都没有出现,依据最大似然估计得到的概率将会是0。最后的结果是,我们的模型仅仅能算可怜兮兮的几个句子,而大部分的句子算得的概率是0。

  • 马尔科夫假设

    为了解决参数空间过大的问题二提出的马尔科夫假设指出:随意一个词出现的概率只是他前面出现的有限的一个或者几个词相关

如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram(这时的Ngram模型的 N=2):

    P(S)=P(w1,w2,w3,..,wn)=P(W1)P(W2|W1)P(W3|W1,W2)..P(Wn|W1,W2,..,Wn?1)≈P(W1)P(W2|W1)P(W3|W2)..P(Wn|Wn?1)

假设一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram(这时 N=3):

    P(S)=P(w1,w2,w3,..,wn)
        =P(W1)P(W2|W1)P(W3|W1,W2)..P(Wn|W1,W2,..,Wn?1)
        ≈P(W1)P(W2|W1)P(W3|W2,W1)..P(Wn|Wn?1,Wn?2)

一般来说,N元模型就是假设当前词的出现概率只与它前面的N-1个词有关。而这些概率参数都是可以通过大规模语料库来计算,高于四元的用的非常少,由于训练它须要更庞大的语料,并且数据稀疏严重,时间复杂度高,精度却提高的不多。

  • 数据平滑

    对语言而言,由于数据稀疏的存在,极大似然法不是一种很好的参数估计办法。这时的解决办法,我们称之为“平滑技术”。(《数学之美》)

数据平滑的目的有两个:

  1. 一个是使全部的Ngram概率之和为1;
  2. 二是使全部的Ngram概率都不为0。

其主要策略是把在训练样本中出现过的事件的概率适当减小,然后把减小得到的概率密度分配给训练语料中没有出现过的事件。

(数据平滑技术略)

N_gram模型应用(简述)
  • 基于Ngram模型定义的字符串距离

模糊匹配的关键在于如何衡量两个长得很像的单词(或字符串)之间的“差异”,这种差异通常又称为“距离”。除了可以定义两个字符串之间的编辑距离(通常利用Needleman-Wunsch算法或Smith-Waterman算法),还可以定义它们之间的Ngram距离。

  • 利用Ngram模型评估语句是否合理

    从统计的角度来看,自然语言中的一个句子S可以由任何词串构成,不过概率P(S)有大有小。例如:

    S1 = 我刚吃过晚饭
    S2 = 刚我过晚饭吃

    显然,对于中文而言S1是一个通顺而有意义的句子,而S2则不是,所以对于中文来说P(S1)>P(S2)。

另外一个例子是,如果我们给出了某个句子的一个节选,我们其实可以能够猜测后续的词应该是什么,例如:

    她真在认真....

假设我们现在有一个语料库如下,其中是句尾标记:

<s1><s2>yes no no no no yes</s2></s1>
<s1><s2>no no no yes yes yes no</s2></s1>

下面我们的任务是来评估如下这个句子的概率:

<s1><s2>yes no no yes</s2></s1>

我们来演示利用trigram模型来计算概率的结果:

 P(yes|<s1>,<s2>)=1/2,
 P(no|yes,no)=1/2,
 P(</s2>|no,yes)=1/2,
 P(no|<s2>,yes)=1
 **P(yes|no,no)=2/5**
 P(</s1>|yes,</s2>)=1

所以我们要求的概率就等于:

1/2×1×1/2×2/5×1/2×1=0.05

  • 基于Ngram模型的文本分类器

    只要根据每个类别的语料库训练各自的语言模型,实质上就是每一个类别都有一个概率分布,当新来一个文本的时候,只要根据各自的语言模型,计算出每个语言模型下这篇文本的发生概率,文本在哪个模型的概率大,这篇文本就属于哪个类别了!

  • Ngram在语言识别中的应用

    当要判断一个新的文档是用的什么语言时,我们首先要创建文档的Ngram概要文件并算出这个新文档概要文件与语言概要文件之间的距离。这个距离的计算根据的是两个概要文件之间的“out-of-place measure”。选择最短的距离,它表示此特定的文档属于该语言。这里要引入一个阈值,它的作用是当出现任何超过阈值的距离时,系统就会报告这个文档的语言不能被判定或判定有误。

  • 语音识别举例
      nixianzaizaiganshenme
      你现在在干什么?
      你西安载感什么?

    其对应的发音是完全一致的,这时如果我们借助于语言模型,我们会算出这句话的概率:

       P(“你”|“<s>”,“<s>”)P(“现在”|“你”,“<s>”)P(“在”|“你”,“现在”)P(“干什么”|“在”,“现在”)

    远大于

       P(“你”|“<s>”,“<s>”)P(“西安”|“你”,“<s>”)P(“载”|“西安”,“你”)P(“感”|“西安”,“载”)P(“什么”|“在”,“现在”)

隐马尔科夫模型

待续

时间: 2024-10-16 19:52:08

NLP(三)_统计语言模型的相关文章

读《数学之美》第三章 统计语言模型

自然语言从产生开始,逐渐演变为一种基于上下文相关的信息表达和传递方式,在计算机处理自然语言时,一个最基本的问题就是为自然语言上下文相关的特性建立数学模型,叫做统计语言模型(Statistical Language Model),它是自然语言处理的基础,广泛应用于机器翻译.语音识别.印刷体或手写体识别.拼音纠错.汉字输入和文献查询等. 对于一句通顺的话<1>,如果改变一些词的顺序,或替换掉一些词<2>,它的意思就含糊了,如果随机打乱<3>,则完全不知所云了.对于<1

第三章:统计语言模型

1.用数学方法描述规律 由于自然语言具有上下文相关性,所以我们要依此建模,这就是我们常说的统计语言模型(statistical Language Model). 比如一句话:国家主席习近ping昨天宣布将给非洲提供100亿美元的资金,帮助他们发展. 这句话很容易理解.但是如果换成:习近ping国家主席将宣布100亿美元的资金,帮助他们发展给非洲.这样意思含混了,虽然多少还能猜到一点.但是如果换成习近ping昨天宣布将给非洲国家主席提供100亿美元的资,帮助他们金发展.基本上读者就不知所云了. 针

经典统计语言模型

HAL, LSA, 与COALS 本文介绍三个经典统计语言模型, HAL,LSA, 与COALS. 拍拍脑袋想, 可以怎样表示一个词语? 1. 级级递增 e.g 表示百合 百合<花<植物<物体 2. 同义词 e.g 表示好 好, 不错,还行,棒棒哒-- 这样的representation带来的问题: 对于形容词, 同义词不能表示程度 无新词的定义 主观性 难以量化词语相似度 为了解决这个问题, 1957年, Firth提出了之后统计NLP中的一个常用思想, 用一个词在句中的neighbo

统计语言模型浅谈

统计语言模型 统计语言模型(Statistical Language Model)即是用来描述词.语句乃至于整个文档这些不同的语法单元的概率分布的模型,能够用于衡量某句话或者词序列是否符合所处语言环境下人们日常的行文说话方式.统计语言模型对于复杂的大规模自然语言处理应用有着非常重要的价值,它能够有助于提取出自然语言中的内在规律从而提高语音识别.机器翻译.文档分类.光学字符识别等自然语言应用的表现.好的统计语言模型需要依赖大量的训练数据,在上世纪七八十年代,基本上模型的表现优劣往往会取决于该领域数

N-gram统计语言模型(总结)

N-gram统计语言模型 1.统计语言模型 自然语言从它产生開始,逐渐演变成一种上下文相关的信息表达和传递的方式.因此让计算机处理自然语言.一个主要的问题就是为自然语言这样的上下文相关特性建立数学模型. 这个数学模型就是自然语言处理中常说的统计语言模型,它是今天全部自然语言处理的基础,而且广泛应用与机器翻译.语音识别.印刷体和手写体识别.拼写纠错.汉字输入和文献查询. 2.N-Gram N-Gram是大词汇连续语音识别中经常使用的一种语言模型.对中文而言,我们称之为汉语语言模型(CLM, Chi

SDUT 3342 数据结构实验之二叉树三:统计叶子数

数据结构实验之二叉树三:统计叶子数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点).请建立二叉树并求二叉树的叶子结点个数. Input 连续输入多组数据,每组数据输入一个长度小于50个字符的字符串. Output 输出二叉树的叶子结点个数. Example Input abc,,de,g,,f

[IR课程笔记]统计语言模型

Basic idea 1.一个文档(document)只有一个主题(topic) 2.主题指的是这个主题下文档中词语是如何出现的 3.在某一主题下文档中经常出现的词语,这个词语在这个主题中也是经常出现的. 4.在某一主题下文档中不经常出现的词语,这个词语在这个主题中也是不经常出现的. 5.由此,概率计算方法可以近似为: Ranking 当给定查询q时,怎么根据统计语言模型进行排序呢?有三种排序方法,分别是:1.Query-likelihood 2.Document-likelihood 3.Di

N-gram统计语言模型

N-gram统计语言模型 1.统计语言模型 自然语言从它产生开始,逐渐演变成一种上下文相关的信息表达和传递的方式,因此让计算机处理自然语言,一个基本的问题就是为自然语言这种上下文相关特性建立数学模型.这个数学模型就是自然语言处理中常说的统计语言模型,它是今天所有自然语言处理的基础,并且广泛应用与机器翻译.语音识别.印刷体和手写体识别.拼写纠错.汉字输入和文献查询. 2.N-Gram N-Gram是大词汇连续语音识别中常用的一种语言模型,对中文而言,我们称之为汉语语言模型(CLM, Chinese

从规则到统计与统计语言模型

http://blog.csdn.net/u012637501 一.自然语言处理-从规则到统计 1.基于规则的自然语言处理 在20世纪60年代,摆在科学家面前的问题是怎样才能让机器理解自然语言.当时普遍的认识是首先要做好两件事,即分析语句(语法)和获取语义.由于西方的语言学家们已经对各种自然语言进行了非常形式化的总结,学习语法规则.词性和构词法对于学习西方语言尤为重要,并且当时语法规则又非常容易用计算机的算法来描述,所有当时的一些科学家就更坚定的认为基于规则才是自然语言处理最好的方法.然而,事实