用单词检查两个文本的相似度?

时间:2015-02-04 19:29:13

标签: javascript html

我想逐字检查两个字符串的相似性。

我尝试使用php.js similar_text:

http://phpjs.org/functions/similar_text/

但是它逐个字母地检查相似性,例如,如果我检查了" ddda"的相似性。反对"添加"它将返回100%

我想要一个逐字检查的功能,以便" Hello World"检查"您好"将返回50%

2 个答案:

答案 0 :(得分:3)

我不明白你的相似之处是什么意思,但你可以试试这个:

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 - 点击右上角的修改

或许,您希望使用一些重复检查器或其他任何内容来增强它,但这是您可以用于进一步实施的基础

答案 1 :(得分:0)

帖子很旧 但是如果你想检查单词相似度或文本相似性的片段,你可以使用显式的语义半文,你可以阅读关于https://www.jair.org/media/2669/live-2669-4346-jair.pdf

的论文

你可以在Linux上使用这个librabry,它使用起来非常简单 http://lukas.zilka.me/esalib/