【问题标题】:How to calculate similarity with google-diff-match-patch C# library?如何计算与 google-diff-match-patch C# 库的相似度?
【发布时间】:2013-09-30 08:29:50
【问题描述】:

我使用 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 == 完全不同)。

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

【问题讨论】:

    标签: c# string similarity


    【解决方案1】:

    我在API home page 上查看了diff_levenshtein,它给出了这个描述

    给定一个差异,用数字测量它的 Levenshtein 距离 插入、删除或替换的字符。最小距离 为 0 表示相等,最大距离是 更长的字符串。

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

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

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

    我唯一的评论是原始算法使用 0 来表示完美匹配,而您使用的是 100,这可能会造成混淆。如果您对此感到满意,请让您为未来的维护者适当地评论它。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多