盘古分词 - 多元分词算法

中文分词按照分词粒度来分,分成 一元分词,二元分词,多元分词和精确分词等类型。一元分词就是最简单的分词,将所有的中文字符按照单字形式输出。二元分词按双字形式输出。多元分词则是将一句话中可能的单词组合按照一定规则输出,允许输出的词有重叠。精确分词则是将一句话中最准确的单词组合输出,不允许输出的词有重叠。当然这里用精确这个词来修饰只是为了与其他几种分词方法区分,不可能有完全精确的分词方法,因为我们伟大祖国的语言实在是博大精深,分词本身缺乏标准(能否制定标准也是一个问号)一些中文句子就是由人来分解也可能分出不同的结果,所以到目前为止还没有100%精确的分词方法。

  由于一元和二元分词较为简单,其分词的效果也不尽理想,这里不多讨论。

  现在让我们看看精确分词。下面这句话:“许仙喝了口黄酒”,精确分词由于不能包含重叠的词,一般可以分成 许仙/喝了/口/黄酒,用这种分词结果构建索引,输入黄酒,可以搜到,但输入酒就无法搜到。而作为搜索用户,往往需要既能搜到黄酒也能搜到酒,google, 百度等著名搜索引擎就可以达到这种效果。我们自己开发的搜索引擎如果无法实现这种功能,用户体验就不会很好。为了解决这个问题,我们必须对中文句子进行多元分解,即分解出合适的组合,比如上面的句子,如果分解为 许/仙/许仙/喝/了/口/黄/酒/黄酒/喝了口/ 那么无论我们输入黄酒还是酒,我们都可以搜索到这条记录。

  多元分词的缺点:

  多元分词和搜索引擎结合可以得到较多的匹配结果,但同时也增加了索引文件的大小。另外由于将一些单词进行了拆分,搜索结果的排序会受到影响。比如搜索黄酒,多元分词后搜索的关键字组合为 黄+酒+黄酒,很可能会将只包含黄或者酒的记录排在包含黄酒的记录前面,这不是我们希望的结果。对于搜索引擎来说这个排序是很重要的,google,百度就靠这个吃饭的,如果这样瞎排,估计用户早就把他们抛弃了。事实上,他们做的很好。

  为了解决这个问题,盘古分词提出了两个概念,一个是多元分词的冗余度(Redundancy),一个是多元分词结果的权重级别(Rank)。


  首先先谈谈冗余度,对于一句话,可能会有很多种分词组合,我们通过冗余度的设置可以控制这个组合的数量。 盘古分词支持3级冗余。当冗余度设置为0时,只分解最佳的分词组合,设置为1时次之,2时再次之。

  比如 “中华人民共和国” ,冗余度取0,1,2 时 分词结果分别为


  中华人民共和国(0,5)/

  中华(0,3)/人民共和国(2,3)/中华人民(0,3)/共和国(4,3)/中华人民共和国(0,5)/

  中(0,2)/华(1,2)/人民共和国(2,2)/中华(0,2)/人民(2,2)/共和国(4,2)/中华人民(0,2)/共和(4,2)/国(6,2)/中华人民共和国(0,5)/

  其中挎号中第一个数字表示单词在整个文章中的位置,第二个数字表示权重级别。下同。

  




    盘古分词不同分词方法的索引大小和分词时间比较


   


   我们再谈谈权重。盘古分词将多元分词出来的单词根据其词长,词的间隔以及未登录词的取舍等条件给定了不同的权重。最高权重为5,最低为0。由于Lucene.net 不支持根据权重建立索引(毕竟其不是为中文设计的),我们只能在搜索时对分解出来的关键字指定权重来影响搜索结果。


   比如黄酒这个词,搜索关键词分解为 黄酒/黄/酒 如果我们对黄酒指定较高的权重,对黄和酒指定较低的权重,那么包含黄酒的记录将会优先于只包含黄或者酒的记录被搜索到,这样就基本解决了搜索排序的问题。

   下面来看看搜索 “长春市长春药店” 这个句子采用盘古分词 + Lucene.net 2.0 的搜索结果和采用 google 和百度的搜索结果的比较。冗余度取1,搜索范围限定在 博客园 网站内。




Google 的搜索结果 59 条符合条件的记录 搜索关键字:长春市长春药店  site:cnblogs.com

1.常用分词算法的比较与设想- Alic的文件夹- 博客园

  • [ Translate this page ]
    长春市/长春/药店(分成3个词,都匹配到,语义正确) … 我们对“长春市长春药店”进行两种方法的分词,但是因为逆向最大匹配法得到的“春药店”的词频相比于其他词语的 …
    www.cnblogs.com/alic/archive/2008/06/06/1215001.html - 26k - Cached - Similar pages
    2.KTDictSeg 一个C#.net做的简单快速准确的开源中文分词组件- eaglet …

  • [ Translate this page ]
    “长春市长春药店”可以依次拆分为长春、长春市、市长、长春、春药、春药店、药店这几个词, … “长春市长春药店”按正向最大匹配扫描顺序可以出现如下匹配的单词组合: …
    www.cnblogs.com/eaglet/archive/2007/05/24/758833.html - 144k - Cached - Similar pages
    3.KTDictSeg 一个C#.net做的简单快速准确的开源中文分词组件- eaglet …

  • [ Translate this page ]
    以“长春市长春节致词”和“长春市长春药店”这个两个句子为例:. “长春市长春节致词”可以依次拆 … “长春市长春药店”按正向最大匹配扫描顺序可以出现如下匹配的单词组合: …
    www.cnblogs.com/eaglet/archive/2007/06/02/758833.html - 145k - Cached - Similar pages
    4.汉语转拼音(带音调和多音字识别) - 草屋主人的blog - 博客园

  • [ Translate this page ]
    由结果看,是分成了“长春市”“长”了如果是“长春市长大”和“长春市长治久安”,分的就 … 另外,一般我们都会说“长春市市长”,“北京市市长”,少一个市虽然也能理解,但总 …
    www.cnblogs.com/sunli/archive/2007/11/21/967294.html - 78k - Cached - Similar pages
    5.最新评论- 草屋主人的blog - 博客园

  • [ Translate this page ]
    “长春市长”试了下,确实不对这个跟分词有关吧? 由结果看,是分成了“长春市”“长”了如果是“长春市长大”和“长春市长治久安”,分的就对的看来分词还要做上下文分析_
    www.cnblogs.com/sunli/RecentComments.html - 44k - Cached - Similar pages
    6.中文分词组件KTDictSeg 1.2 版本发布及算法简介- eaglet - 博客园

  • [ Translate this page ]
    长春市长春节致词 长春市长春药店 IBM的技术和服务都不错 … 市长 157 2 春节 159 2 致词 161 2 -1 1 9 1 长春市 155 3 长春 158 2 药店 170 2 …
    www.cnblogs.com/eaglet/archive/2007/06/02/768856.html - 118k - Cached - Similar pages
    7.搜索引擎中中文词组分词的实现- 旋风- 博客园

  • [ Translate this page ]
    ps:"杭州市长春药店"你分完词后会是什么呢??. #3楼 [楼主] 回复 引用 查看. 2007-04 -16 16:12 by xuanfeng. 第一步:把,”杭州市长“ ”杭州市“ “春药店” 添加到词库中 …
    www.cnblogs.com/xuanfeng/archive/2007/04/15/714312.html - 83k - Cached - Similar pages
    8.博客园- Clark Zheng发表的评论

  • [ Translate this page ]
    ps:"杭州市长春药店"你分完词后会是什么呢??. Clark Zheng 发表于2007-4-16 11:42. re: C#基础概念二十五问. @森林扩展或修改继承的方法、属性、索引器或事件的抽象 …
    www.cnblogs.com/CommentsByAuthor.aspx?author=Clark+Zheng&page=31 - 27k - Cached - Similar pages
    9.博客园- xuanfeng发表的评论

  • [ Translate this page ]
    不好意思,是“长春药店”而不是“春药店”! xuanfeng 发表于2007-4-16 18:39. re: 搜索引擎中中文词组分词的实现. 第一步:把,”杭州市长“ ”杭州市“ “春药店” 添加到词库 …
    www.cnblogs.com/CommentsByAuthor.aspx?author=xuanfeng&page=2 - 27k - Cached - Similar pages
    10.我的评论- 旋风- 博客园

  • [ Translate this page ]
    不好意思,是“长春药店”而不是“春药店”! re: 搜索引擎中中文词组分词的实现 xuanfeng 2007-04-16 16:12. 第一步:把,”杭州市长“ ”杭州市“ “春药店” 添加到词库中 …
    www.cnblogs.com/xuanfeng/MyComments.html - 49k - Cached - Similar pages

    百度 的搜索结果 4 条符合条件的记录  搜索关键字:site:(cnblogs.com) 长春市长春药店
    

常用分词算法的比较与设想 - Alic的文件夹 - 博客园
长春市长春节致辞 2) 长春市长春药店 我们假使词库中包含如下词语“长春”,“长春市”,“市长”,“春节”,“致辞…我们对“长春市长春药店”进行两种方法的分词,但是因为逆向最大匹配法得到的“春药店”的词频相比于其他词语的词频要…
www.cnblogs.com/alic/articles/1215001.html 33K 2008-9-4 - 百度快照

KTDictSeg 一个C#.net做的简单快速准确的开源中文分词组件 - eagl…
以“长春市长春节致词”和“长春市长春药店”这个两个句子为例: “长春市长春节致词”可以依次拆分为 长春、长春市…“长春市长春药店”可以依次拆分为长春、长春市、市长、长春、春药、春药店、药店 这几个词,按照正向最大匹配算法,…
www.cnblogs.com/eaglet/archive/2007/05/24 … 125K 2008-9-15 - 百度快照

中文分词组件 KTDictSeg 1.2 版本发布及算法简介 - eaglet - 博客…
长春市长春节致词 长春市长春药店 IBM的技术和服务都不错 张三在一月份工作会议上说的确实在理 于北京时间5月10日举行运动会 我的和服务必在明天做好 KTDictSeg 0 9 9 1 简介10 2 : 12 1 13 1 KTDictSeg 14 9 23 1 是24 1…
www.cnblogs.com/eaglet/articles/768856.html 119K 2008-9-2 - 百度快照

博客园 - 剑飘红发表的评论
长春市长春节致词 长春市长春药店 IBM的技术和服务都不错 张三在一月份工作会议上说的确实在理 于北京时间5月10日举行运动会 我的和服务必在明天做好 KTDictSeg 0 9 9 1 简介10 2 : 12 1 13 1 KTDictSeg 14 9 23 1 是24 1…
www.cnblogs.com/CommentsByAuthor.aspx?aut … 35K 2008-9-3 - 百度快照

KTDictSeg 1.4 版本 + Lucene.net 2.0 的搜索结果 376 条符合条件的记录

常用分词算法的比较与设想- Alic的文件夹- 博客园
,语义错误) 长春市/长春/药店(分成3个词,都匹配到,语义正确) 用逆向最大匹配法得到的结果是: 长春/市长/春节/致辞(分成4个词,都匹配到,语义正确) 长春/市长/春药店(分成3个词,都
http://www.cnblogs.com/alic/archive/2008/06/06/1215001.html

KTDictSeg 一个C#.net做的简单快速准确的开源中文分词组件- eaglet …
词结果是长春市/长/春节/致词,按照反向最大匹配算法,分词结果是长春/市长/春节/致词。 “长春市长春药店”可以依次拆分为长春、长春市、市长、长春、春药、春药店、药店 这几个
http://www.cnblogs.com/eaglet/archive/2007/05/24/758833.html

我的评论- 旋风- 博客园
sp; 第一步:把,”杭州市长“ ”杭州市“ “春药店” 添加到词库中 后效果为:杭州市长/杭州市/杭州/杭/州/市长/市/长/春药店/春药/春/药店/药/店 采用的是模糊分词分保证每个词语
http://www.cnblogs.com/xuanfeng/MyComments.html

博客园- Clark Zheng发表的评论
分词的实现 连着三个if+goto,为什么不用switch呢?ps:"杭州市长春药店"你分完词后会是什么呢?? Clark Zheng 发表于 2007-4
http://www.cnblogs.com/CommentsByAuthor.aspx?author=Clark+Zheng&page=31

搜索引擎中中文词组分词的实现- 旋风- 博客园
第一步:把,”杭州市长“ ”杭州市“ “春药店” 添加到词库中 后效果为:杭州市长/杭州市/杭州/杭/州/市长/市/长/春药店/春药/春/药店/药/店 采用的是模糊分词分保证每个词语
http://www.cnblogs.com/xuanfeng/archive/2007/04/15/714312.html

中文分词组件KTDictSeg 1.2 版本发布及算法简介- eaglet - 博客园
9 1 长春 155 2 市长 157 2 春节 159 2 致词 161 2 -1 1 9 1 长春市 155 3 长春 158 2 药店 170
http://www.cnblogs.com/eaglet/archive/2007/06/02/768856.html

最新评论- 草屋主人的blog - 博客园
菌哥 长春市市长 re: 汉语转拼音(带音调和多音字识别) jason_lb 2007-11-21 16:26 “长春市长”试了
http://www.cnblogs.com/sunli/RecentComments.html

汉语转拼音(带音调和多音字识别) - 草屋主人的blog - 博客园
“长春市长”试了下,确实不对这个跟分词有关吧?由结果看,是分成了“长春市”“长”了如果是“长春市长大”和“长春市长治久安”,分的就对的看来分词还要做上下文分
http://www.cnblogs.com/sunli/archive/2007/11/21/967294.html

前门新大街8月7日正式开街亮相- 岁月无声- 博客园
店都还空着没开张,就一些老字号开张了,包括”大北照相馆、庆林春茶庄、亿兆百货、都一处烧麦馆、一条龙羊肉馆、长春堂药店、中国书店、南区邮局、月盛斋酱牛羊肉馆、张一元茶庄分社、尚珍阁工艺品店
http://www.cnblogs.com/joe235/archive/2008/08/29/1263334.html

博客园- 560889223发表的评论
re: 我完成的C#关于在lucene下的中文切词 长春市|长春节 长春市长|春节 560889223 发表于 2007-9-26 19:57
http://www.cnblogs.com/CommentsByAuthor.aspx?author=560889223&page=2

 从搜索结果来看KTDictSeg 1.4 + Lucene.net 2.0 的搜索效果已经非常接近google的搜索效果,前10个记录的选择两者基本上差不多,排序上略有区别。Baidu搜索出来的数据很少,可能其更追求搜索的精度吧,毕竟也是国内搜索界的老大,这里不想做过多评论,好不好按百度自己的话说还是拿事实说话吧。





 关于KTDictSeg 的多元分词技术,本文就介绍到这里。 KTDictSeg 1.4 版本还有最后的扫尾工作,不日即将发布。
1、 修改字典格式,提高字典加载速度 2、 增加对英文专业名词的支持 如C++,C#等只要加入字典就可以被分出来 3、 增加词频判断功能,在无法取舍时根据词频取舍 4、 增加优先优先词频选项,通过这个选项动态决定分词粒度 需打开 FreqFirst 5、 增加中文人名前后缀统计和根据该统计定位人名的功能 6、 增加中文人名和未登录词出现频率统计功能 7、 增加自动更新字典功能,对超过阈值的人名和未登录词自动插入字典 需打开 AutoInsertUnknownWords 开关 并设置 UnknownWordsThreshold,(不推荐自动插入,推荐手工插入) 8、 增加定期保存字典和统计结果功能 需设置 AutoSaveInterval 9、 增加KTDictSeg.xml配置文件来配置分词参数 10、增加对Lucene.net 的支持,提供 KTDictSegAnalyzer 分析器给Lucene.net 11、增加字典管理功能,可以添加删除修改字典 12、字典管理中提供从未登录词中批量插入字典功能,可帮助使用者手工选择合适的未登录词插入字典(推荐) 13、提供一个新闻搜索的简单例子,采用Lucene.net+KTDictSegAnalyzer+KTDictSeg,项目名为Demo.KTDictSegAnalyzer 14、将所有ArrayList 改为List 其中 src_V1.3.01是源码 rel_V1.3.01 包含所有的可执行文件,配置文件;Data目录下是词库,停用词表,以及我目前统计的人名前后缀词表;News 目录下是Lucene.net为 新闻搜索的例子建的索引。 News.zip 是上图中批量插入时要输入的XML文件,它包含3万条从新浪和中华网抓下来的过时的新闻,大约2000万字左右,可供各位朋友学习使用。 注意:如果要导入news.xml,这个文件必须要和Demo.KTDictSegAnalyzer.exe放在同一个目录下!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值