|
|
|
|
Strumenti |
07-02-2010, 09:31 | #1 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
[C#]Ordinare alcune stringhe in base alla somiglianza con un altra
Salve a tutti! Credo si tratti di un argomento molto complicato e perciò spero che qualcuno più bravo di me abbia inventato qualche algoritmo o qualcosa di simile per risolvere il mio problema.
Dunque, come molti di voi sapranno, il software per la musica che sto continuando a fare deve poter cercare le informazioni delle canzoni su gracenote (database online contenente queste informazioni). Il software chiede al sitole informazioni su un brano. Esempio: per chiedere le informazioni su "i gotta feeling" dovrebbe caricare questa pagina: http://www.gracenote.com/search/?que...rch_type=track . Ora il problema è la pagina contiene molti risultati e il mio software deve sceglierne uno. Già, ma come? Se non ho altre informazioni sulla canzone risolvo scegliendo il primo risultato. Se invece, ad esempio, ho anche le informazioni contenenti il nome dell'artista può sorgere il problema. Già, perchè se il nome dell'artista è corretto posso confrontarlo con i nomi artista della pagina html di gracenote e risolvo, ma se questo è sbagliato e quindi inestistente (magari perchè scritto male come ad esempio back eyed peas al posto di black eyed peas, o perchè manca una parola, o perchè magari un utente ssenza sapere l'inglese ha scritto ledi gaga al psto di lady gaga) io devo confrontarlo con tutti gli altri nomi degli artisti presenti nella pagina html di gracenote. Ma come scelgo quello giusto? Un'idea un po' sporca, ma neppure tanto, sarebbe quella di cercare su gracenote l'artista in modo tale che se digitato sbagliato gracenote stesso dovrebbe restituire il risultato più simile. Saluti e grazie a tutti |
07-02-2010, 10:49 | #2 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22459
|
forse è come utilizzare una testana nucleare per pulire casa, ma credo che reti neurali e memorie associative siano quello che cerchi
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
07-02-2010, 11:26 | #3 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
beh forse si ma non sono in grado di usarle...
mmm forsde posso usare la distanza di Jaro-Winkler.. |
07-02-2010, 11:38 | #4 |
Senior Member
Iscritto dal: Aug 2002
Messaggi: 4371
|
Ti serve una funzionalità stile "Did you mean" come su Google.
In PHP esiste la funzione levenshtein per calcolare la "distanza" tra due parole, suppongo esista qualcosa di simile anche per C#. |
07-02-2010, 14:44 | #5 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
sulla rivista io programmo c'è un articolo che spiega il funzionamento della distanza di Jaro-Winkler che viene usata dai correttori ortografici.. Magari potrei riutilizzarla, certo è che visto che non distribuirò questo programma ma che servirà quasi solo a me non voglio fare cose troppo difficili
|
07-02-2010, 16:35 | #6 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Non puoi fare sia la ricerca per nome che quella per artista, e prendere il primo risultato comune ad entrambe?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:52.