use*_*616 0 .net c# string similarity
我想评估两个字符串之间的相似性(包括大小写),并给出0到1之间的值.
我尝试了Levenshtein距离实现,但它只给出了整数,并没有比较内部字母.
例如,比较"ABCD"和"Abcd"给出距离3和"AOOO"也给出3的距离,但显然"Abcd"比"AOOO"更好地匹配.
因此,与"ABCD"相比,我希望"ABcd"与"Abcd"最相似,然后是"AOOO",然后是"AOOOO"
我也看过这里,但我不是在寻找可变长度算法.
谢谢
尝试这样的事情
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已过时.
| 归档时间: |
|
| 查看次数: |
1861 次 |
| 最近记录: |