2016-04-01 17 views
0

Twitter'dan sanatçıları tespit etmeye çalışıyorum. Bu yüzden bir tweet'im var ve tweet'i belirtmek ve sanatçıyla belirteçle uyuşmak için Levenshtein mesafesini kullanan bir dizi sanatçıyla karşılaştırmak için natural for node'u kullanıyorum. Benim problemim, aslında her belirtecin sanatçı listesiyle karşılaştırılmasının ve tweet'in atıfta bulunulanla uyuşmasının mantığında zorluk yaşıyorum. Aşağıdaki örnek, sanatçı olarak Clean Bandit'i almalıdır. `Score` özelliğiyle diziEn düşük değeri ve ilişkili anahtarı JavaScript'te

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

Sıralama, daha sonra ilk eleman en düşük puanına sahip olacaktır. – Barmar

+0

teşekkürler @Barmar tam ihtiyacım olan şey! – user130316

cevap

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 

} 
İlgili konular