• [转载]几种切词工具的使用(转)


    最近因项目需要,对尝试了Paoding, Ik, Jeasy, Ictclas4j四种切词工具,现把使用经验小结一下:

    测试的字符串是:“在传统意义上的几何学是研究图形的形状大小等性质”

    1.Paoding

    版本: 2.0.4

    实现类: PaodingAnalyzer

    依赖包: lucene 2.4

    使用方法: 主要通过lucene的接口实现, Analyser#tokenStream方法

    切词效果: 传统/意义/意义上/上的/几何/几何学/研究/图形/形的/形状/大/大小/等/性质

    备注: paoding的切词会漏字(食字),上面的结果就食了 ‘在’ 字;

    总会进行最小粒度切分,只要在词库里有的词组,都会出现。如:之前-->前/之前

    2.IK

    版本: 3.2.3

    实现类:IKSegmentation

    依赖包:无,可以不依赖于Lucene直接应用

    使用方法:

    IKSegmentation ik = new IKSegmentation(new StringReader(str1), false);// 最少粒度切分

    Lexeme le = null;

    while ((le = ik.next()) != null) {
    System.out.print(le.getLexemeText() + "/");
    }

    切词效果:

    IK(最小粒度):在/传统/意义上/意义/的/几何学/几何/几/是/研究/图形/的/形状/大小/等/性质/


    IK(最大粒度):在/传统/意义上/的/几何学/几/是/研究/图形/的/形状/大小/等/性质/

    备注:IK不会食字,

    在构造函数的第二个参数可以设定最小粒度和最大粒度,

    不依赖于Lucene

    但可以看到最大粒度也仍然会有重字的情况,几何学-->几何学/几,分成了两个词。

    3.Jeasy/je-analysis-1.5.1.jar/ MMAnalyzer

    版本:1.5.1

    实现类:MMAnalyzer

    依赖包:依赖于Lucene2.4~2.9版本的包

    使用方法:

    很简单--> MMAnalyzer mm = new MMAnalyzer(); String result = mm.segment(str,splitor);

    splitor是切词后各词组的分隔符,这里使用'/'

    切词效果:传统/意义上/几何学/研究/图形/形状/大小/性质/

    备注:

    这个不开源的,不过感觉效果比其它都好,默认是正向最大匹配的

    会食字,但不会有重字

    本人觉得Jeasy占的内存比较大(因为我开始是paoding,Ik放一个类里同时进行测试的,当我加上Je也一起测试时,eclipse下总是报 outOfMemory的错误,我把eclipse的vm argument里调整了“-Xms256m -Xmx1024m”,就可以了)

    4.Ictclas4j

    版本:0.9.1

    实现类:SegTag

    依赖包:无,不依赖于Lucene

    使用方法:

    SegTag st = new SegTag(1);
    SegResult sr = st.split(str);
    System.out.println(sr.getFinalResult());

    切词效果:在/p 传统/n 意义/n 上/f 的/u 几何学/n 是/a 研究/n 图形/n 的/b 形状/n 大小/a 等/a 性质/n

    备注:

    这个项目是中科院做的,带词性分析的,原来是c++写的,有牛人改写成java的

    在官网上有几个版本,我这个是从google Code上下载的,把项目打包后,还要把项目里的Data文件夹放到应用的项目中才可以用。Data文件夹是保存字典的

    一个很大的坏处是:在eclipse里的java文件一定要保存为gbk编码才可以正常运行,utf-8是不能运行的

    不会食字,没有重字

    小结:

    因项目需要,经多次比较,个人使用MMAnalyzer,感觉它比较智能,切的词比较符合常规。但会食字,我感觉比较不好,因为我在另外一个应用中,我想全部字都保留。因为切的语句都不长,效率方面没比较。

    P.S. 这博客过了段时间才写的,其中有些依赖包记不清了,好像有几个要依赖于apache的commons里的包

    转自:http://bosshida.iteye.com/blog/776073

    ----夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。
  • 相关阅读:
    服务器响应状态码
    细说同域-同父域-跨域
    细说Ajax跨域
    为SQL缓存通知启用数据库
    使用PATINDEX()判断含有[A-Z]、[a-z]、[0-9]之外的字符
    记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
    谈谈如何在面试中发掘程序猿的核心竞争力
    “属性”与“特性”区别
    【转】安卓手机无法安装软件的原因总结
    【转】自学android半年,已从.net转型成android程序员
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6521004.html
Copyright © 2020-2023  润新知