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
});
}
}
Sortieren der Array durch die 'score' Eigenschaft, dann das erste Element die niedrigste Punktzahl haben. – Barmar
danke @Barmar genau was ich brauchte! – user130316