话说搜索引擎分词

现在网上有很多种分词方法。要精确必然损失性能,要性能那么精确度必然下降。

比如有句话:

"我是中国人"

看看这句话有多少种划分

我是 我是中 我是中国 我是中国人
  是中 是中国 是中国人
    中国 中国人
      国人
       

按照灰色区域划分,无疑是正确的。但是从全部分词划分上来说,分词的分法达到了 2^n种。

在我见过的分发中,很多种都是大同小异。而很多种都提到了一个概念——最大词匹配。

比如句子:“通信信息报:瑞星以技术和服务开拓网络安全市场”

按最大划分 ,"通信信息报"是一个名词,“瑞星”是一个名词,“网络安全市场”是一个名词。那么就是索引为:

"通信信息报 :  瑞星  以 技术 和 服务 开拓 网络安全市场"

这样理解上确实是好的,但是实际效果却未必如此。按照这种分词索引数据,将造成,搜索“通信”是搜索不到结果的。因为划分后并没有“通信”这个词,而只有“通信信息报”。

也许你会觉得这样就排除了 “通信”这个词对“通信信息报”这个词的干扰。但是在很多场合中,用户不可能那么精确得输入。比如,用户很可能搜索“通信报”。

所以我认为搜索引擎中的分词技术,并不是要实现精确索引。中文分词最大的用处是排除特殊的干扰。

比如还是这句话"通信信息报 :  瑞星  以 技术 和 服务 开拓 网络安全市场",如果从词义匹配上划分,还可能被分成"通信信息报 :  瑞星  以 技术 和服 务 开拓 网络安全市场"。注意,这句话和“和服”完全无关,但是这种分法就把它给相关上了。

无疑这种歧义在整合海量数据的索引中将会产生非常多。消除特定词汇的歧义肯定是可以处理的,但是你无法知道整个过程中会产生多少歧义。比如百度,在这个词的消除歧义过程中,也会有失误的地方:

宁波华和服装有限公司
备案序号:浙ICP备06009618号...
www.nbhuahe.com/ 2K 2007-12-28 - 百度快照
www.nbhuahe.com 上的更多结果

http://www.baidu.com/s?lm=0&si=&rn=10&ie=gb2312&ct=0&wd=%BA%CD%B7%FE&pn=20&ver=0&cn=baidu03&cl=3

现在我看到的最能识别歧义的方法,可能就是基于词频的统计。而不到一定的规模,没有足够的资金,肯定不会做这种事情去的。所以小的站内全文搜索引擎应该把更多的目光投到站内数据挖掘上面。不但要结果准,而且要结果多。

我认为基于最大词匹配的最小切分可以在很大程度上提升搜索引擎的性能和搜索精确度。

比如:“此次大会在香港特别行政区召开”

那么最大匹配就是“此次 大会 在 香港特别行政区 召开”

如果发现了最大匹配“香港特别行政区”,你不可能让别人搜索“香港”,而找不到这个结果。所以,有效的办法就是对最大匹配进行最小划分。划分为"香港 特别 行政 区"。

在搜索引擎中很多地方需要这么做。

当然,也可以用同意词的方法来解决.。但是定义同意词,无疑是一件长期而繁琐的事情。而且,对于“香港特别行政区”这样一个词,一般预期查询的词就是“香港”,划分就可以,没必要做同义词解析。

而对于“日本人常用的口头禅”,如果有人搜索“日语口头禅”,你认为是不是要匹配呢?最好当然是做下“日语”对“日本人”的同义词。而如果有人搜索“日语口头”,那么最小划分将会起到意向不到的作用。要知道,用户凭自己想出来的关键字,经常是不可预期的。

全文完。 by yurow

birdshover.cnblogs.com

___________________________________________________________________
把文章转成随笔了,汗~~!
posted @ 2008-03-27 16:52 Birdshover 阅读(2462) 评论(20)  编辑 收藏

  回复  引用  查看    
#1楼 2008-03-27 17:25 | Zhuang miao      
呵呵,资料
  回复  引用    
#2楼 2008-03-27 17:47 | weidagang2046@gmail.com [未注册用户]
从技术上讲,百度、google能做到更准确的分词,估计还是为了多投放广告。
  回复  引用  查看    
#3楼 2008-03-27 18:02 | 杨正祎(阿一)      
鱼肉同学的,怎么也要支持一下。
  回复  引用  查看    
#4楼 [楼主]2008-03-27 18:06 | BirdsHover      
@杨正祎(阿一)
汗一下先
  回复  引用  查看    
#5楼 2008-03-27 18:44 | Anders Cui      
顶下!
  回复  引用  查看    
#6楼 2008-03-27 18:58 | 留恋星空      
虽然看不太懂,但还是支持下。
  回复  引用  查看    
#7楼 2008-03-27 19:06 | 无言      
说的很有道理,能否具体的说说该如何去实现呢?
  回复  引用  查看    
#8楼 [楼主]2008-03-27 21:32 | BirdsHover      
@无言
过两天把实现的方法弄出来,现在写出来的代码比较混乱,虽然说可能更加好理解。目前正在测试分词后的效果
  回复  引用    
#9楼 2008-03-27 21:56 | Daniel2 [未注册用户]
分词精度是所有的基础,不然会导致误分,而单纯最大匹配精度确实不怎么好。
解决你说的问题很简单,对分词之后的结果中的长词做进一步拆分,就可以了!
算法合适的话,精度和性能不是问题,可以做到在p>99%,r>96%的的速度在50k+/s,还是拿java实现的,如果用c,应该能上一个量级
有人做过10M/s的,只是不知道精度咋样
  回复  引用  查看    
#10楼 2008-03-28 09:23 | T.t.T!Ck.¢#      
如楼主说所的 关键还是在你的词库上哦
FMM与BMM的叠加已经能完成,属于机械分词的范畴了

但是现在中文分词更多的是研究未登录词的识别,新词发现,人名,地名,机构名等等这些实体的识别。

搜索引擎的分词也需要好好地处理这些问题。
^_^
  回复  引用  查看    
#11楼 2008-03-28 09:30 | T.t.T!Ck.¢#      
通信信息报:瑞星以技术和服务开拓网络安全市场
通信 |信息报 |: |瑞星 |以 |技术 |和 |服务 |开拓 |网络 |安全 |市场 |

此次大会在香港特别行政区召开
此次 |大会 |在 |香港 |特别行政区 |召开 |

上面是根据你给的信息,在我的分词里面切分的结果,仅供测试用。^_^


宁波华和服装有限公司
宁波 |华 |和 |服装 |有限 |公司 |

根据你的在百度搜索到的结果。。我再切分后的结果。。。看来我还是把“服装”和 “和服” 区分开来了。。。 但是 “华和” 这个属于未登录词或者说是机构名实体。。没有识别出来。。自己默哀一下 ^_^

希望和楼主进行深入的交流 ^_^
  回复  引用  查看    
#12楼 2008-03-28 09:40 | 李战      
拜读,谢谢!
俺现在做的分词就是最简单的二元分词法,简单啊。对于小容量的专业性内容来说,足够了。除了刻意的测试搜索,几乎碰不到歧义的问题。

俺是个实用主义者
  回复  引用  查看    
#13楼 2008-03-28 12:43 | romce      
还是要学习一下的 。。。
  回复  引用    
#14楼 2008-03-28 12:59 | yingzi2 [未注册用户]
分词算法其实在数学上是很简单的一个排列组合.最主要是优秀的词库.通过匹配词库里的词取的得到一组排列组合
  回复  引用    
#15楼 2008-06-26 13:06 | laotian [未注册用户]
我正在做搜索引擎相关的东西,发现最关键的就是对html解析,我写了几篇关于解析的blog,不知道是否可以适用于大型搜索引擎,欢迎博主帮忙参考参考。给点建议:
http://blog.csdn.net/RonoTian/archive/2008/06/06/2517568.aspx
希望多多交流。
  回复  引用  查看    
#16楼 [楼主]2008-06-27 17:29 | BirdsHover      
@laotian
呵呵,互相探讨
  回复  引用  查看    
#17楼 2008-07-21 22:21 | U2U      
这不是原创的概念吧。。。。
  回复  引用  查看    
#18楼 2008-07-21 22:21 | U2U      
ICTCLAS就是这么做的
  回复  引用  查看    
#19楼 [楼主]2008-07-21 22:24 | BirdsHover      
@U2U
不好意思,我没看过ICTCLAS的实现,不太清楚,谢谢指正
  回复  引用    
#20楼 2008-08-18 18:11 | 陈草原 [未注册用户]
LZ:我刚学习这个,你说的的文章很好,但是我不知道要怎么划分词,就是怎么去改造?从什么地方下手,望帮助

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-08-11 02:06 编辑过