经过了n长时间.有时候想放弃有时候.想继续断断续续的.终于写完了CQ分词的基本原型.目前实现了正向最大匹配.和正向最好匹配.全文全匹配取词等功能.希望大家能支持我.我一定会写出更好的分词的.
[b]分词的速度.大家自己试去吧.我这里是300w字/s.估计我电脑好点吧嘿嘿[/b] :lol:
传统的分词方式有:
整词二分法
结构:首字散列表、词索引表、词典正文
优点:数据结构简单、占用空间小。
缺点:全词匹配,效率相对来说不高。
Tire索引树法
结构:首字散列表、Trie索引树结点
优点:分词中,不需预知待查询词的长度,沿树链逐字匹配。
缺点:构造和维护比较复杂,单词树枝多,浪费了一定的空间。
逐字二分法
结构:同整词二分法
优点:查询采用逐字匹配,提高了一定的匹配效率。
缺点:由于词典结构未改变,效率的提高有限。
然后我们先了解一下双数组tire树.以下是双数组tire树的简介.
基于双数组Trie的词典查询算法
[size=large][color=red]双数组构造完成之后,查询实质上就是将待查词的各字分别转换为相应的序列码,然后作几次加法,即可查到相应的词语。查询效率是极高的[/color][/size]
好了不说了这些都是抄来的.
如果有兴趣的朋友可以和我联系相互学习.
下面我来介绍下CQ分词的大体实现.至于词典的实现比较复杂在这里不多说了.如有需要我会放出源码的
目前实现的接口有两个
这个接口负责从文章中取词.
比如”中华人民共和国万岁”
在allWords()方法取得的结果应该是.全文全匹配
在maxFrontWords()方法取得的结果应该是.正向最大匹配
在minFrontWords()方法取得的结果应该是.正向最小匹配
还有一个简单的文本分割.现在比较乱.我尽快生成api就好多了
对字符串进行简单的标记, 复杂的根据词性的可以自己扩展.
注意: