您的位置:首页 > 编程语言 > Java开发

GTAnalyzer-lucene中文分词

2013-12-02 16:56 246 查看
此分词算法主要来源于:http://xiecc.blog.163.com/blog/static/14032200671110224190/
源码svn地址:http://code.taobao.org/svn/gtanalyzer/trunk
可以使用svn下载源代码
1.词典使用树形结构保存,每一个字符占一个树的节点,相同前缀的词在同一棵子树中
2.使用了正向匹配分词法,但是不受词长限制,可以是任意长度的词3.消除歧义,比如:中华人民共和国,可以分为:中华人民共和国/中华人民/人民共和国/人民/共和/共和国;前提是你的词典中有这些词4.这个组件不光是lucene的中文分词实现,也是一个独立的java分词组件,不依赖任何jar包,具体的分词在com.wuda.segmentation包下5.util包中的CharacterTree.java的findPrefix提供根据前缀找单词的功能,这个可以用于搜索框的输入提示功能
测试结构:我的是联想E420电脑,加载28万个单词1.加载平均用时9秒;2.分词速度平均110万中文字/秒,平均2100KB/S3.随机查找5866个前缀,共用时190ms,平均用时0.032390043ms,包括了排序,提供的排序接口可以是升序或者降序使用:1.如果只用于lucene分词,则只需a)Analyzeranalyzer=newGTAnalyzer();主要是基于lucene4.0开发,不同版本可能有可能不兼容b)可以在src目录下新增一个gt.properties文件,用于配置自定义词典位置和句分隔符,默认有提供词典。2.如果只用于前缀匹配:a)CharacterTreetree=newCharacterTree();//生成空词典b)tree.load(resource);或者tree.add(word);//加载单词c)PriorityLinkedQueue<Word>queue=newPriorityLinkedQueue<Word>(10,Order.DESC);//降序队列d)tree.findPrefix(prefix,queue);//前缀查找e)queue.next()//获取元素2)如果是作为独立的java分词组件:a)CharacterTreetree=newCharacterTree();//生成空词典 b)tree.load(resource);或者tree.add(word);//加载单词c)Segmenterseg=newGTSegmenter(dic);//分词实例d)List<Token>tokens=seg.seg(str);//执行分词
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息