天天看点

CQ V1.0分词bates(基于双数组tire树)—应该是目前最快的中文分词算法

经过了n长时间.有时候想放弃有时候.想继续断断续续的.终于写完了CQ分词的基本原型.目前实现了正向最大匹配.和正向最好匹配.全文全匹配取词等功能.希望大家能支持我.我一定会写出更好的分词的.

[b]分词的速度.大家自己试去吧.我这里是300w字/s.估计我电脑好点吧嘿嘿[/b] :lol:

传统的分词方式有:

 整词二分法

结构:首字散列表、词索引表、词典正文

优点:数据结构简单、占用空间小。

缺点:全词匹配,效率相对来说不高。

 Tire索引树法

结构:首字散列表、Trie索引树结点

优点:分词中,不需预知待查询词的长度,沿树链逐字匹配。

缺点:构造和维护比较复杂,单词树枝多,浪费了一定的空间。

 逐字二分法

结构:同整词二分法

优点:查询采用逐字匹配,提高了一定的匹配效率。

缺点:由于词典结构未改变,效率的提高有限。

然后我们先了解一下双数组tire树.以下是双数组tire树的简介.

基于双数组Trie的词典查询算法

[size=large][color=red]双数组构造完成之后,查询实质上就是将待查词的各字分别转换为相应的序列码,然后作几次加法,即可查到相应的词语。查询效率是极高的[/color][/size]

好了不说了这些都是抄来的.

如果有兴趣的朋友可以和我联系相互学习.

下面我来介绍下CQ分词的大体实现.至于词典的实现比较复杂在这里不多说了.如有需要我会放出源码的

目前实现的接口有两个

这个接口负责从文章中取词.

比如”中华人民共和国万岁”

在allWords()方法取得的结果应该是.全文全匹配

在maxFrontWords()方法取得的结果应该是.正向最大匹配

在minFrontWords()方法取得的结果应该是.正向最小匹配

还有一个简单的文本分割.现在比较乱.我尽快生成api就好多了

对字符串进行简单的标记, 复杂的根据词性的可以自己扩展.

注意: