zoukankan      html  css  js  c++  java
  • 切词框架jcseg,入门

    Jcseg是使用Java开发的一款开源的中文分词器, 基于流行的mmseg算法实现,分词准确率高达98.4%, 支持中文人名识别, 同义词匹配, 停止词过滤等。并且提供了最新版本的lucene,solr,elasticsearch分词接口。

            <jcseg.version>1.9.5</jcseg.version>   
            <dependency>
              <groupId>org.lionsoul.jcseg</groupId>
              <artifactId>jcseg-core</artifactId>
              <version>${jcseg.version}</version>
            </dependency>            

    如何配置jcseg.properties

    # jcseg function
    #-正向最大化匹配数目(建议位于4-7 之间)。
    jcseg.maxlen=10
    #-开启中文人名识别(1.7.0 后, 0 关闭, 1 开启)。
    jcseg.icnname=1
    #-中英混合词最大中文词数,例如:A 计划 A 后面有两个字“计划”。
    jcseg.mixcnlen=4
    #最大的配对标点内容长度。
    jcseg.pptmaxlen=15
    #-姓氏修饰词长度,例如:老陈 中的“陈”(通常为1)。
    jcseg.cnmaxlnadron=1
    #是否自动过滤停止词(0 关闭, 1 开启)
    jcseg.clearstopword=1
    #是否自动中文数字转阿拉伯数字(0 关闭, 1 开启)
    jcseg.cnnumtoarabic=1
    #是否自动中文分数转阿拉伯分数(0 关闭, 1 开启)
    jcseg.cnfratoarabic=0
    #-姓名成词歧义阕值(不用更改, 除非你知道你改了什么)。
    jcseg.nsthreshold=1000000
    #自动保留标点,用于识别负载的英文标点组合词.
    jcseg.keeppunctuations=@%.&+
    # about the lexicon
    #-词库文件前缀(例如: lex-main.lex)。
    lexicon.prefix=lex
    #-词库文件后缀(例如: lex-main.lex)。
    lexicon.suffix=lex
    #-词库存放路径({jar.dir}/lexicon 为默认路径, 表示词库位于jar 目录下的lexicon 目录下)
    #从jcseg-1.9.2 开始: 支持多目录加载词库.不同的路径使用';'隔开就可以了.
    #例如: lexicon.path=/java/jcseg/lex1;/java/jcseg/lex2
    lexicon.path=
    #-是否词库更新自动加载(1 开启, 0 关闭)
    lexicon.autoload=1
    #-词库更新轮询时间(单位: 秒)
    lexicon.polltime=120
    # lexicon load
    #载入词库时是否载入词条的词性。(0 关闭, 1 开启)
    jcseg.loadpos=0
    #载入词库时是否载入词条的拼音(1.7.0 后, 0 关闭, 1 开启)。
    jcseg.loadpinyin=1
    #载入词库时是否载入词条的同义词(0 关闭, 1 开启)。
    jcseg.loadsyn=0
    #是否保留Jcseg 不是别的字符.(1 保留, 0 关闭)
    jcseg.keepunregword=1
    #是否二次切分复杂的英文切分结果. (1 开启, 0 关闭)
    jcseg.ensencondseg = 0
    #最小二次切分长度. (建议大于1)
    jcseg.stokenminlen = 4

    怎么初始化jcseg

    static ISegment seg;
        static{
            JcsegTaskConfig config = null;// new JcsegTaskConfig();
            final File jcseg_config_file = FileMgr.findFile(InformationService.class,"jcseg.properties");
            if(jcseg_config_file != null && jcseg_config_file.exists()){
                config = new JcsegTaskConfig(jcseg_config_file.getAbsolutePath());
            }else{
                InformationService.LOG.info("Could Not Found jcseq.properties ,Use Default!!");
                config = new JcsegTaskConfig();
            }
            String webRootpath=JavaPath.getAutoRootPath()+"VitalData/info/lexicon";
            String[] lexPath = {webRootpath};
            config.setLexiconPath(lexPath);
    
            ADictionary dic = DictionaryFactory.createDefaultDictionary(config);
            try {
                InformationService.seg =SegmentFactory.createJcseg(JcsegTaskConfig.COMPLEX_MODE, config, dic);
            } catch (JcsegException e) {
                e.printStackTrace();
    
            }
    
        }

    使用

    public List<String> segment(final String str) throws IOException, JcsegException
        {
            final List<String> hashSet = new ArrayList<String>();
            IWord word = null;
            final long _start = System.nanoTime();
            int counter = 0;
           seg.reset(new StringReader(str));
            while ( (word = seg.next()) != null )
            {
                if(word.getValue().length()>=2){
                    hashSet.add(word.getValue());
                    counter++;
                }
                word = null;
            }
            final long e = System.nanoTime();
            
            return hashSet;
        }
  • 相关阅读:
    Vue.js学习 Item14 – 过滤器与自定义过滤器
    Vue.js学习 Item13 – 指令系统与自定义指令
    Vue.js学习 Item12 – 内部响应式原理探究
    redis配置文件redis.conf详细说明
    PhpStorm下Laravel代码智能提示
    laravel 5.0 artisan 命令列表(中文简体)
    阿里云CENTOS服务器挂载数据盘
    NGINX关于配置PATHINFO
    LINUX下导入、导出MYSQL数据库命令
    ECSTORE2.0 定时任务配置
  • 原文地址:https://www.cnblogs.com/kangniuniu/p/11138789.html
Copyright © 2011-2022 走看看