Pulizia di un set di dati di dati di una canzone - che tipo di problema è questo?

0

Ho una serie di dati sulle canzoni. Ogni voce è una riga di testo che include il nome dell'artista, il titolo del brano e un testo extra. Alcune voci sono solo "testo extra". Il mio obiettivo è risolvere il maggior numero possibile di voci sui brani su Spotify utilizzando la loro API Web.

La mia strategia finora è stata quella di cercare la voce tramite l'API - se non ci sono risultati, applicare una trasformazione come "rimuovere tutto il testo tra ()" e cercare di nuovo. Ho una lista di euristiche e ho avuto un ragionevole successo con questo, ma man mano che il codice diventa sempre più complicato, continuo a pensare che ci debba essere un modo più generico e coerente. Non so dove cercare: qualche suggerimento su cosa provare, argomenti da studiare, parole chiave su google?

    
posta Rob Lourens 05.11.2013 - 07:28
fonte

2 risposte

1

Non sono sicuro di quale lingua stai usando, ma creerei alcuni oggetti / funzioni che possono eseguire la trasformazione dei dati del brano. Passerei questi oggetti / funzioni a un consumatore di trasformazione. Il consumatore prende i testi, gli artisti, ecc. e scorre le funzioni di trasformazione, passando ogni volta nei testi, artista, ecc. e quindi interrogando l'api per una corrispondenza con i dati trasformati. Se la loro è una corrispondenza, l'operazione viene eseguita, altrimenti si verifica la successiva trasformazione e si verifica la query successiva. Mantienilo modulare.

    
risposta data 05.11.2013 - 07:43
fonte
1

Bene, il tuo algoritmo di base suona come questo (in C #, ma non importa):

bool DoFullSearch(List<Transformation> transformationList, SearchData originalData)
{
    foreach(var transformation in transformationList)
    {
        var transformedData = transformation.Apply(originalData);
        bool success=DoSingleSearch(transformedData);
        if(success)
            return true;
    }
    return false;
}

(La prima trasformazione nella lista potrebbe essere la trasformazione di "noop", semplicemente inviando i dati originali invariati).

IMHO che non è molto contorto - è piuttosto semplice. Ovviamente, la chiave qui è di fornire una classe Transformation con diverse sottoclassi, ciascuna per ogni possibile trasformazione, ciascuna delle quali sovrascrive il metodo Apply in un altro maniero.

    
risposta data 05.11.2013 - 07:57
fonte

Leggi altre domande sui tag