Расстояние между словами с использованием техники НЛП - PullRequest
0 голосов
/ 25 октября 2018

Дан набор слов, таких как {Берлин, БЕРЛИН, БЕРЛИН, БЕРЛИН, берлин, берлин, берлин}.Для некоторого условия я должен рассматривать эти слова как есть (не может измениться на единый регистр)Я должен выбрать один.Есть ли какое-либо решение, использующее НЛП, которое может помочь мне достичь этого, например, выбрать такое, которое соответствует наиболее остальному большинству.

Спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете сделать это, используя коэффициент Соренсена – Дайса.

коэффициент коэффициента = ((2 * | X∩Y |) / (| X | + | Y |))

где,| X |& | Y |кардинальности двух множеств,| X∩Y |число общих элементов в обоих наборах

Коэффициент варьируется от 0 до 1, где 1 очень похоже, а 0 наименее похоже.

Поскольку вам нужно, чтобы набор был чувствительным к регистру:замените символы в наборе на любые символы.(ПРИМЕЧАНИЕ: использование значений ascii можетрадикально изменить показатель точности).Я бы порекомендовал кодироватьсимволы как разные символы для сохранения точности.

например:b = '!', e = '@', r = '#', l = '$', i = '%', n = '^',B = '&', E = '*', R = '(', L = ')', I = '?', N = '{'

код: -

var oldSet = ['Berlin' , 'BERLIN' , 'BERlin', 'BeRlin','berlin','berliN' , 'berLIN'];
var newSet = ['&@#$%^', '&*()?{', "&*($%^", "&@($%^", "!@#$%^", "!@#$%{", "!@#)?{"];

var ratio= [];

for(var i=0; i<newSet.length-1; i++) {
    for(var j=i+1; j<newSet.length; j++) {
        var cof= getCoefficient(newSet[i], newSet[j], getIntersection(newSet[i], newSet[j]));
        print("\n\n" + oldSet[i] + "====" + oldSet[j] + "===>" + cof);
        ratio.push(cof);        
    }
    print("\n");      
}

//This function will return coeffiecient between 0 to 1
function getCoefficient(x, y, commonCnt) {
    return ((2*commonCnt) / (x + y));
}

вывод: -

    Berlin====BERLIN===>0.16666666666666666


    Berlin====BERlin===>0.6666666666666666


    Berlin====BeRlin===>0.8333333333333334


    Berlin====berlin===>0.8333333333333334


    Berlin====berliN===>0.6666666666666666


    Berlin====berLIN===>0.3333333333333333




    BERLIN====BERlin===>0.5


    BERLIN====BeRlin===>0.3333333333333333


    BERLIN====berlin===>0


    BERLIN====berliN===>0.16666666666666666


    BERLIN====berLIN===>0.5




    BERlin====BeRlin===>0.8333333333333334


    BERlin====berlin===>0.5


    BERlin====berliN===>0.3333333333333333


    BERlin====berLIN===>0




    BeRlin====berlin===>0.6666666666666666


    BeRlin====berliN===>0.5


    BeRlin====berLIN===>0.16666666666666666




    berlin====berliN===>0.8333333333333334


    berlin====berLIN===>0.5




    berliN====berLIN===>0.6666666666666666
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...