bbmonkey62笨笨猴

中文分词

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  6 随笔 :: 1 文章 :: 36 评论 :: 0 Trackbacks

距上一版本推出的时间都已一月有余了,现在终于能推出一个让我感到踏实的版本了!说是踏实,是因为此版本目前已被应用在了一个每天有近百万次访问量的比较大型的系统中,每天提供过百万次的搜索结果,经过一段时间的运行,可说是做到了运行稳定,搜索快速,而前几个版本都未有过这种正式环境的运行。
这个版本与上一个版本1.1.2相比,主要是在搜索质量方面得到了比较大的提高,另外在分词准确性方面也得到了一点提高,其他的比如速度等方面没有什么变化。

一、改善的地方主要在:
1、对搜索词提供了两种不同的处理
这个主要是提高搜索质量,比如我们在google中搜索:计算机杂志,如果我们不做处理,那么只能搜索到包含 计算机杂志 这一词的结果,但实际上呢,我们可能也是想搜索关于计算机方面的杂志,比如计算机安全杂志等等,所以这个时候要对这句进行处理,而处理的依据目前是依照字典中的条目来进行,比如字典系统中有条目:计算机 杂志,那么我们就这句处理为:计算机 杂志,这样可以相应的进行与、或的搜索,就能搜索到既包含计算机又包含杂志的记录,google提供的搜索结果就是这样做的。
此版本的第一种处理方式为:
String key = "计算机杂志";
key = KeysGroup.segmentKeyExact(key);
另外,有时在某些情况下,我们可能也需要将一些不是条目的单字也切分出来,比如,我爱看计算机杂志,处理为 我 爱 看 计算机 杂志,这样对应的第二种处理方式为:
key = KeysGroup.segmentKeyFuzzy(key);
这两种方式中还有对特殊字符!、|、-、"的处理,我们知道在google搜索中,用"关键词"表示结果中必须包含双引号包含的关键词,在lucene中,用"关键词1 -关键词2"表示搜索结果中包含关键词1但不包含关键词2等,所以对这样的一些特殊字符这两种方式在处理时也进行了保留,并未去掉。
2、在分词方面的一点改变,字典中条目为:计算 计算机 杂志
比如对 我爱看计算机杂志 分词,上一版本分为:我|爱|看|计算|机|杂志,此版本分为:我|爱|看|计算|计算机|杂志,这样在搜索的时候会提高准确度
3、对字典系统中条目的删除,上一个版本在某些时候会删除失败,此版本纠正了这个问题

二、搜索效果例子:
对如下一段话进行分词:
中国卫生部长陈竺昨天在国新办记者会上说,从2008年9月12日至昨天上午8时,各地报告三鹿牌婴幼儿奶粉事件患儿已高达6244例,其中,有158人发生过急性肾功能衰竭,另有3例死亡病例。 The Shijiazhuang-based dairy producer Sanlu announced that the company will recall 700 tons of infant feeding formula ("baby milk powder" 婴幼儿奶粉) that was produced before August 6.

分词结果为:
中国|卫生|卫生部|卫生部长|陈|竺|昨天|在|国|新办|记者|记者会|上说|从|2|0|0|8|年|9|月|1|2|日至|昨天|昨天上午|8|时|各地|报告|三|鹿|牌|婴幼儿|奶粉|事件|患|儿|已|高达|6|2|4|4|例|其中|有|1|5|8|人|发生|过急|性|肾|功能|衰竭|另有|3|例|死亡|病例|the|shijiazhuangbased|dairy|producer|sanlu|announced|that|the|company|will|recall|700|tons|of|infant|feeding|fmula
|baby|milk|powder|婴幼儿|奶粉|that|was|produced|befe|august|6

三、一些额外的话
关于仅基于字典分词来讲,其准确性总是有限的,这就好比乞丐就算做到了乞丐王,也还是乞丐一样,或者就如同傻瓜相机一样,再怎么摆弄也总是傻瓜相机!这是我有时写这个分词器突然之间有些迷惑的地方,我想这个基于字典的分词器在这个版本就告一段落了,就像前面说过的一样,这个版本能应用在每天有百万次访问量的系统让我感觉比较踏实,我不想推出一个让人用起来很不爽的一个东西,这也是让我感觉压力的一个地方。对于这个版本,我想最值得一说的可能是两个地方,一个是字典系统条目数量与索引创建(搜索)速度比较完美的结合,另一个是对搜索词的处理方面,至于分词,对一个仅基于字典的分词器而言,说来其实不值一提。。。

四、关于此分词器的开源
我非常能理解一些朋友希望这个分词器开源的想法,说实话,我有时看到一个用得到的东西,也希望能看到源代码就好了,但现在我这里还不能开源,先强调一下:我绝不是说这个分词器技术如何如何等之类的,所谓山外有山,人外有人,在搜索引擎方面的高手还是很多的,我想我还是应当属于菜鸟级的吧。目前我最多也就能提供这样的一个jar包,现在这个分词器已经应用在了一个正式系统中,希望朋友们能理解。

另外之前我写过几篇关于打造自己分词器的随笔,没有写完,我不知道以后有没有可能写完,但现在也是先告一段落吧

五、下载以及使用说明(也可在附带的readme.txt中获得)请访问
http://www.shuzhen.net

另外贴一个Google的一个小bug,这个bug是我在测试gg在切分搜索词的时候发现的,很有意思,贴出来玩玩


这个bug是在对搜索词进行高亮显示时出现的,我测试搜索“子猴网”,但从图中可以看出,被高亮显示的竟然有文字“站”,这显然是不对的,当时觉得比较有意思,所以就把这个页面切了下来,大家就把这个当作娱乐看看好了。。。另外也证实了一句话:百密难免一疏,O(∩_∩)O哈哈~
posted on 2008-09-20 20:38 bbmonkey62笨笨猴 阅读(1631) 评论(9)  编辑  收藏

评论

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-22 16:49 shguan
支持一下,下载回去用用试试,谢谢  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-25 14:01 bbmonkey62笨笨猴
有朋友反馈说,ShuzhenAnalyzer在分词速度方面(相比其他某一款分词)还是有些不足,所以在这里说明一下:

这款分词器在速度方面有一个无法避免的“硬伤”,那就是加载字典的方式,采用了JDBM系统为字典存放的系统,的确是杜绝了加载到内存中出现内存溢出的问题,但同时由于对硬盘的存取速度肯定比对内存的要慢,所以假设在同等条件下进行分词,速度方面会不及字典加载在内存中的。

虽然在算法方面尽量地去改善分词速度,但这一硬伤却总是存在着的。(目前速度其实还有提高的可能,只是一来由于在应用中,目前速度已经达到了所能满意的程度,二来速度要再提高一些,难度也更大,而且目前注意力也转移到了其他方面,所以速度方面的提高暂时放了下来)  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-25 16:55 shguan
你用的 jdk 版本是不是 1.6的,我用的是 1.5的,
报以下错误.

java.lang.UnsupportedClassVersionError: Bad version number in .class file  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-25 19:42 bbmonkey62笨笨猴
@shguan
对,ShuzhenAnalyzer用的是jdk1.6编译的,你如果用的eclipse,通过以下操作:
鼠标右键选中你的工程名,然后点鼠标右键,在弹出的菜单中选择“Properties”,然后在弹出的窗口中,点“Java Compiler”,就可以看到在右边用来编译的的JDK版本了,如果不是显示的6.0,则选为6.0然后再编译
对以上步骤如果还不是很清楚,可以参考这个帖子:
http://bbs.zihou.com/htm_data/14/0809/370.html
这个里面有图文说明  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-26 14:19 shguan
还是不行,能不能提供 一个 for jdk1.5 的 jar 文件? 谢谢  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-27 11:20 bbmonkey62笨笨猴
@shguan

还是环境设置问题吧,你或者可以到

http://www.zihou.com/bbs/thread.php?fid-14.html

里发个帖子,问一个会员名是 gcgmh 的朋友,看他是如何解决这个问题的,他之前也遇到过了这个版本问题,后来他解决了,但他没有把是如何解决的帖出来,我也没有问。
  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-09-27 11:24 bbmonkey62笨笨猴
另外如果有什么问题的话,尽量到 http://www.zihou.com/bbs/thread.php?fid-14.html 这里提出,这是专门为这款分词器建立的版块,我好尽快给出反馈,blogjava我平常来的其实不多,因为来这里感觉压力比较大。。。  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载[未登录] 2008-10-03 09:29 ameng
对于web开发,能不能指定字典文件路径是相对的,如
pDict=dict/dict.txt
对应的是d:\tomcat5.0\webapps\test\WEB-INF\classes\dict\dict.txt  回复  更多评论
  

# re: ShuzhenAnalyzer-1.1.3中文分词器提供下载 2008-10-19 11:41 bbmonkey62笨笨猴
@ameng
最近一两天会推出新的版本,在新的版本中会提供支持的,谢谢你的反馈  回复  更多评论
  


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-09-27 11:46 编辑过
 
 

相关链接:
网站导航: