数学之美读书笔记(2)

谈谈分词

分词方法,最容易想到的就是查字典,即从左到右把句子扫描一遍,遇到字典里有的词,就标识出来,遇到复合词就找最长的词匹配。这个方法可以解决七八成的问题,但是还是过于单薄。

之后提出的用统计语言模型进行分词的方法,效果上好的多。对于给定的一个句子,有若干中分词方法,A1,A2,A3..An, B1,B2,B3…Bn, C1,C2,C3…Cn,只要利用统计语言模型比较哪种分词方案形成的句子出现的概率最大就找到了最好分词。在选择分词方法的时候,穷举不是一个好的想法,可以使用动态规划法,后文将会提到一种动态规划分词方法维特比法。

在应用不同的时候,分词的粒度也会有所不同,比如在机器翻译中分词的粒度就应该大一些,这样对于“北京大学”这样的词才能够被整体翻译。

人工分词产生不一致性的原因主要在于人们对词的颗粒度的认识问题。

用同一个分词器处理不同的语言模型的时候,可以建立一个颗粒最小的语言模型,包括所有不可再分的词汇,再在此基础上建立一个链接的颗粒更大的语言模型,这样就可以用同一个分词器指定不同的参数进行分词工作。

隐含马尔可夫模型

隐含马尔可夫模型是一个通信问题中常用的模型,用在自然语言处理中有很好的效果。

通信模型:

通信的本质就是一个解编码和传输的过程。但自然语言处理早期的努力都集中在语法、语义和知识表述上,离通信的原理越来越远。

一个典型的通信系统(包含通信六要素)

信息上下文(发送者)-> s1,s2,s3…sn(编码)->传递的信息(信道)->o1,o2,o3…on -> 接收的信息(接收者)

自然语言处理和通信模型的联系:在从汉语到英语的翻译中,说话者讲的是汉语,但是信道传播编码的方式是英语,利用计算机接收到英语的信息,去推测说话者的汉语意思,这就是机器翻译。要根据带有拼写错误的语句推测说话者的想表达的正确意思,这就是自动纠错。那么自然语言处理就变成了如何根据在接收端的观测信号o1,o2,o3…on去推测信号源发出的信息s1,s2,s3…sn。用概率论的语句来描述,就是在已知o1,o2,o3…on的情况下,求得条件概率P(s1,s2,s3…sn|o1,o2,o3…on)达到最大的那个信息串s1,s2,s3…sn,即

s1,s2,s3...=ArgMaxPall,s1,s2,s3...(s1,s2,s3...|o1,o2,o3...) s 1 , s 2 , s 3... = A r g M a x P a l l , s 1 , s 2 , s 3... ( s 1 , s 2 , s 3... | o 1 , o 2 , o 3... )

求这个条件概率可以使用贝叶斯公式,把上述公式等价变换成

P(o1,o2,o3...|s1,s2,s3...)P(s1,s2,s3...)P(o1,o2,o3...) P ( o 1 , o 2 , o 3... | s 1 , s 2 , s 3... ) ⋅ P ( s 1 , s 2 , s 3... ) P ( o 1 , o 2 , o 3... )

首先分母接收信号一旦产生就不会改变,其概率为1,而 P(s1,s2,s3...) P ( s 1 , s 2 , s 3... ) 表示其本身是一个在接收端合理的信号的可能性,而 P(s1,s2,s3...|o1,o2,o3...) P ( s 1 , s 2 , s 3... | o 1 , o 2 , o 3... ) 表示信息在被传输后变为接收信息的可能性。

隐含马尔可夫模型是马尔可夫链的一个扩展,任意时刻t的状态 st s t 是不可见的。但是隐含马尔可夫链模型在每个时刻都会输出一个信号 ot o t ,而且 ot o t st s t 相关且仅与 st s t 有关,这个被称为独立输出假设。基于马尔可夫假设和独立输出假设,可以计算出特定状态序列s1,s2,s3…产生输出符号o1,o2,o3…的概率。

P(s1,s2,s3...,o1,o2,o3...)=tP(St|St1)P(ot|St) P ( s 1 , s 2 , s 3... , o 1 , o 2 , o 3... ) = ∏ t P ( S t | S t − 1 ) ⋅ P ( o t | S t )

将马尔可夫假设和独立输出假设带入
P(o1,o2,o3...|s1,s2,s3...)=tP(ot|St)P(s1,s2,s3...)=tP(St|St1) P ( o 1 , o 2 , o 3... | s 1 , s 2 , s 3... ) = ∏ t P ( o t | S t ) P ( s 1 , s 2 , s 3... ) = ∏ t P ( S t | S t − 1 )

这样,通信中的解码问题就可以用隐含马尔可夫模型来解决了。自然语言处理也可以用这个模型来处理。至于如何找到钥匙别的句子s1,s2,s3…,可以使用维特比算法。

马尔可夫模型的训练

隐式马尔可夫模型训练的三个基本问题:
- 给定一个模型,如何确定某个输出序列的概率
- 给定一个模型和固定的输出序列,如何找到最可能产生这个输出的状态序列
- 给定足够的数据,如何确定隐含马尔可夫模型的各个参数

第一个问题:forward-backward算法;第二个问题:维克比算法;第三个问题:训练问题
首先根据条件概率的定义:

P(ot|St)=P(ot,st)P(St) P(St|St1)=P(St,St1)P(St1) P ( o t | S t ) = P ( o t , s t ) P ( S t )   P ( S t | S t − 1 ) = P ( S t , S t − 1 ) P ( S t − 1 )

根据大数定理,前者概率可以直接由语料库计算出来,但是由于需要分子中的频度,所以需要对数据进行人工标注,这就是有监督的训练方法。但是人工标注对于有些应用来说,成本非常高,所以需要有一种无监督的训练方法。这其中就有效果较好的鲍姆-韦尔奇算法。

鲍姆-韦尔奇算法的思想是这样的:

首先找到一组能够产生O输出序列的模型参数,因为转移概率和输出概率为均匀分布,模型一定有输出,于是我们有一个这样一个初始的模型 Mθ0 M θ 0 。假定解决了第一个问题和第二个问题,不仅可以算出 Mθ0 M θ 0 产生O的概率,还可以找到这个模型产生O的所有可能的路径和这些路径的概率。这些可能的路径,实际上记录了每个状态经历了多少次,到达了哪些状态,输出了哪些数据,这些可以看作是“标注的训练数据”,根据公式计算出一组新的模型参数 θ1 θ 1 ,从 M0 M 0 M1 M 1 的过程可以称为是一次迭代。可以证明

P(O|Mθ1)>P(O|Mθ0) P ( O | M θ 1 ) > P ( O | M θ 0 )

依次迭代可以找到更好的模型。该算法每次迭代都是不断的估计模型参数,使得输出的概率达到最大化。因此这个过程被称为期望值最大化,简称EM过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值