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;
        }
  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/kangniuniu/p/11138789.html
Copyright © 2011-2022 走看看