如何使用google diff match patch C#库计算相似度?
我使用google diff match补丁C#库。我想测量两个文本之间的相似性。 为此,我制作了以下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==完全不同) 你认为这是
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个问题()奇怪,非常奇怪。。。。