字符串相似度算法
‘壹’ 谁有求两个字符串相似度算法代码的,C++或者C的都行啊,急求,[email protected],必有重赏啊!!!!!!!
已经调试完了 望采纳~
#include <string.h>
int main()
{
char str1[30] = {0};
char str2[30] = {0};
double count1 = 0;
double count2 = 0;
printf("请输入两个字符串\n");
scanf("%s",str1);
scanf("%s",str2);
if(strlen(str1)==strlen(str2))
{
int i;
for(i=0; i<30; i++)
{
if(str1[i]=='\0')
break;
count1=count1+1;
if(str1[i]==str2[i])
count2=count2+1;
}
printf("1=%g,2=%g\n",count1,count2);
printf("两个字符串的相似度是%g%%\n",(count2/count1)*100);
}
else
printf("长度不等无法判断相似度\n");
}
‘贰’ c++计算字符串相似度的函数,谁给发一个
这个函数你自己看看吧
‘叁’ 两个十万级的“0-1”字符串,求他们的相似度用什么算法比较好
图像识别怎么能这么来干?可能是我孤陋寡闻了,但是不考虑前景、背景、焦点等能代表一张图像的特征,仅仅拿图像的二进制串来比较,这种方法我觉得没意义啊。
图像处理过程中有一种将图像从像域(像素)转变为频域的方法,改变之后的频域依然是一个类似的矩阵,但是越靠近左上角的数值所具有的能量就越高,说白了就是,你如果把(0,0)的点更改了,整张图就变了,但如果你把(n,n)的改了,对像域内的改变肉眼是无法识别出来的,因此通常将对角线右下的所有数值置0之后,即可以不对原图作大的改变(从人眼识别的角度,与原图相似度极高),又可以有效地降低一个图像的大小(至少可以砍一半)
‘肆’ 终于知道怎么判断字符串相似度了
一直不理解,为什么要计算两个字符串的相似度呢。什么叫做两个字符串的相似度。经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释。因为搜索引擎要把通过爬虫抓取的页面给记录下来,那么除了通过记录url是否被访问过之外,还可以这样,比较两个页面的相似度,因为不同的url中可能记录着相同的内容,这样,就不必再次记录到搜索引擎的存储空间中去了。还有,大家毕业的时候都写过论文吧,我们论文的查重系统相信也会采用计算两个字符串相似度这个概念。
以下叙述摘自编程之美一书:
许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
1.修改一个字符(如把“a”替换为“b”);
2.增加一个字符(如把“abdd”变为“aebdd”);
3.删除一个字符(如把“travelling”变为“traveling”);
比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。上面的两种方案,都仅需要一 次 。把这个操作所需要的次数定义为两个字符串的距离,而相似度等于“距离+1”的倒数。也就是说,“abcdefg”和“abcdef”的距离为1,相似度 为1/2=0.5。
给定任意两个字符串,你是否能写出一个算法来计算它们的相似度呢?
原文的分析与解法
不难看出,两个字符串的距离肯定不超过它们的长度之和(我们可以通过删除操作把两个串都转化为空串)。虽然这个结论对结果没有帮助,但至少可以知道,任意两个字符串的距离都是有限的。我们还是就住集中考虑如何才能把这个问题转化成规模较小的同样的子问题。如果有两个串A=xabcdae和B=xfdfa,它们的第一个字符是 相同的,只要计算A[2,...,7]=abcdae和B[2,...,5]=fdfa的距离就可以了。但是如果两个串的第一个字符不相同,那么可以进行 如下的操作(lenA和lenB分别是A串和B串的长度)。
1.删除A串的第一个字符,然后计算A[2,...,lenA]和B[1,...,lenB]的距离。
2.删除B串的第一个字符,然后计算A[1,...,lenA]和B[2,...,lenB]的距离。
3.修改A串的第一个字符为B串的第一个字符,然后计算A[2,...,lenA]和B[2,...,lenB]的距离。
4.修改B串的第一个字符为A串的第一个字符,然后计算A[2,...,lenA]和B[2,...,lenB]的距离。
5.增加B串的第一个字符到A串的第一个字符之前,然后计算A[1,...,lenA]和B[2,...,lenB]的距离。
6.增加A串的第一个字符到B串的第一个字符之前,然后计算A[2,...,lenA]和B[1,...,lenB]的距离。
在这个题目中,我们并不在乎两个字符串变得相等之后的字符串是怎样的。所以,可以将上面的6个操作合并为:
1.一步操作之后,再将A[2,...,lenA]和B[1,...,lenB]变成相字符串。
2.一步操作之后,再将A[2,...,lenA]和B[2,...,lenB]变成相字符串。
3.一步操作之后,再将A[1,...,lenA]和B[2,...,lenB]变成相字符串。
通过以上1和6,2和5,3和4的结合操作,最后两个字符串每个对应的字符会相同,但是这三种操作产生的最终的两个字符串是不一样的。我们不知道通过上述的三种结合那种使用的操作次数是最少的。所以我们要比较操作次数来求得最小值。
‘伍’ 除Levenshtein距离算法外,是否还有更好的比较字符相似度的算法
linux环境下,没有首先安装python_Levenshtein,用法如下:重点介绍几个该包中的几个计算字串相似度的几个函数实现。1.Levenshtein.hamming(str1,str2)计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字串之间对应位置上不同字
‘陆’ VB计算字符串的相似度,来个可执行文件最好
Functionxsd(s1AsString,s2AsString)AsDouble
Dimd()AsInteger,l1AsInteger,l2AsInteger
DimiAsInteger,jAsInteger,tAsInteger
l1=Len(s1)
l2=Len(s2)
ReDimd(l1,l2)
Fori=0Tol1
d(i,0)=i
Next
Fori=0Tol2
d(0,i)=i
Next
Fori=1Tol1
Forj=1Tol2
IfMid(s1,i,1)=Mid(s2,j,1)Then
t=0
Else
t=1
EndIf
d(i,j)=min3(d(i-1,j-1)+t,d(i,j-1)+1,d(i-1,j)+1)
Next
Next
Ifl1>l2Then
xsd=l1
Else
xsd=l2
EndIf
xsd=1-d(l1,l2)/xsd
EndFunction
Functionmin3(x1,x2,x3)
Ifx1<x2Andx1<x3Then
min3=x1
ElseIfx2<x3Andx2<x1Then
min3=x2
Else
min3=x3
EndIf
EndFunction
PrivateSubCommand1_Click()
MsgBox"相似度:"&FormatPercent(xsd(Text1.Text,Text2.Text),2,vbTrue)
EndSub
在Text1和Text2分别输入一段文字,再点Command1就会告诉你两段文字的相似度了。
‘柒’ 数学建模:两字符串相似度计算
这个问题来源于生物序列分析,因为DNA序列是由四个碱基构成的,从数学的角度看就是由四个字符组成的序列或者说字符串,现在最基本的算法就是waterman&wunch提出的动态规划算法,你可以上网搜一下,关于这个算法的运算过程有很详细的介绍
‘捌’ similar_text — 计算两个字符串的相似度
similar_text
(php 4, PHP 5, PHP 7, PHP 8)
similar_text — 计算两个字符串的相似度
说明
similar_text ( string $first , string $second , float &$percent = ? ) : int
两个字符串的相似程度计算依据 Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这个做法可能会导致整个过程变慢或变快。也请注意,该算法的复杂度是 O(N**3),N 是最长字符串的长度。
参数
first
第一个字符串。
second
第二个字符串。
percent
通过引用方式传递第三个参数,similar_text() 将计算相似程度百分数。
返回值
返回在两个字符串中匹配字符的数目。
‘玖’ 谁能提供C#里计算两个字符串相似度的算法
先计算a的长度,然后进行长度-1循环,在循环里,每次先取出2个字符,然后和B,indexof比较。如果值不等与-1,也就是说没有,那么继续循环,如果不等于-1,那么取连着3个字符,以次类推(这可以用第归做,比较省代码).看是去出几个字符才有的,和整个A的长度除,得出相似度
‘拾’ sql有字符串相似度的函数吗
相似度有很多定义,可以写自定义函数,sql server 还能用
CLR
【 ChinaKing (青春大概相似) 中提到: 】
: SQL里有没有字符串相似的函数?
: 类似于php里面的 similar_text()
: 就是给两个字符串 得到相似度