javascript - 通过单词检查两个文本的相似度?

标签 javascript html

我想按单词检查两个字符串的相似度。

我尝试使用 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/

相关文章:

Javascript条件

javascript - 搜索 UI 自动完成输入

javascript - jquery 在页面加载时设置 href 链接

html - 如何使两个div居中符合CSS?

javascript - 一个html页面中的多个js文件

JavaScript/JQuery 垃圾收集和事件

javascript - 将复杂的二维数组合并为一个

javascript - 如何使用 moment.js 查找日期、月份和年份

javascript - 如何使用 JavaScript 检测网页中的登录表单?

c# - 如何选择类别为 "foo"的 td ?