如何计算C#中两个字符串之间的相似度?

use*_*616 0 .net c# string similarity

我想评估两个字符串之间的相似性(包括大小写),并给出0到1之间的值.

我尝试了Levenshtein距离实现,但它只给出了整数,并没有比较内部字母.

例如,比较"ABCD"和"Abcd"给出距离3和"AOOO"也给出3的距离,但显然"Abcd"比"AOOO"更好地匹配.

因此,与"ABCD"相比,我希望"ABcd"与"Abcd"最相似,然后是"AOOO",然后是"AOOOO"

我也看过这里,但我不是在寻找可变长度算法.

谢谢

Oli*_*bes 5

尝试这样的事情

double d = (LevenshteinDist(s, t) + LevenshteinDist(s.ToLower(), t.ToLower())) /
           2.0 * Math.Max(s.Length, t.Length);
Run Code Online (Sandbox Code Playgroud)

如果您希望对案例差异的重视程度低于字母差异,则可以对条款赋予不同的权重

double d = (0.15*LevenshteinDist(s, t) + 
            0.35*LevenshteinDist(s.ToLower(), t.ToLower())) /
           Math.Max(s.Length, t.Length);
Run Code Online (Sandbox Code Playgroud)

请注意,权重总计为0.5,因此将除法分为2.0已过时.