马尔可夫假设是什么

马尔可夫假设的原理是根据大量的数据分析后,根据已经存在的各种资料、句子,根据资料中一个文字出现后下一个文字紧跟着出现的比例来判断一个句子是否有意义,是否合理。

也就是现在自然语言分析的基础大多是基于马尔可夫假设。

公式

马尔可夫假设

解释

这个公式的意思就是说W(i)这个字出现在W(i-1)的字后边出现的几率大约是:W(i-1)W(i)成对出现的次数除以W(i-1)出现的次数。

直接看这个公式结论,可能会觉着很荒谬,但可以看一下这个公式推导的过程,可能会改变你的改观。

先插一段,这个公式用简单的一个出现次数的比例来做语言分析,恰恰能证明前边我说的需要有大量的数据分析(也就是各种分词、神经网络先要投喂大量语料的原因)

推导过程

首先,现在的分词算法或者自然语言处理都不是基于语法、语义来处理的,并不是按照咱们上学时候老师教的主、谓、宾等概念来做的。原因可以去看一下数学之美中前几章。

其次,马尔可夫假设并不是一个现代的或者说现在各种分词算法中最先进的算法,甚至可以说马尔可夫假设是很简陋很粗糙的东西,但马尔可夫假设是划时代的后续的很多分词算法都是基于此演进过来的。思路和想法才是最重要的。

最后,理解马尔可夫假设的前提是需要认可这个设想:比如【需要】这个词语,出现【需】字之后,出现【要】字的概率比出现【你我他】的概率要大很多,所以如果发现第一个字是【需】第二个字是【要】,那么就可以认为这两个字大概率是有意义的,是正常应该会出现的情况。依次类推【需要】出现之后再出现【你】或者出现【我】字的概率远远大于再出现一个【要】字的概率。

进入正文:

基于以上的判断,贾里尼克提出了一个统计模型,如果若干个文字随机来组成一段话,每个字后边紧跟着字出现的概率越大的话,这一段话是一段正常、可理解、有含义的句子可能性最大。

也就是如果S表示一个句子,这个句子由W1W2~Wn个字来组成,那么S这个连续出现的文字组合是一个正常的句子的可能性(概率)P(S),也就等于历史上W1W2~Wn连在一起出现的概率。

贾里尼克条件概率

继续推导,可得:P(W1,W2,W3~Wn)出现的概率==P(W1)*P(W1|W2)~P(Wn|W1,W2,Wn-1)

其中P(W1)是第一字W1出现的几率,P(W1|W2)是出现W1之后,W2紧跟着出现的几率,依次类推P(Wn|W1,W2,Wn-1),这样看来并没有什么问题,但是每个字出现的几率都是依赖它之前的所有字出现过的几率来计算,这个计算量是指数级上涨的(可以想象一下说书先生讲过的故事,要地主第一天给自己一粒米,第二天翻倍)。

所以,这时候马尔可夫简化了这个计算方法,提出其实第二个词出现的几率只和它之前的字有关,不用计算它之前的所有字,可以往前推导1-3个字的概率即可,这样计算量不大而且效果并不算太差。

引用数学之美第二版中作者吴军博士的结论即,谷歌翻译中也仅仅往前推导了4个字,一般实际中往前推导3个字就已经可以满足需求了

这样这个公式就可以变形成:

贾里尼克条件概率推导

条件概率P(Wi|Wi-1)的定义为:

条件概率是指事件A在另外一个事件B已经发生条件下的发生概率

即:

条件概率

这样,根据大数定理可得:

相对频度

这样,约掉相同的分母,就可以得出最终公式:

马尔可夫假设

其中`#`表示数量

注意点

中间用到了大数定理,也就是说,统计数据要足够多才有效,所以需要有大量的语料投喂,而且因为不同行业之间语料连续出现的差异性,投喂的语料尽可能是相关行业的资料才会让结果更准确。

为什么要写这个文章

  1. 有朋友说过,不动笔墨不读书
  2. 相对结果来说,过程更有意义