如何使用google diff match patch C#库计算相似度?

如何使用google diff match patch C#库计算相似度?,c#,string,similarity,C#,String,Similarity,我使用google diff match补丁C#库。我想测量两个文本之间的相似性。 为此,我制作了以下C代码: List lDiffs=dmpDiff.diff_main(sTexte1,sTexte2); int iIndex=dmpDiff.diff_levenshtein(ldiff); 双D相似性=100-((双)iIndex/数学最大值(sTexte1.Length,sTexte2.Length)*100); 相似度值在0-100之间(0==完全匹配-100==完全不同) 你认为这是

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

List lDiffs=dmpDiff.diff_main(sTexte1,sTexte2);
int iIndex=dmpDiff.diff_levenshtein(ldiff);
双D相似性=100-((双)iIndex/数学最大值(sTexte1.Length,sTexte2.Length)*100);
相似度值在0-100之间(0==完全匹配-100==完全不同)


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

我已经看过了上的
diff\u levenshtein
,它给出了这个描述

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

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

double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);
所以,是的,我觉得这很好


我唯一的意见是,原始算法使用0表示完美匹配,而您使用的是100,这可能会令人困惑。如果您对此没有意见,请对其进行适当的注释,以供将来的维护人员使用。

我已经查看了上的
diff\u levenshtein
,并给出了此说明

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

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

double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);
所以,是的,我觉得这很好


我唯一的意见是,原始算法使用0表示完美匹配,而您使用的是100,这可能会令人困惑。如果您对此没有意见,请对其进行适当的评论,以供将来的维护人员参考。

我很好。我做了恰当的评论。詹姆斯,我的朋友。用词“considéré”和“appécié”
iIndex=11
然后
dsimilarity=-22.22
。应该取绝对值吗?如果你得到的
d相似性
为-22.22,那么你的
Math.Max(sTexte1.Length,sTexte2.Length)
9
。根据文档,这是不可能的(您不应该得到等于或小于字符串长度的距离)。我认为问题在于重音字符。还有一个MSQL问题仍然存在,还有一个类似的问题。你可能想考虑为它提供一个赏金或问你自己。我在google diff match patch google group()上发布了一个回复,关于这个问题有87个问题()奇怪,非常奇怪……我没事。我做了恰当的评论。詹姆斯,我的朋友。用词“considéré”和“appécié”
iIndex=11
然后
dsimilarity=-22.22
。应该取绝对值吗?如果你得到的
d相似性
为-22.22,那么你的
Math.Max(sTexte1.Length,sTexte2.Length)
9
。根据文档,这是不可能的(您不应该得到等于或小于字符串长度的距离)。我认为问题在于重音字符。还有一个MSQL问题仍然存在,还有一个类似的问题。你可能想考虑为它提供一个赏金或问你自己。我在google diff match patch google group()上发布了一个回复,关于这个问题有87个问题()奇怪,非常奇怪。。。。