【发布时间】:2012-03-28 06:33:03
【问题描述】:
我希望评估两个字符串之间的相似性(包括大小写)并给出一个介于 0 和 1 之间的值。
我尝试了 Levenshtein 距离实现,但它只给出整数,不比较内部字母。
例如比较“ABCD”和“Abcd”给出的距离为 3,而“AOOO”也给出了 3 的距离,但显然“Abcd”比“AOOO”更匹配。
因此,与“ABCD”相比,我希望“ABcd”最相似,然后是“Abcd”,然后是“AOOO”,然后是“AOOOO”
我也看过here,但我不是在寻找可变长度算法。
谢谢
【问题讨论】:
-
尝试仅使用小写字符串的 Levensthein 距离?
-
那么,AOOOBCD 是否比 Abcd 更匹配?我怀疑你的“更好”的概念不会很好地支撑住火。您可能希望最好的办法是按照一些任意规则对它们进行排名(例如,首先按 Levenstein,其次按案例更改的数量等)并向用户显示一个列表,该用户的相似概念可能与您的概念不匹配。
-
@IraBaxter 不,“Abcd”将比“AOOOBCD”更匹配
-
这不是一个真正的编程(实现)问题。这是一个设计问题——设计一个合适的相似函数。
标签: c# .net string similarity