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

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

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

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.词典正文

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

原文地址:https://www.cnblogs.com/lijingpeng/p/2455881.html