我想按单词检查两个字符串的相似度。
我尝试使用 php.jsimilar_text:
http://phpjs.org/functions/similar_text/
但它会逐个字母地检查相似度,例如,如果我检查“ddda”与“addd”的相似度,它将返回 100%
我想要一个逐字检查的函数,以便“Hello World”对照“Hello”检查将返回 50%
最佳答案
我不明白你所说的相似性到底是什么意思,但你可以试试这个:
var a = "hello world", b = "hello 123"
function similarity(a,b) {
// splitting and sorting arrays (for easier and faster search)
var arrayA = a.split(/\W/g).sort(),
arrayB = b.split(/\W/g).sort(),
result = 0
// loop through a
for (var i=0,imax=arrayA.length;i<imax;i++)
// for every word find amount of occurences in text b
result += arrayB.reduce(function(a,b){
return a + (arrayA[i] == b?1:0)
},0)
// change here to your understanding of similarity
return result/imax * 100
}
alert(similarity(a,b) + "%")
JS Bin - 点击右上角的编辑
您可能希望使用一些重复检查器或其他任何东西来增强它,但这是您可以用于进一步实现的基础
关于javascript - 通过单词检查两个文本的相似度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329766/