• 中文,分词,搜索,引擎 Virus



    本文转载:http://www.cnblogs.com/kwklover/archive/2007/03/19/679425.html

    原作者:kwklover

    感谢作者写这么好的文章



    我开发的中文分词程序,开源发布 , 其实哪个中文分词的整体架构是比较糟糕的。架构是否优秀决定了很多构思无法实现,思考了比较久,最近准备开发第二版,抛弃以前的架构,重新实现。下面是一 些设计和构思。计划是两周时间开发完成beta版(如果因为工作关系,也有可能放弃),主要是希望和大家交流下设计思想,我觉得构思很重要,想得实现不 了,可以慢慢研究,想不到才是头大的问题,希望能和大家一起交流下:

    新版中文分词构想(面向搜索):

    分解流程:
    1,分段,根据基本的分隔符号对文本进行分段,比如,。;!!,; \r\n等分解文本
    2,分字符区,即分解成纯粹的 中文文本区 ,数字区 ,综合字符区(包括英文,数字或者其他符号),分割符号区
    3,对中文文本区调用中文分词算法,对数字区区按空格分词,对综合字符区调用英文分词算法,分割符号区保留
    4,对初步分解的单字中文进行中文姓名识别。
    5,结合前后词,对单字中文和数字做日期识别分析
    6,未登陆词分析与识别

    算法构想:
    1,中文分词算法
      匹配模式:正向最大化,反向最大化,概率最大化
      也会考虑参考SharpICTCLAS系统的NShortpath分词算法(不过目前还没看懂,迟钝的很)
     
    2,中文姓名识别算法
      主要根据中文姓,加上初步分解出的单字中文进行分析:基于词库分析单字中文作为名的概率。
     
    3,日期识别算法
      将分解出的单字中文结合前后字符,判断是否为以下格式之一:
      数字+年+数字+月+数字+日
      数字+年+数字+月
      数字+月+数字+日
      数字+月
      数字+日
     
    4,新词识别(未登陆词识别)
      1,将分解出的单字中文判断排除常用单词(StopWords)外,作为单字出现的概率。所以需要一个单字字库,包括单字出现概率的信息。
      当然也可以将现有词库对词进行分解成单字概率分布模型库(具体如何设计还没考虑好),提出来和大家交流下:
      单字出现在第一个字符概率 出现在中间的概率 出现在尾部的概率
     
      2,将上叙分析的新词进行概率分析,比如在全文中出现超过N次(比如2次,次数越大,作为一个词的可能性越高),以提高新词识别的准确度;
      不过如此大动作的分析,性能估计有很大问题。
     
    5,英文分词算法
      1,将全部字符处理为半角字符。
      2,将全部字符处理为小写字符。
      3,识别各种英文字符格式,比如电子邮件格式,网址格式等等。(用正则表达式)
      4,处理英文形式问题:比如将所有英文复数形式转换成单数形式。将各种简写形式处理为同一形式等等(这部分有兴趣可以参考dotlucene和snowball.net对英文处理的方式,这个部分我也没有深入研究过。)

    【Blog】http://virusswb.cnblogs.com/

    【MSN】jorden008@hotmail.com

    【说明】转载请标明出处,谢谢

    反馈文章质量,你可以通过快速通道评论:

  • 相关阅读:
    servlet 将输入内容通过拼接页面的方式显示出来
    localstorage和vue结合使用
    vue的通讯与传递props emit (简单的弹框组件)
    jquery插件之选项卡
    详解Cookie纪要
    jsonp
    滚动条样式
    axios基本使用
    IOS安卓常见问题
    简单购物车
  • 原文地址:https://www.cnblogs.com/virusswb/p/1260609.html
Copyright © 2020-2023  润新知