zoukankan      html  css  js  c++  java
  • 基于统计的中文分词

    分词方法

      目前的分词方法归纳起来有3 类:

      第一类是基于语法和规则的分词法。其基本思想就是在分词的同时进行句法、语义分析, 利用句法信息和语义信息来进行词性标注, 以解决分词歧义现象。因为现有的语法知识、句法规则十分笼统、复杂, 基于语法和规则的分词法所能达到的精确度远远还不能令人满意, 目前这种分词系统还处在试验阶段。

      第二类是机械式分词法(即基于词典)。机械分词的原理是将文档中的字符串与词典中的词条进行逐一匹配, 如果词典中找到某个字符串, 则匹配成功, 可以切分, 否则不予切分。基于词典的机械分词法, 实现简单, 实用性强, 但机械分词法的最大的缺点就是词典的完备性不能得到保证。据统计, 用一个含有70 000 个词的词典去切分含有15 000 个词的语料库, 仍然有30% 以上的词条没有被分出来, 也就是说有4500 个词没有在词典中登录。

      第三类是基于统计的方法。基于统计的分词法的基本原理是根据字符串在语料库中出现的统计频率来决定其是否构成词。词是字的组合, 相邻的字同时出现的次数越多, 就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映它们成为词的可信度。

    基于统计分词

      1.什么是基于统计的分词模型
      令C=C1C2...Cm.C 是待切分的汉字串,W=W1W2...Wn.W 是切分的结果。
      设P(WlC)是汉字串C切分为W的某种估计概率。
      Wa,Wb,⋯.Wk是C的所有可能的切分方案。那么,基于统计的切分模型就是这样的一种分词模型,它能够找到目的词串W ,使得W 满足:
      P(W|C)=MAX(P(Wa|C),P(Wb|C)...P(Wk|C)),
      即估计概率为最大之词串。我们称函数P(W|C)为评价函数。一般的基于统计的分词模型的评价函数,都是根据贝叶斯公式.同时结合系统本身的资源限制,经过一定的简化,近似得来的。

      2.P(W|C)在不同资源需求下的近似方法

      根据贝叶斯公式, 有:P(W|C)=P(W) P(C|W)/P(C),对于C的多种切分方案,P(C)是一常数,而P(C|W)是在给定词串的条件下出现字串C的概率,故P(C|W)=1。所以 ,我们用P(W)来代替P(W|C)。那么,如何估计P(W)呢?最直接的估计P(W)的方法利用词的n-gram,即:
      P(W)=P(W1) P(W2lW1) P(W3|W1W2)⋯P(Wk|W1,W2...Wk-1)
      

      但是,由于当前的计算机技术和我们现有的语料资源所限,这种方法存在致命的缺陷:

      ①对于有6万词的词典而言,仅词和词的bigram就可能需要60000 x 60000=3600M的统计空间,这是当前的计算机硬件水平所难以接受的,更不要说更大的n-gram 了。
      ②需要与上述空间相当的熟语料,否则就会产生训练语料不足所产生的数据稀疏问题。
      ③由于不同领域的语料库的用词有所差异,针对某一个领域的语料库统计出来的n-gram,若用于其它领域,其效果难以预料,而目前通过语料库搭配来克服领域差民间的方法尚未成熟。

      因此,利用词的n-gram 直接估计P(W)的方法,在目前是不可行的。基于上述的原因,大多数基于统计的分词模型都没有直接采用上述公式,而是采用各种各样的估计方法,从不同的角度,实现对P(W)的近似。

      3.马尔可夫假设

      马尔可夫假设任意一个词Wi出现的概率只同它前面的词Wi-1有关,于是把上面的公式简化成:

      P(W)=P(W1) P(W2lW1) P(W3|W2)⋯P(Wk|Wk-1)

      这里对应的统计语言模型是二元模型。也可以假设一个词由前面n-1个词决定,对应的模型称为n元模型。

      接着估算条件概率:

      P(Wi|Wi-1)=P(Wi-1,Wi)/P(Wi-1)

      而计算联合概率P(Wi-1,Wi)和边缘概率P(Wi-1),只要通过语料库数一数Wi-1,Wi这对词在统计的文本中前后相邻出现了多少次#(Wi-1,Wi),以及Wi-1本身在同样的文本中出现了多少次#(Wi-1),然后用两个数分别除以语料库的大小#,即可得到这些词或二元组的相对频度,再根据大数定理,只要统计量足够,相对频度就等于概率:

      P(Wi-1,Wi)~f(Wi-1,Wi)=#(Wi-1,Wi)/#  ;  p(Wi-1)~f(Wi-1)=#(Wi-1)/#

      所以最后:

      P(Wi|Wi-1)=#(Wi-1,Wi)/#(Wi-1)

      

      参考文献:

      <基于统计的汉语分词模型及实现方法>

      <基于统计的无词典分词方法>

      <数学之美>

      

  • 相关阅读:
    49.把字符串转发为整数(python)
    48.不用加减乘除做加法(python)
    47.1+2+3+...+n(python)
    46.孩子们的游戏(python)
    45.扑克牌顺子(python)
    44.翻转单词序列(python)
    43.左旋转字符串(python)
    42.和为S的两个数字(python)
    41.和为S的连续整数序列(python)
    39.平衡二叉树(python)
  • 原文地址:https://www.cnblogs.com/xingyun/p/2854397.html
Copyright © 2011-2022 走看看