这是为了自动化测试过程。我有两个字符串数组(从两个不同的源中提取以进行测试)。其中一个数组中的每个字符串都必须分配给另一个数组中的字符串。字符串可能并不总是完全匹配,但可能存在可以使用的类似字符串(最佳匹配)。如果方差程度(基于百分比???)太多,则可以适当标记该项目。
我需要的是一种搜索BEST字符串的算法,如果没有,则拒绝相同的字符串。
答案 0 :(得分:2)
no gold standard (“BEST”)字符串比较算法。基于各种假设,存在许多字符串similarity algorithms。相似性度量采用两个字符串并返回一个数字,表示字符串的相似程度。
使用相似性度量,您可以比较给定字符串与数组中所有字符串的相等程度。相似性是一个数字,您可以轻松地选择具有最佳匹配的字符串,甚至当给定字符串和数组中的字符串不相同时。
还可以引入一个截止阈值,例如,如果没有字符串与 类似,到您的算法可以检测到的给定字符串。
一种流行的相似性度量是Levenshtein distance,其中计算从一个字符串到另一个字符串的字符更改,添加和删除的数量。
可以在c#中轻松计算levenshtein距离,例如参见代码示例link。
答案 1 :(得分:1)
http://php.net/manual/en/function.levenshtein.php
我认为第一个例子应该让你正确地走上正轨。它适用于PHP,但算法应该是您正在寻找的算法。
答案 2 :(得分:0)
您可以将字符串拆分为字符bigrams,为每个字符串生成一个bigram计数向量。然后可以将矢量与例如cosine similarity或类似的量度进行比较。密切相关的是仅使用存在的一组双字母集,将集合与Jaccard index进行比较。
这种方法基于存在的双字母的统计数据,忽略了双字母的排序。根据琴弦的性质,这可能是一个优点或缺点。