Jieba分词包(二)——trie树和DAG
在Jieba分词包的源码中,有一个重要的分词函数——__cut_DAG(sentence),它里面涉及到了trie树和DAG有向无环图。在作者的说明文档中也指出了:基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)。所以说这篇博客我们就来说说Jieba里面的trie树和DAG图。
1. trie树
Jieba里面的trie树是基于一个字典构建的,这个字典在dict.txt中,里面有2W多条词,包含了词条出现的次数(这个次数是于作者自己基于人民日报语料等资源训练得出来的)和词性。这个第一条的trie树结构的词图扫描,说的就是把这2万多条词语,放到一个trie树中,而trie树是有名的前缀树,也就是说一个词语的前面几个字一样,就表示他们具有相同的前缀,就可以使用trie树来存储,具有查找速度快的优势。
从上面的trie树你就可以猜到,trie树这家伙是一个用来存储有相同前缀的字符串(汉字也行,反正都是字符),而且查找的速度很快。为什么要这么快的查收速度呢?哦,原来是后面画D