/**
* 计算字符串之间的编辑距离,反映其相似度
* @param str 待比较字符串
* @param strCmp 待比较字符串
* @return
*/
public static double editDistance (String str,String strCmp)
{
double result=0;
if((str!=null && strCmp!=null))
{
String strTemp=str;
String strLargeTemp=strCmp;
if(strTemp.length()>strCmp.length())
{
strTemp=strCmp;
strLargeTemp=str;
}
int[] tempInt=new int[strTemp.length()+1];
int[] resultInt=new int[strTemp.length()+1];
//initialize the array "tempInt"
for(int i=0;i<=strTemp.length();i++)
{
tempInt[i]=i;
resultInt[i]=i;
}
for(int j=1;j<=strLargeTemp.length();j++)
{
resultInt[0]=j;
for(int k=1;k<=strTemp.length();k++)
{
if(strTemp.charAt(k-1)==strLargeTemp.charAt(j-1))
resultInt[k]=tempInt[k-1];
else
{
int min=tempInt[k]<tempInt[k-1]? tempInt[k]:tempInt[k-1];
min=min<resultInt[k-1]? min:resultInt[k-1];
resultInt[k]=min+1;
}
}
for(int l=0;l<=strTemp.length();l++)
{
tempInt[l]=resultInt[l];
}
}
if(strLargeTemp.length()!=0)
result=(double)(resultInt[strTemp.length()])/(strLargeTemp.length());
if(resultInt[strTemp.length()]==strLargeTemp.length()-strTemp.length())
{
result=-result;
}
}
return result;
}
/**
* 计算两个字符串的最长公共子序列
* @param str
* @param strCmp
* @return
*/
public static double longestSubstring(String str,String strCmp)
{
double result=0;
if((str!=null && strCmp!=null))
{
str=sortString(str);
strCmp=sortString(strCmp);
String strTemp=str;
String strLargeTemp=strCmp;
if(strTemp.length()>strCmp.length())
{
strTemp=strCmp;
strLargeTemp=str;
}
int[] tempInt=new int[strTemp.length()+1];
int[] resultInt=new int[strTemp.length()+1];
//initialize the array "tempInt"
for(int i=0;i<=strTemp.length();i++)
tempInt[i]=0;
for(int j=1;j<=strLargeTemp.length();j++)
{
resultInt[0]=0;
for(int k=1;k<=strTemp.length();k++)
{
if(strTemp.charAt(k-1)==strLargeTemp.charAt(j-1))
resultInt[k]=tempInt[k-1]+1;
else
{
resultInt[k]=tempInt[k]>resultInt[k-1]? tempInt[k]:resultInt[k-1];
}
}
for(int l=0;l<=strTemp.length();l++)
{
tempInt[l]=resultInt[l];
}
}
if(strLargeTemp.length()!=0 && strTemp.length()!=0)
{
double biZhi=(double)(strLargeTemp.length())/strTemp.length();
double divisor=Math.pow(strTemp.length(),2)*(2-Math.pow(2, (1-biZhi)));
divisor=Math.sqrt(divisor);
result=((double)(resultInt[strTemp.length()]))/divisor;
}
}
return (result);
}
/**
* 字符串排序(包含中文字符)
* @param str
* @return
*/
public static String sortString(String str)
{
if (str==null)
return "";
StringBuilder strTemp=new StringBuilder("");
int i=0,j=0;
int length=str.length();
int temp=0;
int[] arrayTemp=new int[length];
for(i=0;i<length;i++)
{
arrayTemp[i]=str.codePointAt(i);
}
for (i=0;i<length;i++)
{
for(j=0;j<length-1-i;j++)
{
if(arrayTemp[j]>arrayTemp[j+1])
{
temp=arrayTemp[j];
arrayTemp[j]=arrayTemp[j+1];
arrayTemp[j+1]=temp;
}
}
}
for(i=0;i<length;i++)
{
strTemp.appendCodePoint(arrayTemp[i]);
}
return strTemp.toString();
}
分享到:
相关推荐
余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值, 来评估他们的相似度。 余弦相似度将向量根据坐标值,绘制到向量空间中,如常见的二维空间。 余弦相似度衡量的是2个向量间的夹角大小,通过夹角的...
这些图像将用于对比相似度。 新建控制台应用程序: 在Visual Studio中新建控制台应用程序,并在代码中引用Emgu.CV库。 引入Emgu.CV和System.IO库 读取需要对比的两张图像 将两张图像转换为灰度图像以简化计算 使用...
毕业设计:python文本相似度计算系统(源码 + 数据库 + 说明文档) 第二章 可行性分析 7 2.1 业务流程可行性分析 7 2.2 经济可行性 7 2.3 技术可行性 8 2.4 运行可行性 8 第三章 需求分析 8 3.1 文本相似度的应用 8 ...
1、要利用已训练过的词向量模型进行词语相似度计算,实验中采用的词向量模型已事先通过训练获取的。 2、于数据采用的是 2020 年特殊年份的数据,“疫情”是主要 话题。 3、在计算词语之间的相似度时,采用的词语与...
中文匹配2条句子,相似度越高句子越趋同!通过分词器分词后比较更符合实际运用情况。 可用,直接下载运行。C#中文文本匹配,字符串匹配,中文词语匹配,计算2个句子相似度 中文匹配C#中文文本匹配,字符串匹配,中文...
Java之词义相似度计算(语义识别、词语情感趋势、词林相似度、拼音相似度、概念相似度、字面相似度)
公司名称相似度计算,公司名称相似度计算公司名称相似度计算公司名称相似度计算
在基于实例的机器翻译中,词语相似度计算是一个重要的环节。不过,由于《知网》中对于一个词的语义采用的是一种多维的知识表示形式,这给词语相似度的计算带来了麻烦。这一点与WordNet和《同义词词林》不同。在...
本实验实现了 5 种词汇相似度的计算方法并在 WordSimilarity-353数据集上进行了评价。 基于语义词典(WordNet)的词汇相似度计算 基于 WordNet 的词汇相似度计算结果 基于 Bing 查询结果的词汇相似度计算 基于 Bing ...
一个实现不同字符串相似度和距离度量的库。目前实现了十几种算法(包括 Levenshtein 编辑距离和兄弟、Jaro-Winkler、最长公共子序列、余弦相似度等)。查看下面的汇总表以获取完整列表... python字符串相似度 下载 ...
易语言快速计算文本相似度源码,快速计算文本相似度,取文本相似度,GetMaxLenSubStr,GetCharList,max
论文研究-兼顾形状-距离的正态云模型综合相似度测算.pdf, 研究了正态云模型相似度的测算方法.提出了正态云模型的形状相似度和距离相似度概念,建立了云模型综合相似度...
余弦相似度算法
采用TF余弦算法,对于word内容进行相似度的比较,并且对于图片也有相似度的比较,显示结果,按照相似度进行降序排序,展示出来相似度最高的2篇
元相似度即相似度的相似度,与相似度相比元相似度是基于相似度矩阵而不是相关矩阵计算得出的。即使是在相关矩阵中未购买过任何相同商品的两个用户也可以用元相似度反映他们之间的相似关系,这样在一定程度上解决了冷...
我们提出了一种基于层次图的相似度度量(HGSM,hierarchical-graph based similarity measurement)框架地理信息系统一致地建模每个个体并对个体的轨迹进行了有效的相似性度量。在这个框架中,我们同时考虑了人的运动...
Oracle字符相似度函数。在sql语句中直接用该函数来计算2个字符串相似度。
2)调用代码(参数60表示,相似度达到60%则算及格,程序将正整数,否则返回负整数) WAVECompare.WAVEObject objWAV = new WAVECompare.WAVEObject(); int _result = objWAV.ToCompare(60, @"E:\11.wav", @"E:\22....
AudioCompare 音频相似度比较,匹配上会返回匹配的数值
字符串相似度比较算法,可比较不同长度的任意两个字符串的相似度,以百分比显示。