10

Есть ли способ рассчитать% соответствия между двумя строками?есть ли способ вычислить% соответствия между двумя строками

У меня есть ситуация, когда требуется вычислить матчи между 2 строкой, если есть 85%

матч, то я совместит 2 таблицы, я написал код для объединения 2 таблицы

моего образца строки:

var str1 = 'i love javascript'; 
var str2 = 'i love javascripttt'; 

var matchPer = match(str1,str2); // result might be 80% , 85%, 90% ,95% etc 
+3

Что ваша логика для вычисления процента? –

+5

Существует не просто * * путь, есть * много способов. Есть ли у вас какие-либо рекомендации по его выбору? Что означает «85% соответствия» для вас? – hobbs

+8

'1 - levenshtein (str1, str2)/max (str1.length, str2.length)' кажется для меня разумной метрикой, но вам может понадобиться Дамерау-Левенштейн (который считает разницу между «беконом» и «баком») 1 вместо 2), или расстояние Хэмминга, как в ответе Алы Эддине JEBALI, который неумолимо дополняет и удаляет («бананы» и «ананы» имеют расстояние Левенштейна 1, но расстояние Хэмминга - 6. Они 14% аналогичный или 86% подобный?) – hobbs

ответ

10

Нечто подобное?

var str1 = 'i love javascript'; 
 
var str2 = 'i love javascripttt'; 
 

 
function match(str1, str2){ 
 
    var tmpValue = 0; 
 
    var minLength = str1.length; 
 
\t if(str1.length > str2.length){ 
 
\t \t var minLength = str2.length; 
 
\t } \t 
 
    var maxLength = str1.length; 
 
\t if(str1.length < str2.length){ 
 
\t \t var maxLength = str2.length; 
 
\t } 
 
    for(var i = 0; i < minLength; i++) { 
 
     if(str1[i] == str2[i]) { 
 
      tmpValue++; 
 
     } 
 
    } 
 
    var weight = tmpValue/maxLength; 
 
    return (weight * 100) + "%"; 
 
} 
 

 
var matchPer = match(str1,str2); 
 
console.log(matchPer); //outputs: 89.47% 
 
console.log(match("aaaaa", "aaaaa")); //outputs: 100% 
 
console.log(match("aaaaa", "aXaaa")); //outputs: 80% 
 
console.log(match("aaaaa", "aXXaa")); //outputs: 60% 
 
console.log(match("aaaaa", "aXXXa")); //outputs: 40% 
 
console.log(match("aaaaa", "aXXXX")); //outputs: 20%

+13

Пожалуйста, exoplain, что это такое; не присваивайте код дампа. –

+3

Это https://en.wikipedia.org/wiki/Simple_matching_coefficient – JollyJoker

 Смежные вопросы

  • Нет связанных вопросов^_^