1st Dec, 2009

Rseg: 纯Ruby中文分词插件

Rseg是一个基于纯Ruby的中文分词插件,内置了CC-CEDICT和维基百科两本字典,目前只支持Ruby 187以上版本及UTF8编码。

项目地址:http://github.com/yzhang/rseg
分词算法:http://xiecc.blog.163.com/blog/static/14032200671110224190/

安装

sudo gem install rseg –source=http://gemcutter.org

使用

Rseg目前支持两种用法,本地调用或者C/S模式调用。

1. 本地调用


> require 'rubygems'
> require 'rseg'
> Rseg.segment("需要分词的文章")
['需要', '分词', '的', '文章']

第一次执行需要加载字典,大概需要30秒,不过你也可以调用Rseg#load来手动加载字典。

2. C/S方式

$ rseg_server

这条命令会监听4100端口,你可以通过http://localhost:4100/ 访问Web界面,也可以通过rseg命令远程调用:

$ rseg ‘需要分词的文章’
需要 分词 的 文章

还可以调用Rseg#remote_segment


> require 'rubygems'
> require 'rseg'
> RSeg.remote_segment("需要分词的文章")
['需要', '分词', '的', '文章']

这次就不需要加载字典了。

性能

很多人比较关心性能,用我的小白测了一下,大概在5M/s,欢迎大家多提意见。

更新:很多人问如何自制字典,其实很简单,从github checkout源代码,然后将你的字典文件放到dict目录下,格式为每行一个词,然后修改lib/builder/dict.rb,在第24行的数组中插入你的字典文件的名字:

dictionaries = ['cedict.zh_CN.utf8', 'wikipedia.zh.utf8', 'your_dict.utf8']

然后执行:

$ ruby lib/builder/dict.rb

用生成的dict/dict.hash覆盖gem包中的dict.hash就可以了。

评论

怎样加载自定义词典?

我分析了原码, 已经通过你附带的builder生成了自己的dict.hash.

没想到自己真的要发第三个评论。 那我努力点在这个评论中说的全一点吧。

1.谢谢你的分词插件。很好很快。

2.你博客的时间让我感觉自己出国了。

3.xiecc在文章中提到他的算法有“歧义包容”功能, 就是可以将“感冒解毒胶囊”,分成“感冒”,“解毒”,“感冒解毒”,“感冒解毒胶囊”等啰嗦却全面的词组。 我发现你的代码没有(rseg分词的实际结果是“感冒解毒”,“胶囊”), 能不能加上这个功能并为它设置一个开关?

怎么制作字典啊 谢谢 希望您你回复

已经在末尾更新了制作字典的方法

留条评论?

Your response:

Categories