[ANN] RMMSeg 0.1.2 Released

February 25, 2008 – 10:42 pm

RMMSeg 发布了 0.1.2 版,主要是对性能进行了一些改进,以下是引用 RubyForge 上的通告:

rmmseg version 0.1.2
by pluskid

http://rmmseg.rubyforge.org

== DESCRIPTION

RMMSeg is an implementation of MMSEG Chinese word segmentation
algorithm. It is based on two variants of maximum matching
algorithms. Two algorithms are available for using:

* simple algorithm that uses only forward maximum matching.
* complex algorithm that uses three-word chunk maximum matching and 3
aditonal rules to solve ambiguities.

For more information about the algorithm, please refer to the
following essays:

* http://technology.chtsai.org/mmseg/
* http://pluskid.lifegoo.com/?p=261

== CHANGES

* Add cache to find_match_words: performance improved.
* Implement Chunk as a module instead of a class: performance improved.
* Don’t store unnecessary data in dictionary: memory usage reduced.

好消息是性能有了不少提升,现在的版本我在自己的机器上测试能达到大约 13KB/s 的分词速度 :) (我之前没有仔细测量过速度,如果按照 robbin 给我的描述的话,上一个版本应该大约是 2KB/s ,也算一个不小的进步了)。坏消息是内存泄漏的问题仍然存在,还没有找到泄漏的地方,有待改进。 :(

  1. 3 Responses to “[ANN] RMMSeg 0.1.2 Released”

  2. 第一时间测试了新版本!

    这个版本的确有了长足的进步,索引前500条数据花了3分钟多钟,ruby进程的内存占用上涨到150MB,索引1000条数据花了不到8分钟,ruby仅此的内存占用上涨到270MB。

    索引速度的确是加快了很多,但是目前这个速度还不足以达到实用的地步,按照这个速度,同一台机器原来的分词速度全部跑一遍需要45分钟左右,现在估计要6个多小时。我认为速度再提升3-5倍,就可以达到实用的程度了。

    内存泄漏的速度明显缓慢了,0.1.1版本索引前500条已经占用300多MB,0.1.2索引前500条内存占用是150MB,明显改善。

    加油!

    By robbin on Feb 26, 2008

  3. 补充几句:

    性能提升还是让我刮目相看的,我之前一直觉得可能用ruby写中文分词程序达不到性能要求,但是看起来,还是有希望的。

    内存泄漏问题我估计不是一个地方的代码引起的,有可能是多处代码引起的,所以可能需要持续的改进。

    另外内存泄漏问题也不是非要解决到完全不泄漏才算完美,如果泄漏的速度足够慢,比方说完整跑完一遍索引(比方说JavaEye的30多万记录),只泄漏200-300MB,我觉得就算可以接受。

    因为索引的进程是后台程序,跑完就结束了,只要不泄漏的太过分,造成服务器内存耗光,就可以接受。对于Web网站来说,搜索关键词的分词运算量很小,如果一个ruby进程跑了一天web程序,只泄漏了20-30MB,那也就可以接受了。每天夜里自动重起ruby进程释放一下就好了。

    By robbin on Feb 26, 2008

  4. @robbin:
    恩,多谢支持!我还会努力改进的。 :)

    By pluskid on Feb 26, 2008

Post a Comment