0

Ich versuche, Künstler von Twitter zu identifizieren. Also habe ich einen Tweet und ich benutze die natural for node, um den Tweet zu tokenisieren und ihn mit einer Reihe von Künstlern zu vergleichen, die Levenshtein-Distanz benutzen, um das Token mit den Künstlern zu vergleichen. Mein Problem ist, dass ich Schwierigkeiten in der Logik habe, jeden Token tatsächlich mit der Liste der Künstler zu vergleichen und den zu vergleichen, auf den sich der Tweet bezieht.Niedrigster Wert und der zugehörige Schlüssel in JavaScript

Das folgende Beispiel sollte Clean Bandit als den Künstler erhalten.

var saturday = ["Kanye West", "Pharrell Williams", "Paloma Faith", "Burt Bacharach", "Clean Bandit"]; 

var tweet = "My queen @graciechatto about to go on The Other Stage at Glastonbury #cleanbandit #glastonbury…" 

tokenizer = new natural.WordTokenizer(); //new tokeniser 

var tweetTokenised = tokenizer.tokenize(tweet); //tokenise the tweet and store it in tweetTokenised 

var i , j; 

//loop through tokenised tweet  
for(i=0;i<tweetTokenised.length;i++){ 
    console.log(tweetTokenised[i] + "--------------------------"); 
    var temp = []; 

    //compare token with list of artists performing on saturday  
    for(j=0;j<saturday.length;j++){ 

     //remove whitespace from the tweet tokens 
     console.log(tweetTokenised[i]+ "--->"+saturday[j]); //testing purposes 
     var score = natural.LevenshteinDistance(tweetTokenised[i].replace(/\s+/g, '').toLowerCase(),saturday[j].toLowerCase()); 

     //store score for each token vs artists in a temp dictionary 
     temp.push({ 
      key: saturday[j], 
      value: score 
     }); 
    } 
} 
+0

Sortieren der Array durch die 'score' Eigenschaft, dann das erste Element die niedrigste Punktzahl haben. – Barmar

+0

danke @Barmar genau was ich brauchte! – user130316

Antwort

0
 //sort array from lowest to biggest 

     temp.sort(function(a, b) { 

      return parseFloat(a.value) - parseFloat(b.value); 

     }); 





     //console.log(temp); 

     //get the first object (the smallest in this instance as its been sorted) 

     lowest = temp.shift(); 

     console.log(lowest); 

     if(lowest.value < 2){ 

      distances.push(lowest); 

     } 

    } 

    console.log("printing distances"); 

    console.log(distances[0].key); //get artist name 

} 
Verwandte Themen