我是靠谱客的博主 酷酷大山,最近开发中收集的这篇文章主要介绍C# Levenshtein计算字符串的相似度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

static void Main(string[] args)
{

Levenshtein(@"今天天气不错", @"今天的天气不错啊");
Console.Read();
}
/// <summary>
/// 字符串相似度计算
/// </summary>
/// <param name="str1"></param>
/// <param name="str2"></param>
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[i - 1] == str2[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);
}
}
Console.WriteLine("字符串"" + str1 + ""与"" + str2 + ""的比较");
//取数组右下角的值,同样不同位置代表不同字符串的比较

Console.WriteLine("差异步骤:" + dif[len1, len2]);
//计算相似度

float similarity = 1 - (float)dif[len1, len2] / Math.Max(str1.Length, str2.Length);
Console.WriteLine("相似度:" + similarity + " 越接近1越相似");
}
/// <summary>
/// 得到最小值
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
private static int min(params int[] num)
{
int min = Int32.MaxValue;
foreach (var n in num)
{
if (min > n)
{
min = n;
}
}
return min;
}

 

转载于:https://www.cnblogs.com/mahatmasmile/p/7765945.html

最后

以上就是酷酷大山为你收集整理的C# Levenshtein计算字符串的相似度的全部内容,希望文章能够帮你解决C# Levenshtein计算字符串的相似度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部