All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.zhangxd1989.basetool.extra.tokenizer.engine.TokenizerFactory Maven / Gradle / Ivy

There is a newer version: 1.0.16
Show newest version
package com.github.zhangxd1989.basetool.extra.tokenizer.engine;


import com.github.zhangxd1989.basetool.extra.tokenizer.TokenizerEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.TokenizerException;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.analysis.SmartcnEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.ansj.AnsjEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.hanlp.HanLPEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.ikanalyzer.IKAnalyzerEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.jcseg.JcsegEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.jieba.JiebaEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.mmseg.MmsegEngine;
import com.github.zhangxd1989.basetool.extra.tokenizer.engine.word.WordEngine;
import com.github.zhangxd1989.basetool.log.StaticLog;
import com.github.zhangxd1989.basetool.util.StrUtil;

/**
 * 简单分词引擎工厂,用于根据用户引入的分词引擎jar,自动创建对应的引擎
 *
 * @author sheldon
 */
public class TokenizerFactory {
    /**
     * 根据用户引入的分词引擎jar,自动创建对应的分词引擎对象
     *
     * @return {@link TokenizerEngine}
     */
    public static TokenizerEngine create() {
        final TokenizerEngine engine = doCreate();
        StaticLog.debug("Use [{}] Tokenizer Engine As Default.", StrUtil.removeSuffix(engine.getClass().getSimpleName(), "Engine"));
        return engine;
    }

    /**
     * 根据用户引入的分词引擎jar,自动创建对应的分词引擎对象
     *
     * @return {@link TokenizerEngine}
     */
    private static TokenizerEngine doCreate() {
        try {
            return new AnsjEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new HanLPEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new IKAnalyzerEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new JcsegEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new JiebaEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new MmsegEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new WordEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        try {
            return new SmartcnEngine();
        } catch (NoClassDefFoundError e) {
            // ignore
        }
        throw new TokenizerException("No tokenizer found ! Please add some tokenizer jar to your project !");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy