
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