《数学之美》统计语言模型、分词

语言模型

  • 基于规则的模型
  • 基于概率的模型

统计语言模型

  • 问题:整个句子的概率
    为了保证句子通顺,不出现歧义,计算整个句子的概率
    P(S) = P(w1,w2,w3,w4,...)
    其中,S代表整个句子,w1,w2,w3,w4代表句子中的每个词,P(w1,w2,w3,w4,...)表示这些词按顺序出现的概率

  • 转化为:所有词语的条件概率
    P(S) = P(w1,w2,w3,w4,...) = P(w1)P(w2|w1)P(w3|w1,w2)P(w4|w1,w2,w3)...

  • 问题简化:马尔可夫简化
    由于上一步中的靠后词语的条件概率太难计算,因为它与前面所有的词语都有关系,问题无法求解。所以,俄国科学家马尔可夫提出了一个简化计算方案(假设):任意一个词语的条件概率只与它前面紧邻的一个词有关。则:
    P(S) ≈ P(w1)P(w2|w1)P(w3|w2)P(w4|w3)...
    由于,条件概率只用了一个参数,称为二元模型。
    注意:这个公式是在假设条件下得出的,并不是完全准确。但够用就行啦
    -- 继续求解:
    因为,词语W(i)和W(i-1)是两个独立、互斥的事件,P(wi,wi-1)=P(wi)*P(wi-1)。
    则:P(wi|wi-1) = P(wi,wi-1)/P(wi-1)
    Ps: 我怎么习惯性地想起了贝叶斯公式。贝叶斯解决的是两个彼此影响、不独立的对象,这里是独立的词语啊。
    P(wi,wi-1):通过从语料库中去统计wi,wi-1两个词同时出现的频度。只要统计数量足够,由大数定律,这个频度就约等于它的真实概率;
    P(wi-1):继续统计P(wi-1)在同一批文本中单独出现的频度。同样,由大数定律,这个频度就约等于它的真实概率。
    -- 问题解决,计算出整个句子出现的概率P(S)

  • 效果评估:
    马尔可夫简化方式还是过于简单,实际上一个句子中的词语通常并不仅仅与它前面紧邻的一个词有关。因此,还需要改进。

  • 假设改进:假设当前词语与其前面最近的N个词语有关
    这种假设被称为 N-1 阶马尔科夫假设,对应的语言模型被称为 N元模型。
    症结:由于该方法的空间复杂度随N呈指数增长,决定了N不可能太大,否则计算机也无法计算。
    现状:目前使用的模型中,通常 N=3,基本能够平衡模型准确度和资源占用、计算效率问题。

  • 马尔科夫假设方法的局限:
    由于实际中有时存在段落间的相关性。这种方法存在天生缺陷:无法解决长程依赖性问题。

  • 其他:
    后半部分还谈及了实际使用过程中遇到的:极低概率事件平滑、零概率问题等。

谈谈分词

示例:中国航天官员应邀到美国与太空总署的官员开会

  • 以前的方法:
    查字典:按照字典中的词语分类标识;
    查字典优化:用更少的词语进行分类。

  • 郭进:用统计语言模型进行分词
    第一种分词:
    A1,A2,A3,A4,A5,A6....
    第二种分词:
    B1,B2,B3,B4,B5,B6....
    第三种分词:
    C1,C2,C3,C4,C5,C6....
    ……
    第n种分词:
    N1,N2,N3,N4,N5,N6....
    因为句子固定、词语有限,一个句子的分词组合是有限的。因此,可以通过同样的概率计算方法,找出概率最大的那个分词方式就行了。
    当然,这种穷举分词组合的方法计算量还是比较大,有个更讨巧的办法:看成动态规划问题,用维特比算法快速找到最佳分词方法。

    --细节问题1:对词语的定义不同
    示例:北京大学 or 北京、大学
    解决办法:在分词的同时,找到复合词的嵌套结构。先找出“北京大学”,再找出它的嵌套词“北京”、“大学”。

    --细节问题2:不同的应用场景,对词语的颗粒度要求不同
    解决办法:根据自己的应用需求,建立专门的分词系统。

    --延伸:西方语言中是否有分词问题
    答案:其实西方语言本身并没有分词的需求,只是在手写识别输入中需要用到,以自动识别空格。

你可能感兴趣的:(《数学之美》统计语言模型、分词)