数学之美——阅读笔记(二)

本文是数学之美系列的阅读笔记,主要探讨了中文分词的一致性和准确性问题,以及介绍了隐马尔可夫模型在自然语言处理中的应用。通过马尔可夫链和维特比算法等工具,解决语言处理中的解码问题。
摘要由CSDN通过智能技术生成

数学之美 —— 阅读笔记(二)

中文分词

中文不同于西方语言,词与词之间没有明显的分界,所以需要先对句子进行分词才能进一步进行自然语言处理。为了完成这个任务,最容易想到的方法就是“查字典”,即从左向右扫描并匹配最长的词。但这种方法太过简单,后来发展出了一种最少词的分词理论来对“查字典”方法进行补充,然而对于有歧义的句子,这种补充也无能为力。

“北京大学生”
“北京大学 - 生”
“北京 - 大学生”

那么借鉴之前提到的统计模型,利用统计语言模型分词可以用几个数学公式简单概括:假定一个句子 S 可以有以下几种分词方法

A1,A2,...,AkB1,B2,...,BmC1,C2,...,Cn

其中每个元素都是汉语中的一个词,如果 A1,A2,...,Ak 是最好的分词结果,那么必定满足

P(A1,A2,...,Ak)>P(B1,B2,...,Bm)P(A1,A2,...,Ak)>P(C1,C2,...,Cn)

讲到现在,我们可以将所有分词方案枚举出来然后计算其统计概率,最后选取概率最大的那一种输出。但一旦句子较复杂,这种策略的计算量会变得很大。后面会提到一种 维特比算法 来进行快速查找。

虽然西方语言不需要这样的分词系统,但其手写体的识别可以使用这种分词策略,因为其手写体的空格不是很清楚

分词的一致性

需要指出的是,语言学家对词语的定义不完全相同,有些词可以继续拆分。那么一个折中的方法是先作为一个长词进行处理,然后对这个长词内部再分词。一般来讲,根据不同的应用分词的颗粒度大小不同。例如,在机器翻译中,颗粒度应该大一些,而语音识别或搜索引擎中颗粒度相对要小一点。一个简单的例子,“清华大学” 我们可以将它作为一个整体,也可以把它分开成 “清华” 和 “大学” ,但在搜索引擎内如果用户搜索 “清华” 而找不到 “清华大学” 肯定是有问题的,可见对于不用的应用领域对分词粒度的大小要求是不同的。虽然可以对不同的应用构造不同的分词器,但这样做的效率不高。所以考虑让分词器支持不同层次的分词。它的基本方法是:

  1. 基于一个 基本词表 和一个 复合词表 建立语言模型 L1 L2;
  2. 首先以字串为输入,通过基本词表的模型 L1 先输出小粒度的分词结果(词串);
  3. 将小粒度的词串输入 L2 模型进行大粒度的分词;

其中分词的程序本身是一样的,改变了的只有输入和词表。这样做的依据在于首先基本词比较稳定,都是不能再分的基本单位,而分词方法又是一个已解决的问题,所以除了增加一些未登录词以外没什么需要研究的内容了。

分词的准确性

分词的不一致性可以分为 错误粒度不一致 两种,其中 错误 又分为两类。一类是 越界型错误,例如把 “北京大学生” 分为了 “北京大学 - 生”;另一类是 覆盖型错误,比如把人名分成了若干个单字。这些错误是需要通过改进分词器来解决的。
而对于粒度的错误,需要做的其实是尽可能地丰富各种复合词。

隐马尔可夫模型

自然语言是人类通信的媒介和工具,如果将自然语言处理回归到通信系统中的解码问题时,很多现在的问题就能解决了。
通信中的解码就是根据接收到的信号 o1,o2,... 还原出发送的信号 s1,s2,... 。那么用概率论的语言来描述就是在已知 o1,o2,... 的情况下,求令条件概率 P(s1,s2,...|o1,o2,...) 达到最大的那个发送的信息串

s1,s2,...=argmaxP(s1,s2,...|o1,o2,...)

通过贝叶斯公式再对上面的公式进行变换;当信息 o1,o2,... 已经产生,那么 P(o1,o2,...) 就可以忽略了,即将公式简化为

P(o1,o2,...|s1,s2,...)P(s1,s2,...)

马尔可夫链

随机过程中各个状态的概率分布,只与它的前一个状态有关,即 P(st|s1,s2,...,st1)=P(st|st1) 。满足这个 马尔可夫假设 的随机过程即为 马尔可夫过程(马尔可夫链)

隐马尔可夫模型 是马尔可夫链的一个扩展:任一时刻 t 的状态 st 是不可见的,而根据这个状态会产生一个观测值 ot ,这个 ot 只与 st 有关,被称为独立输出假设。
基于马尔可夫假设和独立输出假设,我们可以计算出某个特定的状态序列和产生输出符号的概率

P(s1,s2,...,o1,o2,...)=tP(st|st1)P(ot|st)

上面的这个公式,如果从通信的角度观察,其实是这样的

P(o1,o2,...|s1,s2,...)=tP(ot|st)P(s1,s2,...)=tP(st|st1)

三个基本问题

正如在隐马尔可夫模型的专题笔记中提到的,这三个问题分别是:

  1. 如何计算特定输出序列的概率;
  2. 给定输出序列,找最可能的状态序列;
  3. 如何训练参数;

前两个问题的答案分别是:

  1. 前向-后向算法(Forward-Backward)
  2. 维特比算法(Viterbi Algorithm)

至于第三个问题,参考我隐马尔可夫模型的笔记。(笔记之后放出来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值