语言模型
- 基于规则的模型
- 基于概率的模型
统计语言模型
-
问题:整个句子的概率:
为了保证句子通顺,不出现歧义,计算整个句子的概率
P(S) = P(w1,w2,w3,w4,...)
其中,S代表整个句子,w1,w2,w3,w4代表句子中的每个词,P(w1,w2,w3,w4,...)表示这些词按顺序出现的概率 -
转化为:所有词语的条件概率
P(S) = P(w1,w2,w3,w4,...) = P(w1)P(w2|w1)P(w3|w1,w2)P(w4|w1,w2,w3)... -
问题简化:马尔可夫简化
由于上一步中的靠后词语的条件概率太难计算,因为它与前面所有的词语都有关系,问题无法求解。所以,俄国科学家马尔可夫提出了一个简化计算方案(假设):任意一个词语的条件概率只与它前面紧邻的一个词有关。则:
P(S) ≈ P(w1)P(w2|w1)P(w3|w2)P(w4|w3)...
由于,条件概率只用了一个参数,称为二元模型。
注意:这个公式是在假设条件下得出的,并不是完全准确。但够用就行啦
-- 继续求解:
因为,词语W(i)和W(i-1)是两个独立、互斥的事件,P(wi,wi-1)=P(wi)*P(wi-1)。
则:P(wi|wi-1) = P(wi,wi-1)/P(wi-1)
Ps: 我怎么习惯性地想起了贝叶斯公式。贝叶斯解决的是两个彼此影响、不独立的对象,这里是独立的词语啊。
P(wi,wi-1):通过从语料库中去统计wi,wi-1两个词同时出现的频度。只要统计数量足够,由大数定律,这个频度就约等于它的真实概率;
P(wi-1):继续统计P(wi-1)在同一批文本中单独出现的频度。同样,由大数定律,这个频度就约等于它的真实概率。
-- 问题解决,计算出整个句子出现的概率P(S) -
效果评估:
马尔可夫简化方式还是过于简单,实际上一个句子中的词语通常并不仅仅与它前面紧邻的一个词有关。因此,还需要改进。 -
假设改进:假设当前词语与其前面最近的N个词语有关
这种假设被称为 N-1 阶马尔科夫假设,对应的语言模型被称为 N元模型。
症结:由于该方法的空间复杂度随N呈指数增长,决定了N不可能太大,否则计算机也无法计算。
现状:目前使用的模型中,通常 N=3,基本能够平衡模型准确度和资源占用、计算效率问题。 -
马尔科夫假设方法的局限:
由于实际中有时存在段落间的相关性。这种方法存在天生缺陷:无法解决长程依赖性问题。 -
其他:
后半部分还谈及了实际使用过程中遇到的:极低概率事件平滑、零概率问题等。
谈谈分词
示例:中国航天官员应邀到美国与太空总署的官员开会
-
以前的方法:
查字典:按照字典中的词语分类标识;
查字典优化:用更少的词语进行分类。 -
郭进:用统计语言模型进行分词
第一种分词:
A1,A2,A3,A4,A5,A6....
第二种分词:
B1,B2,B3,B4,B5,B6....
第三种分词:
C1,C2,C3,C4,C5,C6....
……
第n种分词:
N1,N2,N3,N4,N5,N6....
因为句子固定、词语有限,一个句子的分词组合是有限的。因此,可以通过同样的概率计算方法,找出概率最大的那个分词方式就行了。
当然,这种穷举分词组合的方法计算量还是比较大,有个更讨巧的办法:看成动态规划问题,用维特比算法快速找到最佳分词方法。--细节问题1:对词语的定义不同
示例:北京大学 or 北京、大学
解决办法:在分词的同时,找到复合词的嵌套结构。先找出“北京大学”,再找出它的嵌套词“北京”、“大学”。--细节问题2:不同的应用场景,对词语的颗粒度要求不同
解决办法:根据自己的应用需求,建立专门的分词系统。--延伸:西方语言中是否有分词问题
答案:其实西方语言本身并没有分词的需求,只是在手写识别输入中需要用到,以自动识别空格。
网友评论