科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件搜索引擎之中文分词实现(java版)

搜索引擎之中文分词实现(java版)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

作者:中国IT实验室 来源:中国IT实验室 2007年8月23日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
          3、  全切分实现

    切词一般有最大匹配法(MMRMM),基于规则的方法,基于统计的方法。关于前两者就不罗嗦了。所谓全切分就是要根据字典得到所以可能的切分形式。歧义识别的方法主要有:基于规则的方法和基于统计的方法。这里当然是采用基于2-gram统计模型的方法了:)为了避免切分后再进行歧义分析的时间浪费。并且这里采用边切分边评价的方法,即在切分进行的同时进行评价的方法。  

    对一个句子进行全切分的结果,即所以可能的组合,可以形成一棵解空间树

    于是,可用回溯法搜索最优解

    若将所有的全切分组合先搜索出来,然后再根据2-gram选择最佳,显然会很浪费时间,因为过程中可能存在很多的重复搜索,而回溯搜索的时间复杂度为指数时间

    所以,在搜索过程中要结合 剪枝,避免无效搜索,可很大提高效率

    采用树的深度优先法则。可找到最优解

具体算法如下:

Stack.push(BOS) //树节点

       while stack不为空

              x=stack.pop()

              pos=xPos w = x.w  oldvalue= x.value preword=x.preword

              if m>O then    //m为首词串的个数

                     forj=1 to m do

                        FWjfwc的第j个元素l

                        if length(w+FWj) =length(c)且概率最大 then output w+FWjl且设置最新的句子最大概率值

                        else

                           posl=pos+length(FWj)l

                           if probability(w+FWjposlnewsate)>maxValue(pos1)

                            stack.push(x)

                           endif

                     endfor

              endif

       endwhile

end 

在算法实现过程中需要考虑一些诸如树节点保存,首词串处理等问题。

 4.评估测试

环境:windows XP2, AMD Athlon 1800+, Memory 768mJDK1.5

Delta平滑:随着delta的取值变小,准确率上升,0.50.010.0001

召回率:<SPAN lang=EN-US style="CO

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章