参考文章: 1.基于PATRICIA tree的汉语自动分词词典机制.pdf 杨文峰 陈光英 李 星
2.Crit-bit Trees Adam
Langley (agl@imperialviolet.org) (Version
20080926)
分词是自然语言处理的重要环节。分词时所使用的词典是分词系统的重要组成部分。词典的查询和更新效率直接影响着分词系统的性能。
词典的查询分成三类:
A.确定词条查询:在词典中查询有无词串w,有则返回该词条在词典中的位置和其它附加信息
B.最长词条查询:从词串s的位置i开始的最长的词条
C.前缀词条查询:从词串s的位置i开始的全部的词条
e.g
词典中有词条“中”“中华”“中华人民”“中华人民共和国”“从此”“成立”“了”。词串“中华人民共和国从此成立了”从位置0开始的最长词条为“中华人民共和国”,从位置0开始的全部词条为“中”“中华”“中华人民”“中华人民共和国”
PATRICIA树(Practical Algorithm to Retrieve Information Coded in Alphanumeric)
又称为CritBit Tree
叶子结点(leaf node or external node):存放词典中的词条(所有词条末尾均加结束标记,再转换成二进制串)
内部结点(inter node):比较位(左右子树所代表的词条的二进制串从该位开始不同),左指针(指向左子树),右指针(指向右子树)
PAT树是一颗满二叉树。n个词条,n个叶子结点,树的深度log2N+1,总的结点数2n-1,内部结点数n-1
满二叉树
1层 1
2层 2
3层 4
n层 2的n-1方
总结点数:2的n方 - 1,内部结点数:2的n-1方 - 1
LSB(least significant bit) 最低有效位
MSB(most significant bit)最高有效位
while(newotherbits & (newotherbits - 1)){
newotherbits &= newotherbits -1; // 找到newotherbits的最高有效位,即第一个1
}
具体实现:
1.确定词查询
2.最长词条查询和前缀词条查询
3.插入
4.删除