Javascript - Получить процент сходства между массивом из нескольких строк с использованием алгоритма Левенштейна - PullRequest
1 голос
/ 06 мая 2020

Мне нужно получить процент или оценку, чтобы представить, насколько вероятно, что массив строк описывает один и тот же объект.

Моя попытка придумать идею ниже, я уверен, что есть лучший способ, поэтому я обращаюсь к вам, умные люди.

var levenshtein = require('fast-levenshtein');

var items = [
   'Michael Jordan - NBA - Chicago Bulls',
   'Michael J - Chicago',
   'Michael Jordan - NBA',
   'Michael Jordan - NBA - Chicago',
];

function getPercentageOfCertainty(items) {

    var firstItem = items[0]
    var totalItems = items.length;

    var percentagePoints = items.reduce(function(memo, item) {

        var distance = levenshtein.get(item, firstItem, { useCollator: true})
        memo += distance;

        return memo;
    }, 0)

    return (totalItems * 100) - percentagePoints;

}


var percentage = getPercentageOfCertainty(items);
//0.8, 80% or some other way to score the similarity

Мои мысли вычислить сходство каждой строки с первой строкой в ​​наборе, затем либо получить среднее значение, либо сложить все оценки вместе и разделить на общее количество элементов.

...