0
点赞
收藏
分享

微信扫一扫

转载一个简单的分词器实现

前端王祖蓝 2021-09-28 阅读 35
码哥
public class TokenizerDemo {

    private static Map<String, String> map = new HashMap<String, String>();

    //词典中最长词的长度,map中的key的最长长度
    private static final int maxSize = 3;
    static{
        //可以从数据库中加载或词表中加载
        map.put("中国", "");
        map.put("北京", "");
        map.put("中关村", "");
        map.put("海淀", "");
    }

    public static void main(String[] args) {
        String text = "中国人民共和国首都是北京,中关村在海淀区。";
        int length = text.length();
        for(int i=0; i<length; i++){
            int endIdx = i+maxSize;
            if(endIdx>length){
                endIdx = length;
            }
            //最大逆序匹配
            for(int j=0; j<maxSize; j++){
                String s = text.substring(i, endIdx);
                if(map.get(s)!=null){
                    i=endIdx-1;
                    System.out.println(s);
                    break;
                }else{
                    endIdx-=1;
                    if(endIdx==i){
                        break;
                    }
                }
            }

        }
    }
}
举报

相关推荐

0 条评论