130 likes | 490 Views
自然语言处理 --- 统计语言模型. By super.Y. 自然语言. 怎样理解自然语言? 惯性思维 :分析语句,获取语义。 分析语句 E.g. 男篮惨败伊朗. 句子. 句号. 谓语. 主语. 名字短语. 名词. 动词. 名词. 男篮 惨败 伊朗 。. 规则的劣势. 好复杂! 好慢! 计算机程序语言是上下文无关文法,而自然语言是上下文有关。根据高德纳( Donald Knuth )提出的计算复杂度,对于上下文无关文法复杂度是语句长度的二次方,而有关文法为六次方。
E N D
自然语言处理---统计语言模型 By super.Y
自然语言 • 怎样理解自然语言? • 惯性思维:分析语句,获取语义。 • 分析语句 • E.g.男篮惨败伊朗
句子 句号 谓语 主语 名字短语 名词 动词 名词 男篮 惨败 伊朗 。
规则的劣势 • 好复杂! • 好慢!计算机程序语言是上下文无关文法,而自然语言是上下文有关。根据高德纳(Donald Knuth)提出的计算复杂度,对于上下文无关文法复杂度是语句长度的二次方,而有关文法为六次方。 • 常识。The pen is in the box. • The box is in the pen.
统计语言模型 • 贾里尼克提出了基于统计的语音识别的框架。 • 一个句子是否合理?概率大的比较合理。 • S=w_1w_2….w_n. • P(S)=P(w_1)P(w_2|w_1)…P(w_n|w_1..w_n-1)
好难算?!!!! • P(w_n|w_1..w_n-1),怎么算???? • 马尔科夫假设:w_i只与w_i-1 有关。 • P(S)=P(w_1)P(w_2|w_1)…P(w_n|w_n-1)
P(w_i|w_i-1)=P(w_i,w_i-1) /P(w_i-1) • 语料库(Corpus),根据大数定理。 • P(w_i,w_i-1) ≈ #(w_i-1,w_i)/# • P(w_i-1) ≈ #(w_i-1)/#
模型的训练,零概率问题 • 如果 #(w_i-1,w_i) = 0 , P(w_i|w_i-1)=0? • 如果 #(w_i-1,w_i) = #w_i-1 = 1 • P(w_i|w_i-1)=1? • 显然不对
怎么办? • 1.增加数据量,增大语料库 • 实践证明,但现实中是无法避免零概率问题的。 • 2.古德-图灵估计(Good – Turing Estimate) • 对于没有看见的事件,我们不能认为它概率为0,因此我们要从概率总量中,分配一个很小的比例给这些没有看见的事件。这样,看见的那些事件概率总和就小于1.
古德-图灵估计 • 语料库中出现r次的词有N(r)个。则 • N=∑ r N(r). • 当r很小的时候,它的统计就不可靠,因此出现这样的r次的词在估计它的概率时就要使用一个更小的次数,d_r < r. • d_r = (r+1) N(r+1) / N(r) • 一般短的词出现次数大于长的词(Zipf ’s Law)。 • 即N(r+1) < N(r),所以一般情况下d_r < r。
通过这种微调一石二鸟。 • 1.解决了零概率问题。 • 2.下调了出现频率很低的词的概率。 • 实际操作中,次数超过某个阈值的词不下调频率。
中文分词 • 1.最大匹配(结婚的和尚未结婚的) • 结婚/的/和尚/未结婚的 • 2.最少分词(为人民办公益) • 为人/民办/公益 • 3.统计语言模型。找出概率最大的分词方法。