如何计算与google-diff-match-patch C#库的相似度?

时间:2013-09-30 08:29:50

标签: c# string similarity

我使用google-diff-match-patch C#库。我想测量两个文本之间的相似性。 为此,我制作了这个C#代码:

List<DiffMatchPatch.Diff> lDiffs = dmpDiff.diff_main(sTexte1, sTexte2);
int iIndex = dmpDiff.diff_levenshtein(lDiffs);
double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);

相似度值介于0 - 100之间(0 =完美匹配 - 100 =完全不同)。

你认为这是一个好的方法,这个计算是正确的吗?

1 个答案:

答案 0 :(得分:1)

我查看了API home page上的diff_levenshtein,并提供了此说明

  

给定差异,以数量衡量其Levenshtein距离   插入,删除或替换字符。最小距离   是0表示相等,最大距离是长度   更长的字符串。

在下面一行中,您将所有距离(变化测量值)转换为原始字符串长度的百分比,然后将其从100减去。

double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);

所以,是的,这对我来说很好。

我唯一的评论是原始算法使用0表示完美匹配,而您使用100,这可能会令人困惑。如果您对此感到满意,请让您对未来的维护人员进行适当的评论。