精华内容
下载资源
问答
  • 字符串相似度算法 字符串相似度算法 字符串相似度算法 字符串相似度算法 相似度 字符串
  • 海鸥字符串相似度比较,这是一款Windows操作系统下的绿色、、简单、实用、美观的转换软件。所有功能集成在同一界面实现,易于操作和使用。而且它是一款绿色软件,无需安装,
  • 字符串相似度

    2020-12-20 14:51:32
    字符串相似度 问题描述 最长公共子串指给定的两个字符串之间最长的相同子字符串(忽略大小写),最长公共子串长度可用来定义字符串相似度。 现给出两个字符串S1和S2,S1的长度为Len1,S2的长度为Len2,假设S1和...

    标题
    字符串相似度




    问题描述
    最长公共子串指给定的两个字符串之间最长的相同子字符串(忽略大小写),最长公共子串长度可用来定义字符串相似度。
    现给出两个字符串S1和S2,S1的长度为Len1,S2的长度为Len2,假设S1和S2的最长公共子串长度为LCS,则两个字符串的相似度定义为2LCS/(Len1+Len2)。
    例如:S1=”App”,S2=”apple”,S1长度为3,S2长度为5,它们的最长公共子串为”App”,长度为3,则相似度为2
    3/(3+5)=0.75。
    现给出两个字符串,请计算它们的相似度结果保留3位小数。

    输入说明
    输入为两行,分别表示两个字符串S1和S2,每个字符串长度不超过100个字符,所有字符均为可打印字符,包括大小写字母,标点符号和空格。

    输出说明
    输出两个字符串的相似度,结果四舍五入保留3位小数。

    输入样例
    App
    Apple

    输出样例
    0.750





    实现
    /*
    自己写的,不会什么算法,很基础的一步步来的
    如果喜欢,不胜荣幸,如果觉得拉胯,非常欢迎建议和意见!
    */
    
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	char arr1[100] ;
    	char arr2[100] ;
    
    	gets(arr1);
    	gets(arr2);
    
    	//将字符统一换成小写
    	char *p1 = strlwr(arr1) ;
    	char *p2 = strlwr(arr2) ;
    
    	//max指向长的那个,min指向小的那个
    	char *max = (strlen(arr1)>strlen(arr2) ? p1:p2) ;
    	char *min = (strlen(arr1)>strlen(arr2) ? p2:p1) ;
    
    	//如果min是max的子串,直接算
    	if(strstr(max,min))
    	{
    		printf("%.3f",( (2*strlen(min)*1.0) / (strlen(min) + strlen(max) ) ) );
    	}
    	//寻找子串
    	else
    	{
    		int i,j;
    		for(i=strlen(min)-1 ; i>0 ; i--)  //从min最后一个字符开始,挨个往前面推
    		{
    			int judge =0 ;     //用来判断有没有出现最长子串
    			for( j=0; j<= i ; j++ )//从第一个元素开始,一直推到第i个
    			{
    				char tmp[100] ;//中间字符数组,用来存放j到i之间的字符串
    				memcpy(tmp,&min[j],i-j+1);//存入
    				tmp[i-j+1] = '\0' ;//给末尾追加一个结束
    
    				if(strstr(max,tmp) != NULL )//如果目前这个片段是max的子串
    				{
    					printf("%.3f",( (2*strlen(tmp)*1.0) / (strlen(min) + strlen(max) ) ) );
    					//算
    					//用来跳出第一个循环
    					judge = -1 ;
    					break ;//结束本次,最长公共部分已找到
    				}
    			}
    			if(judge == -1 )
    			{
    				break ;
    			}
    		}
    	}
    }
    
    展开全文
  • java字符串相似度算法

    2020-09-03 22:38:37
    主要介绍了java字符串相似度算法,是Java实现比较典型的算法,具有一定参考借鉴价值,需要的朋友可以参考下
  • 在php计算字符串相似度similar_text与相似度levenshtein函数的详细介绍,下面我们详细的介绍一下关于字符串相似度介绍
  • 字符串相似度比较算法,可比较不同长度的任意两个字符串的相似度,以百分比显示。
  • I want to find string similarity between two strings. This page has examples of some of them. Python has an implemnetation of Levenshtein algorithm. Is there a better algorithm, (and hopefully a pytho...

    I want to find string similarity between two strings. This page has examples of some of them. Python has an implemnetation of Levenshtein algorithm. Is there a better algorithm, (and hopefully a python library), under these contraints.

    I want to do fuzzy matches between strings. eg matches('Hello, All you people', 'hello, all You peopl') should return True

    False negatives are acceptable, False positives, except in extremely rare cases are not.

    This is done in a non realtime setting, so speed is not (much) of concern.

    [Edit] I am comparing multi word strings.

    Would something other than Levenshtein distance(or Levenshtein ratio) be a better algorithm for my case?

    解决方案

    There's a great resource for string similarity metrics at University of Sheffield. It has a list of various metrics (beyond just Levenshtein) and has open-source implementations of them. Looks like many of them should be easy to adapt into Python.

    Here's a bit of the list:

    Hamming distance

    Levenshtein distance

    Needleman-Wunch distance or Sellers Algorithm

    and many more...

    展开全文
  • 使用Levenshtein(莱文斯坦)编辑距离来实现相似度算法 所谓Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,操作包括一切你使用的手段将一个字符串转换成另一个字符串,比如插入一个...

    一、莱文斯坦(相似度)算法

         使用Levenshtein(莱文斯坦)编辑距离来实现相似度算法 所谓Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,操作包括一切你使用的手段将一个字符串转换成另一个字符串,比如插入一个字符、删除一个字符..等等;操作次数越少,说明两个字符串距离Levenshtein Distance越小,表示两个字符串越相似。 
    

    二、具体实现

    /**  * 相似度算法  */ 
    public class LevenshteinAlgorithm {
        public static void main(String[] args) {
            //要比较的两个字符串
            String[] str1 = {"今天星期四","12345667890"};
            String[] str2 = {"今天是星期五","1234567890"};
            for(int i=0;i<str1.length;i++){
                levenshtein(str1[i],str2[i]);
            }
        }
        /**
         *   DNA分析   拼字检查   语音辨识   抄袭侦测
         *
         */
        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("相似度:"+getPercentValue(similarity));
        }
        public static String getPercentValue( float similarity){
            NumberFormat fmt = NumberFormat.getPercentInstance();
            fmt.setMaximumFractionDigits(2);//最多两位百分小数,如25.23%
            return fmt.format(similarity);
        }
        //得到最小值
        private static int min(int... is) {
            int min = Integer.MAX_VALUE;
            for (int i : is) {
                if (min > i) {
                    min = i;
                }
            }
            return min;
        } }
    

    三、运行结果

    字符串"今天星期四"与"今天是星期五"的比较
    差异步骤:2
    相似度:66.67%
    字符串"12345667890"与"1234567890"的比较
    差异步骤:1
    相似度:90.91%

    下载源码完整项目http://www.zrscsoft.com/sitepic/12050.html

    展开全文
  • XDOJ字符串相似度

    2020-12-17 22:19:02
    //字符串相似度 // //类别 //字符串处理 //问题描述 //最长公共子串指给定的两个字符串之间最长的相同子字符串(忽略大小写),最长公共子串长度可用来定义字符串相似度。 //现给出两个字符串S1和S2,S1的长度为Len...

    这道题重点在于找到一样的地方
    Apple
    pp在寻找的时候应该将pp第一不断与apple的每个匹配,找到相似的一个
    there is mistake。
    //标题
    //字符串相似度
    //
    //类别
    //字符串处理
    //问题描述
    //最长公共子串指给定的两个字符串之间最长的相同子字符串(忽略大小写),最长公共子串长度可用来定义字符串相似度。
    //现给出两个字符串S1和S2,S1的长度为Len1,S2的长度为Len2,假设S1和S2的最长公共子串长度为LCS,则两个字符串的相似度定义为2
    LCS/(Len1+Len2)。
    //例如:S1=”App”,S2=”apple”,S1长度为3,S2长度为5,它们的最长公共子串为”App”,长度为3,则相似度为2*3/(3+5)=0.75。
    //现给出两个字符串,请计算它们的相似度结果保留3位小数。
    //
    //输入说明
    //输入为两行,分别表示两个字符串S1和S2,每个字符串长度不超过100个字符,所有字符均为可打印字符,包括大小写字母,标点符号和空格。
    //
    //输出说明
    //输出两个字符串的相似度,结果四舍五入保留3位小数。
    //
    //输入样例
    //App
    //Apple
    //
    //输出样例
    //0.750

    #include<stdio.h>
    #include<string.h>
    void transf(char *p)
    { int i;
        for(i=0;*(p+i)!='\0';i++)
    	{
    	if( *(p+i) >= 'a' && *(p+i) <= 'z' )
    		*(p+i) =*(p+i)-32 ;
    	}
    }
    int main()
    {  double result;
      char s1[100],s2[100],s3;
    	int i,j,number=0,max=0;
     	gets(s1);
     	gets(s2);
     	  transf(s1);
     	  transf(s2);
     	int l1=strlen(s1),l2=strlen(s2);
     	int t1,t2;
     			for(i=0;i<l1;i++)
     				for(j=0;j<l2;j++)//主要思想还是将重复的地方找到
    			 	{if(s2[j]==s1[i])
    				 t1=i;t2=j;
    				for(;s2[t2]==s1[t1]&&s2[t2]!='\0'&&s1[t1]!='\0';t1++,t2++)
    				{	number++;
    				}
    				 if(number>=max)
    					{ max=number;
    					number=0;
    					}
    					else number=0;
    			   }
    		result=(2*(double)max)/((double)(l1)+(double)(l2));
    		printf("%.3lf",result);
    }
    
    展开全文
  • Java字符串相似度 一个实现不同字符串相似度和距离度量的库。 当前实现了十二种算法(包括Levenshtein编辑距离和同级,Jaro-Winkler,最长公共子序列,余弦相似性等)。 查看下面的摘要表以获取完整列表... 下载 ...
  • java 计算字符串相似度
  • 字符串相似度比对JAVA

    2016-10-22 18:09:06
    就是一个简单的字符串相似度比较的方法,暂时还不知道有没有更好的方法,大家先看看,有更好的希望分享一下
  • 字符串相似度-源码

    2021-02-09 08:29:48
    字符串相似度 根据找到两个字符串之间的相似度,该相似度通常比要好。 安装 在终端或命令行中导航到您的项目文件夹: npm install string-similarity.ahk 在您的代码中: #Include %A_ScriptDir%\node_modules #...
  • 主要介绍了C#实现的字符串相似度对比类,本文直接给出类实现代码,代码中包含详细注释,需要的朋友可以参考下
  • 字符串相似度比较工具 描述:在日常开发过程中我们可能需要比较两个字符串的相似度有多少,本工具类提供了一个方便计算的算法。 /** * 字符串相似度比较工具 * * @date: 2020/12/7 10:45 */ public class ...
  • Levenshtein算法python也是用的这个对比字符串相似度的,还不错
  • 计算字符串变换相等的最小操作代价 2020远景智能计算字符串相似度计算字符串变换相等的最小操作代价题目描述:输入描述:输出描述:示例:思路:算法介绍示例代码:代码输出:2020远景智能在线笔试 计算字符串的相似度...
  • 针对传统字符串相似度算法复杂的局限,在向量空间模型(VSM)的基础上,提出一种同时考虑字符相邻位置关系和词序的字符串相似度计算模型。通过计算VSM中向量的汉明距离来描述字符串相邻程度,并以向量的曼哈顿距离...
  • 在网站开发中,我们经常使用php similar text 计算两个字符串相似度。本文涉及到similar text函数语法、用法详解,感兴趣的朋友一起学习吧
  • 如何用python求两个字符串的相似度呢?由于项目中要用到,所以本文将实现两个字符串相似度的求解过程。
  • 字符串相似度 算法 - 莱文斯坦距离 /** * <p> * StringSimilarityUtil<br> * 字符串相似度<br> * 莱文斯坦距离,又称 Levenshtein 距离,是编辑距离的一种。指两个字串之间,由一个转成另一...
  • #region 计算字符串相似度  ///  /// 计算字符串相似度  ///  /// ”str1″>字符串1  /// ”str2″>字符串2  /// 相似度  public static float Levenshtein(string str1, string str2)  {  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,221
精华内容 6,888
关键字:

字符串相似度