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

com.github.houbb.sentence.segment.bs.SentenceSegmentBs Maven / Gradle / Ivy

package com.github.houbb.sentence.segment.bs;

import com.github.houbb.heaven.support.instance.impl.Instances;
import com.github.houbb.sentence.segment.api.ISentenceSegment;
import com.github.houbb.sentence.segment.api.ISentenceSegmentContext;
import com.github.houbb.sentence.segment.api.ISentenceSegmentResult;
import com.github.houbb.sentence.segment.api.impl.SentenceSegment;
import com.github.houbb.sentence.segment.api.impl.SentenceSegmentContext;
import com.github.houbb.sentence.segment.support.data.ISentenceSegmentData;
import com.github.houbb.sentence.segment.support.data.impl.SentenceSegmentDatas;
import com.github.houbb.sentence.segment.support.result.ISentenceSegmentResultHandler;

import java.util.List;

/**
 * @author binbin.hou
 * @since 0.0.1
 */
public final class SentenceSegmentBs {

    private SentenceSegmentBs(){}

    /**
     * 新建引导类实例
     * @return 结果
     * @since 0.0.1
     */
    public static SentenceSegmentBs newInstance(){
        return new SentenceSegmentBs();
    }

    /**
     * 句子分词实现
     * @since 0.0.1
     */
    private ISentenceSegment sentenceSegment = Instances.singleton(SentenceSegment.class);

    /**
     * 数据默认实现
     * @since 0.0.1
     */
    private ISentenceSegmentData data = SentenceSegmentDatas.defaults();

    /**
     * 可重复的
     * @since 0.0.1
     */
    private boolean repeatable = true;

    /**
     * 设置数据信息
     * @param data 数据
     * @return this
     * @since 0.0.1
     */
    public SentenceSegmentBs data(ISentenceSegmentData data) {
        this.data = data;
        return this;
    }

    /**
     * 设置是否重复
     * @param repeatable 是否
     * @return this
     * @since 0.0.1
     */
    public SentenceSegmentBs repeatable(boolean repeatable) {
        this.repeatable = repeatable;
        return this;
    }

    /**
     * 执行分段
     * @param text 文本
     * @param handler 处理类
     * @param  泛型
     * @return 结果
     * @since 0.0.1
     */
    public  R segment(final String text, ISentenceSegmentResultHandler handler) {
        ISentenceSegmentContext context = buildContext();
        List results = this.sentenceSegment.segment(text, context);
        return handler.handler(results);
    }

    /**
     * 构建上下文
     * @since 0.0.1
     * @return this
     */
    private ISentenceSegmentContext buildContext() {
        return SentenceSegmentContext.newInstance()
                .data(data)
                .repeatable(repeatable);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy