日本看板
广告位招租 详细信息请联系 jkanban@gmail.com キャンペン中!


 
标题: [项目推荐] 中文分词
admin (蕨菜)
一代文豪
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 1
精华 0
积分 11267
帖子 4065
威望 155
金钱 20240
慈善捐款(日元) 300
阅读权限 200
注册 2007-3-25
 
发表于 2007-8-17 00:59  资料  个人空间  短消息  加为好友 
中文分词

庖丁解牛

net.paoding.analysis.dictionary 字典抽象--这是核心代码之一
net.paoding.analysis.knife "刀"抽象-分词算法-这是核心代码之二
net.paoding.analysis.analyzer 封装adapter到lucene接口


下载地址:http://code.google.com/p/paoding/downloads/list
SVN地址:http://paoding.googlecode.com/svn/trunk/paoding-analysis/


-------------------------------------------------------------------
选择"庖丁解牛"作为Lucene中文分词可能有以下理由:

@设计优美-使用庖丁隐喻,容易理解代码设计

@效率极高-极高效率的字典查找算法;尽量避免无谓试探查找

@算法简练-简单易理解的算法,但效率却是非常高效的

@轻松支持最大/最小切词

@字典灵活-
字典文件个数不限;
名称不限,只要符合以dic作为扩展名的均视为字典
目录层级不限(所以可以任意加减字典目录以及目录下的字典)
字典格式简单:不需要特别排序,人工可编辑

@源代码是开放的,遵守http://www.apache.org/licenses/LICENSE-2.0协议





天下熙熙,皆为利来;天下攘攘,皆为利往。
顶部
www.rakudoor.com 乐道 樂道 楽道 -- Ruby on Rails试验田
admin (蕨菜)
一代文豪
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 1
精华 0
积分 11267
帖子 4065
威望 155
金钱 20240
慈善捐款(日元) 300
阅读权限 200
注册 2007-3-25
 
发表于 2007-8-17 01:02  资料  个人空间  短消息  加为好友 
テキスト解析Webサービスを利用して、日本語の解析を行うアプリケーションを作成できます。


http://developer.yahoo.co.jp/jlp/





天下熙熙,皆为利来;天下攘攘,皆为利往。
顶部
admin (蕨菜)
一代文豪
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 1
精华 0
积分 11267
帖子 4065
威望 155
金钱 20240
慈善捐款(日元) 300
阅读权限 200
注册 2007-3-25
 
发表于 2008-3-6 18:46  资料  个人空间  短消息  加为好友 
ruby中文分词器 - RMMSeg

http://www.javaeye.com/news/1380

RMMSeg是pluskid(浙江大学的学生)开发的ruby中文分词器,在2008年2月份刚刚发布的。RMMSeg使用了基于词库的最大匹配算法进行中文分词,并且辅以相应的修正算法,而RMMSeg带的词库有大约12万中文词汇,已经比较全面了。根据作者自己博客上面的测试,中文分词的准确率可以达到98%以上。

经过JavaEye网站的试用,RMMSeg当前的0.1.5版本已经可以在小型的ruby应用当中实际使用了,分词的效果也还不错。当然由于 RMMSeg目前是纯ruby代码的实现,因此索引的性能还是有点慢,比目前JavaEye的单字拆分算法慢5倍左右。但考虑到全文检索的索引都是后台 job去运行,所以稍微慢一点也可以接受。pluskid计划在接下来的版本当中使用C来实现一部分功能,提高性能,降低内存耗用。

rmmseg的主要问题是性能和内存消耗。用纯ruby编写的rmmseg分词的速度非常慢,而且内存消耗非常惊人,当使用复杂分词算法的时候,内存呈线性上升的现象,在我作的大量索引测试程序中曾经上升到了900MB以上。

为此rmmseg的作者pluskid再接再厉用C++重写了一遍rmmseg项目,这就是rmmseg-cpp。根据作者自己的简单测试表明:rmmseg-cpp的性能是rmmseg的400倍之多。下面简单介绍rmmseg-cpp的安装和使用:

1、安装
rmmseg-cpp目前只支持Unix操作系统,不支持Windows
Ruby代码 复制代码

   1. gem install pluskid-rmmseg-cpp --source=http://gems.github.com  

2、使用
Ruby代码 复制代码

require 'ferret'
require 'rmmseg'
analyzer = RMMSeg::Ferret::Analyzer.new do |tokenizer|
  Ferret::Analysis::LowerCaseFilter.new(tokenizer)
end


就可以了,然后就可以使用analyzer进行分词索引和查询了。

rmmseg-cpp和libmmseg目前都可以作为比较好的ruby中文分词程序来使用,他们的性能和内存管理都相当不错,经过我们测试和使用的情况来看,都可以放心在生产环境当中使用。不过他们也有一些区别和各自的特点:

1、rmmseg-cpp的分词速度比libmmseg快一倍左右

rmmseg-cpp是专门为ruby的ferret编写的中文分词接口,代码十分简练,和ruby结合的很好;libmmseg主要是用来和 sphinx配合的,并不是为ruby而写,他仅仅提供了一个非常简陋的ruby调用接口,在ruby程序当中使用中文分词的时候,rmmseg-cpp 的性能明显胜出一筹。

2、rmmseg-cpp的内存管理似乎不如libmmseg稳定

Ruby本身是带有GC功能的脚本语言,用C/C++编写Ruby扩展本身是一件很麻烦的事情,因为C/C++自身是需要手工分配内存的,但是如果程序员对于Ruby的GC机制没有足够的了解,会带来很多麻烦,弄不好就可能内存泄漏,或者发生不期望的被使用中的对象被Ruby GC掉的问题。

rmmseg-cpp已经在GC方面下了很大的功夫,因此内存管理相当不错,但是我曾在一次数据量非常大量的全文索引过程当中观察到内存短时间内快速上升了几十MB的现象(但这种现象不常见)。

而libmmseg没有对ruby的依赖,仅仅提供一个简陋的接口,因此在数次测试当中,已经程序长时间运行观察下来,内存管理比rmmseg-cpp显得更加平稳一点,没有出现过一次内存快速上升的现象。

3、rmmseg-cpp目前没有Windows版本,而libmmseg支持windows版本

4、rmmseg-cpp安装配置很简单,不像libmmseg那么麻烦

总得来说,rmmseg-cpp和libmmseg都是用C++编写的优秀的中文分词程序,并且都可以支持在ruby当中实现全文检索的中文分词功能。如果不是特殊的需要,仅仅只是在ruby当中使用中文分词功能,那么推荐使用rmmseg-cpp。

顶部
admin (蕨菜)
一代文豪
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 1
精华 0
积分 11267
帖子 4065
威望 155
金钱 20240
慈善捐款(日元) 300
阅读权限 200
注册 2007-3-25
 
发表于 2008-3-6 18:46  资料  个人空间  短消息  加为好友 
MMSEG算法是台湾一个朋友的作品:
http://technology.chtsai.org/mmseg/
在Java方面,早就有一个实现:
http://www.solol.org/projects/mmseg/
与Lucene的整合也提供了:
http://www.solol.org/blogs/200710/200710242000.html

实践过程中,分词效果的确极佳。以前通过比较,比Javaeye上现有的分词算法效果都要好。

顶部
admin (蕨菜)
一代文豪
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 1
精华 0
积分 11267
帖子 4065
威望 155
金钱 20240
慈善捐款(日元) 300
阅读权限 200
注册 2007-3-25
 
发表于 2008-3-6 18:54  资料  个人空间  短消息  加为好友 
RMMSeg: Ruby 实现中文分词
http://pluskid.lifegoo.com/?p=261


MMSeg分词算法简述
http://www.solol.org/archives/200707202300.html

顶部
 



当前时区 GMT+9, 现在时间是 2008-7-21 06:28

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 日本看板 - Archiver