盘古分词--功能简介
作者:eaglet两年前我开发了一个KTDictSeg 中文分词组件,这个组件推出2年来受到很多朋友的喜爱。不过由于我当初开发KTDictSeg时比较仓促,底子没有打好,而且当时对分词的理解也比较肤浅,所以KTDictSeg组件存在很多问题,我一直想重新开放一个更好的开源分词组件,但一直没有抽出时间。上周我终于下定决心开始做这个事情,经过两周的开发(业余时间),今天终于完成了盘古分词的V1.0版本。盘古分词和KTDictSeg完全不同,几乎所有的算法我全部都推倒重写了,其分词速度大概比KTDictSeg快5倍左右(多线程下快10倍以上),内存占用只有KTDictSeg的一半,分词的准确度方面也比 KTDictSeg 有显著提高,功能也增加了很多。下面我就简单介绍一下盘古分词组件的基本功能,希望能对有这方面需求的朋友有所帮助。
盘古分词 英文名 PanGuSegment
项目 Logo:
项目首页 盘古分词项目首页
开源协议 : Apache License 2.0
商业应用:免费 商业应用授权
下载地址 同项目首页
功能
中文分词功能
- 中文未登录词识别
- 词频优先
- 多元分词
详见 盘古分词版本功能介绍 - 多元分词
- 中文人名识别
输入: “张三说的确实在理”
分词结果:张三/说/的/确实/在理/
但是如果输入 “李三买了一张三角桌子”
分词结果:李三/买/了/一张/三角/桌子/
这里可以在第一个句子中盘古分词识别出张三是一个人名,从而按照人名输出了这个词,而第二句中盘古分词识别出其句子中包含的张三并不是一个人名,从而没有按中文人名来输出这个词。
详见 盘古分词-中文人名识别
- 强制一元分词
如 “张三说的确实在理”
分词结果: 张(0,1)/张三(0,5)/三说的(1,1)/三(1,1)/说(2,5)/的(3,5)/确(4,1)/确实(4,5)/实(5,1)/在(6,1)/在理(6,5)/理(7,1)/
挎号里面第一个数字表示单词在句子中的位置,第二个数字表示权值,下同
- 繁体中文分词
盘古分词可以实现繁体中文的分词
还是输入"我的選擇"
分词结果是: 我/的/選擇/
- 同时输出简体和繁体
还是输入"我的選擇"
分词结果是:我(0,5)/的(1,5)/选择(2,1)/選擇(2,5)/
- 中文词性输出
- 全角字符支持
英文分词
- 英文分词
- 英文专用词识别
- 英文原词输出 (后续版本提供)
- 英文大小写同时输出(后续版本提供)
其他功能
- 停用词过滤
- 设置分词权值
未登录词权值
最匹配词权值
次匹配词权值
再次匹配词权值
强行输出的单字的权值
数字的权值
英文词汇权值
符号的权值
强制同时输出简繁汉字时,非原来文本的汉字输出权值。
- 字典管理
- 动态加载字典
- 关键词高亮组件
- 同义词输出(后续版本提供)
- Lucene.net 接口及示例
性能指标
Core Duo 1.8 GHz 下单线程 分词速度为 390K 字符每秒,2线程分词速度为 690K 字符每秒。
其他说明
盘古分词提供的字典包括17万个中文常用单词,但这个字典依然不够完整,如果要分词更准确,需要适当维护一下这个字典。
中文人名的识别能力取决于 ChsSingleName.txt, ChsDoubleName1.txt, ChsDoubleName2.txt 这三个文件,它们分别表示单子人名,双字人名的首字和双字人名的尾字,如果有的人名没有分出来,需要维护这三个文件。
V1.0.0.2 版本演示截图
从这个测试来看,盘古分词在中文人名这块的识别能力还是比较突出的,在未登录词识别方面也有了一定的改进。不过这个分词结果有一处有一点问题。就是一次性交一百元, 正常理解应该是一次性/交/一百/元 但盘古分词分出来是 一次/性交/一百/元 。虽然有点黄,但从语义上看也不是完全说不过去。