trie树是一种常用的词典存储逻辑结构。双数组trie树是trie树的一种性能较好的具体实现方法。
由日本学者发明,知名NLP工具CRF++的词典即是由此实现。
CRF++所用的darts是实现双数组trie树的一份代码(文档中文翻译),整个词典就是数组元素由两个int组成(即“双”数组名字的来历)。
darts-clone有与darts相同的接口,但词典数组由一个int搞定,空间减小一半的同时速度还快些。
关于trie树与双数组trie树的原理非一两句话能介绍透彻,不过好在网上的资料都比较多,不难找到。 本文想介绍一下darts-clone用了啥黑科技达到这种效果的。