我使用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 =完全不同)。
你认为这是一个好的方法,这个计算是正确的吗?
答案 0 :(得分:1)
我查看了API home page上的diff_levenshtein
,并提供了此说明
给定差异,以数量衡量其Levenshtein距离 插入,删除或替换字符。最小距离 是0表示相等,最大距离是长度 更长的字符串。
在下面一行中,您将所有距离(变化测量值)转换为原始字符串长度的百分比,然后将其从100减去。
double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);
所以,是的,这对我来说很好。
我唯一的评论是原始算法使用0表示完美匹配,而您使用100,这可能会令人困惑。如果您对此感到满意,请让您对未来的维护人员进行适当的评论。