用 DAT 重实现 CppJieba 中文分词算法,降低 99% 内存消耗
一,问题背景
中文分词应用比较广泛的开源算法,是 jieba 结巴分词,结巴分词较高性能的实现是 C++ 版本的 CppJieba : https://github.com/yanyiwu/cppjieba
在实际使用 CppJieba 的过程中,我们发现 CppJieba 的内存占用比较高。
比如对一个 76W 词 大小 11MB 的词典 ,加载 2份 (比如为了支持平滑改动用户词典)就需要耗费 505MB内存。
这对一些多进程的后台服务,浪费大量内存,难以接受,因此这里希望削减内存耗费。
经过初步调查,确定改进方法,然后动手改造,最终把 505MB 缩减到了 4.7MB ,实现了 99% 内存降低。
此处也有 issue 讨论 https://github.com/yanyiwu/cppjieba/issues/3