因为我需要测试一些文本以检查duplicate content的SEO目的。
对于它我有2个文本(在2个字符串S1和S2中),我需要确定2个字符串之间的相似性百分比。 我的第一个代码是OK,它用
确定%(nbr of common words in S1 & S2)/100x(nbr of words in the shorter string in S1 & S2).
但我不确定这是一个好的算法。
您是否有分享代码示例的经验?
答案 0 :(得分:2)
您要做的是找到两个字符串的相似性百分比。
那里的一些算法已经解决了这个完全相同的问题。 我一直在使用:
我在delphi中快速搜索代码源。
我找到了Lenvenshtein in delphi
Lenvenshtein算法试图找到它可以回滚到原始字符串的“有多少更改”。
NGramDistance通过拆分来比较单词。
所以用Lenvenshtein的字符串
“abc def | klm mno”将被视为非常不同而不是“klm mn | abc def”
但NGramDistance会将它们视为100%相似。
所以它取决于你是否想要考虑字符串的顺序。
我找不到NGramDistance的任何源代码。但是你可以把它从Java翻译成Delpi。
java中的源代码来自Lucene,一个开源搜索软件。他们实施了更多String metric算法结帐in this package