• 整词二分、逐字二分的分词词典机制


    整词二分、逐字二分的分词词典机制:

    这是一种广为使用的分词词典机制.其结构通常分为三级,前两级为索引

    1.首字散列表

      词首字散列函数根据汉字的国标区位码给出。通过一次Hash运算即可直接定位汉字在首字散列表中的序号。也就是将词首字的国标码与其在首字散列表中的序号相对应。

      我国的GB2312-80标注规定汉语字符的交换码由两个ASCII码构成:第一个是区码,取值从OxA1到OxF7,共87个区,第二个是位码,从OxA1到0xFE,共94位。区码为OxA1到0xAE的存储全角符号,如标点、字母等。GB2312-80汉字的编码空间是BOA1-FIFE,共有72 * 94 = 6768个码位,实有6763个汉字,其中一级汉字3755个,接着是5个空位,后面是3008个二级汉字。设id是词首字在首字散列表中的序号,c1和c2是词首字的区码和位码,利用Hash方法求Id则有:

    Id = (c1–176) * 94 + (c2 - 161)

    这种Hash方法实质上是一种一一映射。

    首字散列表的一个单元包括两项内容:

    1) 入口项数(4字节):以该字为首字的词的个数。

    2) 第一入口项指针(4字节):指向第一入口项在词索引表中的位置。

    2.词索引表

    因为词的长度可变(实际系统中还包括附属于该词的各类信息),故以选择不定长存储为宜,此外必须实现对词的随机访问,这两条决定了必须建立词索引表。

    词索引表的一个单元仅含一项内容:

    1) 词典正文指针(4字节):指向词在词典正文中的位置。

    3.词典正文

    以词为单位的有序表,词典中的同一首字的词条按升序排列,通过词索引表和词典正文的配合,很容易实现指定词在词典正文中的整词二分快速查找。

  • 相关阅读:
    Android 设置 grid 不滚动
    SpringMVC + myBatis + mySQL 全注解 事务配置
    Git学习日志
    linux 下安装maven
    Maven 搭建springMVC 报错 maven web.xml param element param-name is not allowed here
    Python 函数式编程 filter(),map() , reduce()......
    onpropertychange 实时监控input输入框事件实现
    php CI 框架 mysql 事务使用
    This function has none of DETERMINISTIC, NO SQL解决办法
    安装inotify-tools,用inotifywait命令监听文件或目录的访问信息
  • 原文地址:https://www.cnblogs.com/lijingpeng/p/2455881.html
Copyright © 2020-2023  润新知