马尔科夫|一个数学家数了数小说中的 20000 个字母,然后诞生了语言识别模型


北京联盟_本文原题:一个数学家数了数小说中的 20000 个字母 , 然后诞生了语言识别模型
语言识别模型源于一个数学家读小说的故事 。
1913年 , 俄罗斯数学家安德雷·安德耶维齐·马尔科夫拿起一本俄罗斯文学的经典作品 , 亚历山大·普希金的歌剧小说《尤金·奥涅金》 。 不过马尔科夫只是为了测试自1909年发展起来的概率论 。 数学家更想看到一个个字母后面的数学结构 。
那时的概率论主要用来分析轮盘赌局和硬币翻转等现象 , 认为之前的结果不会影响到的当前事件的可能性 。 但是马尔科夫不赞同 , 他觉得大多数事情都有因果关系 , 他想要通过概率分析一些事情 , 并建立模型 。
马尔科夫|一个数学家数了数小说中的 20000 个字母,然后诞生了语言识别模型
本文插图
【马尔科夫|一个数学家数了数小说中的 20000 个字母,然后诞生了语言识别模型】

德雷·安德耶维齐·马尔科夫
《尤金·奥涅金》成为马尔科夫的试验材料 。 他的假设听上去匪夷所思——这本经典文学作品中 , 某个位置会出现什么字母 , 某种程度上取决于它之前的字母 。
计算机还没出现的1913 , 马尔科夫抄录了《尤金·奥涅金》书中的前 20000 个字母 , 不包括标点和空格 。 然后按10*10的排列方式 , 填在200个网格中 , 开始逐行逐列对元音字母进行计数 。 统计完发现 , 43%的字母是元音 , 57%是辅音 。
马尔科夫还将这些字母分成成对的元音和辅音组合 , 结果是:1104个元音对、3827个辅音对、15069个元音-辅音和辅音-原因对 。 从统计学看 , 这证明 , 在普希金文本中的任何给定字母 , 如果是元音 , 则下一字母可能是辅音 , 反之亦然 。
马尔科夫用这个结果证明《尤金·奥涅金》的文本不是字母的随机分布 , 而是具有可以建模的基本统计的性质 。 后来 , 人们称马尔科夫这是给自己的数学技能找到一个实际用途——用链模型来模拟俄罗斯文学中辅音和元音的头韵法 。
链模型就是马尔科夫链 , 又称离散时间马尔科夫链 , 指在状态空间中 , 从一个状态转换到另一个状态的随机过程 , 该过程是“无记忆”性质的 , 下一状态的概率分布只能由当前状态决定 。
马尔科夫在随机过程领域的研究成果还有马尔科夫决策过程 , 它提供面对部分随机、部分可由人类决策的状态下 , 如何进行决策 , 经过演化 , 被广泛应用在机器人学、自动化控制等领域 。
在马尔科夫链衍和马尔科夫决策过程理论基础上 , 20世纪60年代 , Leonard E. Baum 和其它一些作者描述了一种隐性马尔科夫模型 , 这是大多数现在自动语音识别系统的基础 。
维基百科上有一个事例来解释隐形马尔科夫模型 。
假设你有一个住的很远的朋友 , 他会每天打电话说当天做了什么 。 他只会做三件事:公园散步、购物、清理房间 , 他根据天气选择做什么事 。 你不知道他住处每天的天气怎么样 , 但是你知道总趋势 , 在他告诉你每天做了什么事情的基础上 , 你要猜测他所在地的天气状况 。
也就是说 , 在这个隐形马尔科夫模型中 , “雨”和“晴”的状态对你来说是隐藏的 , 可观察的数据就是“公园散步”、“购物”、“清理房间” , 那么用 Python 写下来就是:
马尔科夫|一个数学家数了数小说中的 20000 个字母,然后诞生了语言识别模型
本文插图

在这些代码中 , start_probability 代表第一次打电话的不确定性 , 此时概率分布不平均 。 transition_probability 表示基于马尔科夫链模型的天气变迁 。 emission_probability 表示了你朋友每天做某件事的概率 。
再以语音系统为例 , 隐形马尔科夫模型在语音处理上 , 可以通过隐藏条件猜测下一个音 , 具体可从语义和发音两方面看 。 一是单字的发音有前后关系 , 如英语中的"They are"常常发音成"They're" , 或是"Did you"会因为"you"的发音受"did"的影响 , 常常发音成"did ju" 。


推荐阅读