精华内容
下载资源
问答
  • Java实现相似度匹配算法

    千次阅读 2018-12-09 17:03:00
    * 相似度匹配算法 * (据说)由俄国人Vladimir Levenshtein在1965年发明 * 原理:返回将第一个字符串转换(删除、插入、替换)成第二个字符串的编辑次数。 * 次数越少,意味着字符串相似度越高 */ public ...
    /** 
     * 相似度匹配算法 
     * (据说)由俄国人Vladimir Levenshtein在1965年发明 
     * 原理:返回将第一个字符串转换(删除、插入、替换)成第二个字符串的编辑次数。 
     * 次数越少,意味着字符串相似度越高 
     */ 
    
    	public class Test {
    		 
    		public static void main(String[] args) {
    	 
    			String Str_1="abcdefghi5klmuvwxyz";
    			String Str_2="akcdefghijkl2uvwxz";
    			//length
    			int Length1=Str_1.length();
    			int Length2=Str_2.length();
    			
    			int Distance=0;
    			if (Length1==0) {
    				Distance=Length2;
    			}
    			if(Length2==0)
    			{
    				Distance=Length1;
    			}
    			if(Length1!=0&&Length2!=0){
    				int[][] Distance_Matrix=new int[Length1+1][Length2+1];
    				//编号
    				int Bianhao=0;
    				for (int i = 0; i <= Length1; i++) {
    						Distance_Matrix[i][0]=Bianhao;
    						Bianhao++;
    				}
    				Bianhao=0;
    				for (int i = 0; i <=Length2; i++) {
    					Distance_Matrix[0][i]=Bianhao;
    					Bianhao++;
    				}
    				
    				
    				char[] Str_1_CharArray=Str_1.toCharArray();
    				char[] Str_2_CharArray=Str_2.toCharArray();
    				
    				
    				for (int i = 1; i <= Length1; i++) {
    					for(int j=1;j<=Length2;j++){
    						if(Str_1_CharArray[i-1]==Str_2_CharArray[j-1]){
    							Distance=0;
    						}	
    						else{
    							Distance=1;
    						}
    							
    							int Temp1=Distance_Matrix[i-1][j]+1;
    							int Temp2=Distance_Matrix[i][j-1]+1;
    							int Temp3=Distance_Matrix[i-1][j-1]+Distance;
    							
    							Distance_Matrix[i][j]=Temp1>Temp2?Temp2:Temp1;
    							Distance_Matrix[i][j]=Distance_Matrix[i][j]>Temp3?Temp3:Distance_Matrix[i][j];
    						
    					}
    					
    				}
    				
    				Distance=Distance_Matrix[Length1][Length2];
    			}
    			
    			double Aerfa=1-1.0*Distance/(Length1>Length2?Length1:Length2);
    			System.out.println(Aerfa);
    		}
    	 
    	}
    

     

    展开全文
  • //计算相似度 float similarity =1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length()); System.out.println("相似度:"+similarity); } //得到最小值 private static int min(int... is) { int ...

    原文:http://wdhdmx.iteye.com/blog/1343856#bc2319361

    package com.xfl.boot.common.utils;

    /**

    * Created by XFL

    * time on 2018/11/16 0:10

    * description:

    */

    public class SimilarityUtils {

    public static void main(String[] args) {

    //要比较的两个字符串

    String str1 = "鞋子不能在实体店买";

    String str2 = "不能在实体店买鞋子";

    levenshtein(str1.toLowerCase(),str2.toLowerCase());

    }

    /**

    *

    * @param str1

    * @param str2

    */

    public static void levenshtein(String str1,String str2) {

    //计算两个字符串的长度。

    int len1 = str1.length();

    int len2 = str2.length();

    //建立上面说的数组,比字符长度大一个空间

    int[][] dif = new int[len1 + 1][len2 + 1];

    //赋初值,步骤B。

    for (int a = 0; a <= len1; a++) {

    dif[a][0] = a;

    }

    for (int a = 0; a <= len2; a++) {

    dif[0][a] = a;

    }

    //计算两个字符是否一样,计算左上的值

    int temp;

    for (int i = 1; i <= len1; i++) {

    for (int j = 1; j <= len2; j++) {

    if (str1.charAt(i - 1) == str2.charAt(j - 1)) {

    temp = 0;

    } else {

    temp = 1;

    }

    //取三个值中最小的

    dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1,

    dif[i - 1][j] + 1);

    }

    }

    System.out.println("字符串\""+str1+"\"与\""+str2+"\"的比较");

    //取数组右下角的值,同样不同位置代表不同字符串的比较

    System.out.println("差异步骤:"+dif[len1][len2]);

    //计算相似度

    float similarity =1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length());

    System.out.println("相似度:"+similarity);

    }

    //得到最小值

    private static int min(int... is) {

    int min = Integer.MAX_VALUE;

    for (int i : is) {

    if (min > i) {

    min = i;

    }

    }

    return min;

    }

    }

    14686d660fee68bda2db19b8554454b7.png

    展开全文
  • Java字符串相似度匹配

    万次阅读 2018-11-16 00:30:31
    System.out.println("相似度:"+similarity); } //得到最小值 private static int min(int... is) { int min = Integer.MAX_VALUE; for (int i : is) { if (min > i) { min = i; } } return min; } } ...

    原文:http://wdhdmx.iteye.com/blog/1343856#bc2319361

    package com.xfl.boot.common.utils;
    
    /**
     * Created by XFL
     * time on 2018/11/16 0:10
     * description:
     */
    public class SimilarityUtils {
        public static void main(String[] args) {
            //要比较的两个字符串
            String str1 = "鞋子不能在实体店买";
            String str2 = "不能在实体店买鞋子";
            levenshtein(str1.toLowerCase(),str2.toLowerCase());
        }
    
        /**
         *
         * @param str1
         * @param str2
         */
        public static void levenshtein(String str1,String str2) {
            //计算两个字符串的长度。
            int len1 = str1.length();
            int len2 = str2.length();
            //建立上面说的数组,比字符长度大一个空间
            int[][] dif = new int[len1 + 1][len2 + 1];
            //赋初值,步骤B。
            for (int a = 0; a <= len1; a++) {
                dif[a][0] = a;
            }
            for (int a = 0; a <= len2; a++) {
                dif[0][a] = a;
            }
            //计算两个字符是否一样,计算左上的值
            int temp;
            for (int i = 1; i <= len1; i++) {
                for (int j = 1; j <= len2; j++) {
                    if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
                        temp = 0;
                    } else {
                        temp = 1;
                    }
                    //取三个值中最小的
                    dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1,
                            dif[i - 1][j] + 1);
                }
            }
            System.out.println("字符串\""+str1+"\"与\""+str2+"\"的比较");
            //取数组右下角的值,同样不同位置代表不同字符串的比较
            System.out.println("差异步骤:"+dif[len1][len2]);
            //计算相似度
            float similarity =1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length());
            System.out.println("相似度:"+similarity);
        }
    
        //得到最小值
        private static int min(int... is) {
            int min = Integer.MAX_VALUE;
            for (int i : is) {
                if (min > i) {
                    min = i;
                }
            }
            return min;
        }
    }
    
    

    在这里插入图片描述

    展开全文
  • java算法之-相似度匹配

    千次阅读 2015-10-30 15:30:45
    package ... /** * 比较两个字符串的相似度 */ public class SimilarityUtil { private static int LowerOfThree(int first, int second, int third) { int min = Math.min(first, second); ...
    package com.hxqc.pricemonitor.util;
    
    /**
     * 比较两个字符串的相似度
     */
    public class SimilarityUtil {
    
    	private static int LowerOfThree(int first, int second, int third) {
    		int min = Math.min(first, second);
    		return Math.min(min, third);
    	}
    
    	private static int Levenshtein_Distance(String str1, String str2) {
    		int[][] Matrix;
    		int n = str1.length();
    		int m = str2.length();
    		int temp = 0;
    		char ch1;
    		char ch2;
    		int i = 0;
    		int j = 0;
    		if (n == 0) {
    			return m;
    		}
    		if (m == 0) {
    			return n;
    		}
    		Matrix = new int[n + 1][m + 1];
    
    		for (i = 0; i <= n; i++) {
    			// 初始化第一列
    			Matrix[i][0] = i;
    		}
    
    		for (j = 0; j <= m; j++) {
    			// 初始化第一行
    			Matrix[0][j] = j;
    		}
    
    		for (i = 1; i <= n; i++) {
    			ch1 = str1.charAt(i - 1);
    			for (j = 1; j <= m; j++) {
    				ch2 = str2.charAt(j - 1);
    				if (ch1 == ch2) {
    					temp = 0;
    				} else {
    					temp = 1;
    				}
    				Matrix[i][j] = LowerOfThree(Matrix[i - 1][j] + 1,
    						Matrix[i][j - 1] + 1, Matrix[i - 1][j - 1] + temp);
    			}
    		}
    		return Matrix[n][m];
    	}
    
    	public static double LevenshteinDistancePercent(String str1, String str2) {
    		str1=str1.replace(" ", "");
    		str2=str2.replace(" ", "");
    		int val = Levenshtein_Distance(str1, str2);
    		return 1 - (double) val / Math.max(str1.length(), str2.length());
    	}
    }

    业务场景:公司需要将多个汽车销售网站(例如:易车网、汽车之家、车商城等)的车型信息通过爬虫,爬取到数据库,由于每个汽车销售平台的车型命名不可能完全一致,所以有了这个相似度匹配的业务,前端可以设置相似度比值,以我们平台的存储的车型名称XXX与其他平台的车型名称YYY进行比对:XXX/YYY >= 前端设置相似度比值则可以进行存储。

    所以有了上面这段代码

     

    展开全文
  • 使用JAVA编写的,分词、TFIDF相似度计算,K临近法聚类
  • 1、需求描述:数据库采集sql语句的记录表,包含记录编号-ID、日期时间-data、sql语句-statement,对表内每一条记录的sql语句和表内其他记录的sql语句进行模糊匹配,以顺序字符匹配方式进行,达到定义的相似度,就为...
  • 中文相似度匹配算法

    千次阅读 2017-12-18 22:12:38
    经典算法1---相似度--模糊查询,查抄袭,语言识别 转载 2016年07月11日 21:57:53 标签: 经典算法 / java / 8878 编辑 删除 from http://wdhdmx.iteye.com/blog/1343856#bc2319361 1.百度百科介绍: ...
  • /*** 采用动态规划的方法(字符串匹配相似度)* @param source 源* @param target 要匹配的字符串* @return*/public static int EditDistance(String source, String target) {char[] sources = source.toCharArray();...
  • Java字符串匹配相似度算法

    千次阅读 2018-12-19 11:34:50
    * 采用动态规划的方法(字符串匹配相似度) * @param source 源 * @param target 要匹配的字符串 * @return */ public static int EditDistance(String source, String target) { char[] source...
  • 我正在创建一个小程序来检测大图像中的对象(小图像),我正在使用OpenCVjava.由于我必须考虑旋转和缩放,我使用了FeatureDetector.BRISK和DescriptorExtractor.BRISK.以下方法用于过滤匹配结果以仅获得最佳匹配.我有两...
  • public class Exec { public static void main(String[] args) { // get documents String[] docs = { // "lsq java lsq vb ", 
  • 我可以使用bewlow显示的代码找到匹配的功能.我想计算两个图像之间的百分比相似度.我是OpenCV的新手.任何形式的帮助将受到高度赞赏.FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);...
  • 现在,另一个字符串“christmas”和“mas”将具有0的相似度,因为它们不以相同的字符集开头.在这两种情况下,第二个字符串是第一个字符串的后缀.一个更清晰的例子:字符串长度:1〜10 ^ 5String:abaabc后缀:abaabc,...
  • package sim;import java.util.HashMap;import java.util.Map;.../*** 字符串相似性匹配算法* Created by panther on 15-7-20.*/public class Similarity {Map vectorMap = new HashMap();int[] tempArray =...
  • 用于Scala和Java的模糊匹配字符串距离库,包括Levenshtein距离,Jaro距离,Jaro-Winkler距离,Dice系数,N-Gram相似度,余弦相似度,Jaccard相似度,最长公共子序列,汉明距离等。 适用于广义数组。 有关更多详细...
  • java字符串相似度算法

    千次阅读 2018-03-30 15:06:04
    按顺序匹配的,代码如下:/** * 判断两个字符串相似度,可设置level * @param strSource 原字符串 * @param strCompared 比较字符串 * @param level 评分阀值 * @param moreCount 比较字符串比原字符串多多少个...
  • 使用 TF-IDF 加权的空间向量模型实现句子相似度计算字符匹配层次计算句子相似度计算两个句子相似度的算法有很多种,但是对于从未了解过这方面算法的人来说,可能最容易想到的就是使用字符串匹配相关的算法,来检查两...
  • 相似度是由一系列算法组成的Java相似度计算工具包,目标是传播自然语言处理中相似度计算方法。相似度是工具实用,性能高效,架构清晰,语料时新,可自定义的特点。 相似性提供下列功能: 词相似度计算 词林编码...
  • 其次,您可以使用SIFT功能匹配在两个图像中查找对应关系。 这是一些示例代码:I = imread('p1.jpg');J = imread('p2.jpg');I = single(rgb2gray(I)); % Conversion to single is recommendedJ = single(rgb2gray(J))...
  • 余弦相似度-java代码实现

    万次阅读 2015-08-01 21:12:06
    字符串相似性匹配算法,匹配句子或者文章的相似性
  • 自己琢磨的 图像相似度算法 JAVA版实现

    万次阅读 热门讨论 2011-09-25 22:04:59
    最近有个项目里要整理缩略图和原图是否匹配,然后就去找工具和方法做了,之后很好奇图像相似度是怎么算的,google了下貌似很深奥,而且无最简单的例子java代码源码下载,估计图形学的人不削用java吧。  个人...
  • JWordNetSim-java实现的基于wordnet的单词匹配算法,输出为待比较的词的相似度
  • 写在前面的话,既然是学习版本,那么就不是一个好用的工程实现版本,整套代码全部使用List进行匹配效率可想而知。 【原文转自】:...
  • 1 理论介绍模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。OpenCV提供了6种...
  • 模糊匹配算法java实现

    2021-02-04 10:05:15
    使用java实现对两个字符串进行比较分析其相似度
  • 不说废话,直接上代码 ...此包提供了对应的本体解析方法 class ParsingOfAlignment 类提供了关于参考本体的解析方法 ... import java.io.File; import java.io.FileInputStream;...import java.util.Array...
  • 字符串相似度

    2014-06-12 16:07:13
    由于工作需要,公司数据要与客户的数据进度匹配,在网上找了一些方法感觉还不错,我采用的是余弦算法。这是我的参考地址http://www.maoguangpu.com/post/117.html。 里面只做对中文的处理,我做了些改进,中,英,...

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
关键字:

java相似度匹配

java 订阅