• 《数学之美》——第三章 个人笔记


       

    第三章    统计语言模型

     

    1 用数学的方法描述语言规律

    普遍描述:假定S表示某一个有意义的句子,由一连串特定顺序排列的词w1,w2,...,wn组成,(这里应该是特征列表)这里n是句子的长度。现在,我们想知道S在文本中出现的可能性,也就是数学熵上所说的S的概率P(S)。

    马尔可夫假设后,

    2 延伸阅读:统计语言模型的工程诀窍

    2.1    高阶语言模型

    当前词wi的概率值取决于前面N-1个词,上面的假设被称为N-1阶马尔可夫假设,对应的语言模型称为N元模型。N=2就是前面的二元模型。N=1的一元模型实际上是一个上下文无关的模型,N=3在实际中应用最多。

    N为什么一般取值都很小?

    ①首先,N元模型的大小(空间复杂度)几乎是N的指数函数,即0(丨V丨**N),这里丨V丨是一种语言词典的词汇量,一般在几万到几十万个。

    ②而使用N元模型的速度(时间复杂度)也几乎是一个指数函数,0(丨V丨**N-1)。因此,N不能很大。当N从1到2,再从2到3,效果显著;从3到4,提升就不是很显著了,资源的耗费缺相反。Google的罗塞塔是4元。

    2.2    模型的训练、零概率问题和平滑问题

    在数理统计中,我们之所以敢用对采样数据进行观察的结果来预测概率,是因为有大数定理,要求有足够的观测值(增加数据量真的是一个真理)。

    针对零概率:

    假定r比较小时,统计就不可靠,因此在计算那些出现r次的词的概率时,要实用一个更小一点的次数,是dr,

    dr = (r+1)* Nr+1/Nr  显然 ∑dr*Nr = N.

    文中有个Zipf定律(Zipf's Law):出现一次的词的数量比出现两次的多,出现两次的比出现三次的多。

    出现r次的词的数量Nr和r的关系:

    这里就解决了未出现的词,给其赋了一个很小的非零值。

    文章中还有二元组和三元组的模型概率公式。卡茨退避法(Katz backoff)

    还有一个叫删除差值的方法:用低阶语言模型和高阶模型进行线性插值来达到平滑的目的。

    公式如下:三个λ均为正数且加和为1。

     

    2.3    语料的选取问题

    训练数据通常越多越好,数据的预处理很重要。

    训练语料和模型应用的领域要切合,这样模型的效果才能体现。

  • 相关阅读:
    软件测试(3)--coverage graph
    st_lab1
    数据结构与算法—单向链表
    数据结构与算法—顺序表
    Python的正则表达式(re包)
    Python的内置装饰器@property、@staticmethod、@classmethod
    Python的装饰器
    Python的生成器和迭代器
    Python变量的引用、拷贝和回收机制
    git常用命令总结
  • 原文地址:https://www.cnblogs.com/NEWzyz/p/8933003.html
Copyright © 2020-2023  润新知