栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA相似字符串的聚类算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA相似字符串的聚类算法

---------研究证明说脏话确实可以提高忍耐力,和降低血压。详情可见,将手放入冰水中忍耐例子(百度||google)


将多个相似的字符串进行聚类,返回一个json

导相似度的包

(由于相似度非常重要,没有大神的功力,建议还是选择用我发的)


    info.debatty
    java-string-similarity
    RELEASE


    com.alibaba
    fastjson
    1.2.31
函数

参数说明:

list是你的字符串的集合

simNum是相似度的程度(0-1.0之间)

    public static String julei(List list,double simNum){
        NormalizedLevenshtein l = new NormalizedLevenshtein();




        HashSet set_source = new HashSet<>(list);
        HashSet set_temp =new HashSet<>(list);



        StringBuffer rs=new StringBuffer();

        for(String a1: set_source){
//            System.out.println(a1);
            set_temp.remove(a1);
            //下一个结束时,判定是否在字符串中,如果在,则直接下一个,不在,则拼接一个尾号;
            if(rs.indexOf(a1)!=-1){//在字符串中
                continue;
            }else{
                //判定最后的字符串之前是不是为!--!,是则不加,否则则添加,前提条件rslength>4
                if(rs.length()>4){
                    if(rs.substring(rs.length() - 4, rs.length()).equals("!--!")){

                    }else{
                        rs.append("!--!");
                    }
                }


            }
//            System.out.println("--------");
            for(String b1:set_temp){
                System.out.println(b1);
                //相似度判定

                if(l.similarity(a1,b1)>simNum){
                    //相似度符合,则用符号拼接字符串
                    rs.append(a1+"=>"+b1);
                }


            }

        }

        String rs_str=rs.toString();
        //去开头
        int delStrLength = "!--!".length();
        if (rs_str.startsWith("!--!")) {
            rs_str=rs_str.substring(delStrLength);
        }
        //去结尾
        if(rs_str.endsWith("!--!")) {
            rs_str = rs_str.substring(0, rs_str.length() - 4);
        }
        //    gc垃圾回收
        l=null;
        set_source=null;
        set_temp=null;

        JSonArray jsonArray = new JSonArray();

        for(String  r:rs_str.split("!--!")){
            String[] simArr = r.split("=>");

            jsonArray.add(simArr);

        }

        return jsonArray.toJSonString();
    }

结果:

DEMO测试

    public static void main(String[] args) {


        String arr="hibernate-osgi!--!hibernate5-infinispan!--!hibernate4-core!--!hibernate5-entitymanager!--!hibernate!--!hibernate-infinispan!--!hibernate4-proxool!--!hibernate-hikaricp!--!hibernate5-java8!--!hibernate-envers!--!hibernate5-ehcache!--!hibernate4-ehcache!--!hibernate5-osgi!--!mirrors/hibernate!--!hibernate-core!--!hibernate-c3p0!--!hibernate5-envers!--!hibernate4-infinispan!--!hibernate5-proxool!--!hibernate-entitymanager!--!hibernate4-c3p0!--!hibernate5-parent!--!hibernate5-core!--!hibernate4-testing!--!hibernate/hibernate-orm";
        String[] split = arr.split("!--!");
        List split_set = (List) Arrays.asList(split);

        String julei = julei(split_set,0.5);
        System.out.println(julei);


        }

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272132.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号