zoukankan      html  css  js  c++  java
  • 面向搜索的中文分词设计

    我开发的中文分词程序,开源发布 ,其实哪个中文分词的整体架构是比较糟糕的。架构是否优秀决定了很多构思无法实现,思考了比较久,最近准备开发第二版,抛弃以前的架构,重新实现。下面是一些设计和构思。计划是两周时间开发完成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对英文处理的方式,这个部分我也没有深入研究过。)

  • 相关阅读:
    Cordova4.0 系列 -- 基本环境搭建(1)
    随便写写2015创业记(三)
    有哪些好用的数据分析工具?
    文字检测识别系统好用吗?都针对什么进行识别?
    用户奖励体系有哪些反作弊的机制?
    1月第2周业务风控关注|“扫黄打非”部门查处互动作业、纳米盒等20多个学习类App
    一个docker容器中运行多个服务还是弄一堆docker容器运行?
    手机app有了短信验证码还有没必要有图片验证码?
    2019年微服务实践第一课,网易&谐云&蘑菇街&奥思技术大咖深度分享
    1月第1周业务风控关注| 国家网信办启动专项行动 剑指12类违法违规互联网信息
  • 原文地址:https://www.cnblogs.com/kwklover/p/679425.html
Copyright © 2011-2022 走看看