2009-10-01 9 views
7

Sono uno studente che sta effettuando uno studio per migliorare l'algoritmo esistente di un motore di ricerca.Come valutare un motore di ricerca?

Voglio sapere come posso valutare il motore di ricerca, che ho migliorato, per quantificare quanto è stato migliorato l'algoritmo.

Come devo fare per confrontare il vecchio e il nuovo algoritmo?

Grazie

+2

Bene, che cosa hai inventato finora? –

+12

Se non puoi confrontare, come fai a sapere che hai già migliorato? O_o –

+3

hai migliorato il motore di ricerca? Non far sapere a google .... –

risposta

11

Questo è normalmente fatto creando una suite di test di domande e quindi valutando quanto bene la risposta di ricerca risponde a tali domande. In alcuni casi le risposte dovrebbero essere non ambigue (se si digita slashdot in un motore di ricerca si prevede di ottenere slashdot.org come hit principale), quindi è possibile considerarle come una classe di query complesse con risposte 'corrette'.

La maggior parte delle altre query sono intrinsecamente soggettive. Per ridurre al minimo la distorsione dovresti chiedere a più utenti di provare il tuo motore di ricerca e valutare i risultati per il confronto con l'originale. Ecco un esempio di un documento informatica che fa qualcosa di simile:

http://www.cs.uic.edu/~liub/searchEval/SearchEngineEvaluation.htm

Per quanto riguarda il confronto specifico degli algoritmi, anche se ovvio, ciò che si misura dipende da ciò che si è interessato a conoscere. Ad esempio, è possibile confrontare l'efficienza del calcolo, dell'utilizzo della memoria, dell'overhead della scansione o del tempo per restituire i risultati. Se si sta tentando di produrre un comportamento molto specifico, ad esempio eseguire ricerche specialistiche (ad esempio una ricerca bibliografica) per determinati parametri, è necessario testarlo esplicitamente.

Anche l'euristica per rilevanza è un utile controllo. Ad esempio, quando qualcuno utilizza termini di ricerca che sono probabilmente "correlati alla programmazione", tendi a ottenere più risultati da stackoverflow.com? I tuoi risultati di ricerca sarebbero migliori se lo facessi? Se fornisci una serie di ponderazioni del trust per siti o domini specifici (ad esempio, i domini .edu o .ac.uk più attendibili per i risultati tecnici), devi testare l'efficacia di tali ponderazioni.

2

Al fine di valutare qualcosa, è necessario definire ciò che vi aspettate da esso. Questo aiuterà a definire come misurarlo.
Quindi, sarete in grado di misurare il miglioramento.

Per quanto riguarda un motore di ricerca, suppongo che potresti essere in grado di misurare la sua idoneità a trovare le cose, la sua precisione nel restituire ciò che è rilevante.

È una sfida interessante.

+0

Grazie, hai un pensiero logico, sono d'accordo con te e penso che ci siano alcuni metodi per valutare i motori di ricerca misurando il falso positivo e il falso negativo ma non ho trovato nessuno, proverò a cercare di più, grazie – ahmed

0

Devi identificare chiaramente le qualità positive e negative, ad esempio la velocità con cui ottieni la risposta che stanno cercando o quante risposte "sbagliate" ottengono durante il percorso. È un miglioramento se la risposta giusta è la 5 ma i risultati vengono restituiti 20 volte più velocemente? Cose del genere saranno diverse per ogni applicazione. La risposta corretta potrebbe essere più importante in una ricerca della knowledge base aziendale, ma potrebbe essere necessaria una risposta veloce per un'applicazione di supporto telefonico.

Senza parametri, nessuna prova può essere considerata una vittoria.

2

Non penso che troverete una soluzione matematica finale se questo è il vostro obiettivo. Per valutare un determinato algoritmo, sono necessari standard e obiettivi che devono essere raggiunti.

  • Qual è la vostra linea di base da confrontare?
  • Cosa classifichi come "migliorato"?
  • Cosa consideri una "ricerca riuscita"?
  • Quanto è grande il tuo gruppo di prova?
  • Quali sono i tuoi test?

Ad esempio, se l'obiettivo è migliorare il processo di classificazione delle pagine, decidere se si sta valutando l'efficienza dell'algoritmo o la precisione. Giudicarne l'efficienza significa che è tempo di inserire il codice per un set di dati consistente e record e ottenere risultati. Dovresti quindi lavorare con il tuo algoritmo per migliorare il tempo.

Se il tuo obiettivo è migliorare la precisione, devi definire cosa è "inaccurato". Se cerchi "Cup", puoi solo dire che il primo sito fornito è il "migliore" se tu stesso puoi definire con precisione qual è la migliore risposta per "Cup".

Il mio suggerimento per voi sarebbe quello di restringere l'ambito dell'esperimento. Definisci una o due qualità di un motore di ricerca che ritieni debbano essere raffinate e lavori per migliorarle.

1

Nei commenti hai detto "Ho sentito parlare di un modo per misurare la qualità dei motori di ricerca contando quante volte un utente deve fare clic su un pulsante indietro prima di trovare il collegamento che desidera, ma io posso usare questa tecnica perché hai bisogno che gli utenti testino il tuo motore di ricerca e questo è un mal di testa in sé ". Bene, se metti il ​​motore sul web gratuitamente per alcuni giorni e fai pubblicità un po 'probabilmente avrai almeno un paio di dozzine di tentativi. Fornisci a questi utenti la versione vecchia o nuova a caso e misura quei clic.

Altra possibilità: supporre che Google sia per definizione perfetto e confrontare la tua risposta con alcune query. (Forse la somma della distanza dei tuoi primi dieci link verso le loro controparti di Google, ad esempio: se il tuo secondo link è il link twelveth di Google, la distanza è 10). Questa è un'enorme ipotesi, ma molto più facile da implementare.

10

In primo luogo, vorrei iniziare dicendo, complimenti a te per aver tentato di applicare metodi di ricerca tradizionali ai risultati dei motori di ricerca. Molti SEO hanno fatto questo prima di te, e generalmente mantengono tutto questo mentre condividere "incredibili risultati" di solito significa che non puoi più sfruttare o avere il sopravvento, ho detto che condividerò nel miglior modo possibile alcuni indicatori e cose da cercare .

  1. Identificare quale parte dell'algoritmo stai cercando di migliorare?

Diverse ricerche eseguono algoritmi diversi.

Ricerche

Per esempio in un termine ampio searc h, i motori tendono a restituire una serie di risultati. parte comune di tali risultati includono

  1. Newsfeed
  2. Prodotti
  3. Immagini
  4. Post sul blog
  5. Risultati locali (questo è basato su una ricerca Geo IP).

Quali di questi tipi di risultati vengono gettati nel mix possono variare in base alla parola.

Esempio:Gatti restituisce immagini di gatti e notizie, scarpe restituisce commerciale locale per le scarpe. (questo è basato sul mio IP a Chicago il 6 ottobre)

L'obiettivo nel restituire i risultati per un termine ampio è fornire un po 'di tutto per tutti in modo che tutti siano felici.

modificatori regionali

In generale ogni volta che un termine regionale è collegato a una ricerca, sarà modificare i risultati notevolmente. Se cerchi "Chicago web design" perché la parola Chicago è allegata, i risultati inizieranno con i primi 10 risultati regionali. (questi sono i riquadri sulla destra della mappa), dopo di 10 elenchi verranno visualizzati in generale "risultato moda".

I risultati nella "top ten locale" tendono a essere drasticamente diversi da quelli elencati in organico. Questo perché i risultati locali (da google maps) si basano su dati completamente diversi per il posizionamento.

Esempio: avere un numero di telefono sul proprio sito Web con il prefisso di Chicago aiuterà nei risultati locali ... ma NON nei risultati generali. Lo stesso con indirizzo, elenco di libri gialli e così via.

Risultati velocità

Attualmente (al 10/06/09) Google sta testando beta "caffeina" La caratteristica principale di questa build del motore è che restituisce i risultati in quasi la metà del tempo. Anche se non si può considerare Google essere lento ora ... accelerare un algoritmo è importante quando milioni di ricerche avvengono ogni ora.

Ridurre Spam annunci

Noi tutti abbiamo trovato sperimentato una ricerca che è stato crivellato con lo spam. La nuova versione di Google Caffeine http://www2.sandbox.google.com/ è un buon esempio. Negli ultimi 10+ una delle più grandi battaglie online è stata tra gli ottimizzatori dei motori di ricerca e i motori di ricerca. Il gioco di google (e altri motori) è altamente redditizio e ciò che Google passa la maggior parte del suo tempo a combattere.

Un buon esempio è ancora una volta la nuova versione di Google Caffeine. Finora la mia ricerca e anche pochi altri nel campo SEO stanno trovando questa la prima build in oltre 5 anni a mettere più peso sugli elementi Onsite (come parole chiave, link al sito interno, ecc.) Rispetto alle build precedenti. Prima di questo, ogni "release" sembrava favorire sempre più i link in entrata ... questo è il primo a fare un passo indietro verso il "contenuto".

Modi per testare un algoritmo.

  1. Confrontare due build dello stesso motore. Questo è attualmente possibile confrontando Caffeina (vedi link sopra o google, google caffeine) e l'attuale Google.

  2. Confrontare i risultati locali in diverse regioni.Prova a trovare termini di ricerca come il web design, che restituiscono risultati locali senza un modificatore di parole chiave locale. Quindi, usa un proxy (trovato tramite google) per cercare da varie posizioni. Dovrai assicurarti di conoscere la posizione dei proxy (trova un sito su google che indichi al tuo indirizzo IP il tuo codice postale geo IP o città). Quindi puoi vedere come diverse regioni restituiscono risultati diversi.

Attenzione ... non scegliere il termine fabbro ... e diffidare di tutti i termini che al ritorno risultato, hanno un sacco di liste di spam .. Google locale è abbastanza facile da spamming, soprattutto in mercati competitivi.

  1. Fare come indicato in una risposta precedente, confrontare quanti utenti di click-back richiedono per trovare un risultato. Dovresti sapere, al momento, che nessun motore importante usa "tassi di rimbalzo" come indicatori dell'accuratezza dei siti. Questo è PROBABILMENTE perché sarebbe FACILE far sembrare che il tuo risultato abbia una frequenza di rimbalzo nell'intervallo del 4-8% senza effettivamente averne uno così basso ... in altre parole sarebbe facile giocare.

  2. Tenere traccia di quante variazioni di ricerca gli utenti utilizzano in media per un determinato termine per trovare il risultato desiderato. Questo è un buon indicatore di quanto bene un motore sia in grado di indovinare il tipo di query (come menzionato in questa risposta).

** Disclaimer. Queste opinioni sono basate sulla mia esperienza nel settore dal 6 ottobre 2009. Una cosa su SEO e motori è che cambiano OGNI GIORNO. Google potrebbe rilasciare Caffeine domani, e questo cambierebbe molto ... detto questo, questo è il divertimento della ricerca SEO!

Acclamazioni

+0

+1! e la migliore risposta del premio della settimana va a ... –

+0

Grazie! Sono sempre felice di divagare sul SEO, anche se non sono un blogger SEO di alto profilo = P –

2

Informazioni scienziati usano comunemente precisione e richiamo come due misure concorrenti di qualità per un sistema di recupero delle informazioni (come un motore di ricerca).

Quindi potresti misurare le prestazioni del tuo motore di ricerca rispetto a quelle di Google, ad esempio, contando il numero di risultati pertinenti tra i primi 10 (chiama quella precisione) e il numero di pagine importanti per quella query che pensi che avrebbe dovuto essere tra i primi 10 ma non lo erano (chiama quel richiamo).

Avrai ancora bisogno di confrontare i risultati di ciascun motore di ricerca a mano su alcune serie di query, ma almeno avrai una metrica per valutarle. E anche il bilanciamento di questi due è importante: altrimenti è possibile ottenere banalmente una precisione perfetta non restituendo alcun risultato o un perfetto richiamo restituendo di conseguenza ogni pagina sul Web.

Il Wikipedia article on precision and recall è abbastanza buono (e definisce lo F-measure che tiene conto di entrambi).

+2

Io uso questi due per valutare un motore di ricerca su cui lavoro, e anche attraverso ndcg. ndcg ti dirà quanto bene hai ordinato i risultati che sono stati restituiti. Tra queste tre metriche si ha una vaga idea di chi sta facendo un buon motore di ricerca. – jshen

+0

[ndcg] (http://en.wikipedia.org/wiki/Discounted_cumulative_gain) indica guadagno cumulativo scontato normalizzato. DCG e misure correlate valutano l'utilità, o il valore _, di un documento in base alla sua posizione nell'elenco dei risultati. – Vladtn

0

Abbracciare il fatto che la qualità dei risultati di ricerca è in definitiva soggettiva. Dovresti avere più algoritmi di punteggio per il tuo confronto: quello vecchio, quello nuovo e alcuni gruppi di controllo (ad esempio punteggio per lunghezza URI o dimensione pagina o un concetto analogo intenzionalmente rotto). Ora scegli un sacco di domande che esercitano i tuoi algoritmi, diciamo un centinaio. Diciamo che finisci con 4 algoritmi totali. Crea una tabella 4x5, visualizzando i primi 5 risultati di una query su ciascun algoritmo. (Si potrebbe fare top ten, ma i primi cinque sono molto più importanti.) Assicurati di randomizzare quale algoritmo appare in ogni colonna. Quindi, fai cadere un umano davanti a questa cosa e fagli scegliere quale dei 4 set di risultati preferiscono. Ripeti l'intero set di query. Ripeti per quanti più umani riesci a sopportare. Questo dovrebbe darti un confronto equo basato sulle vincite totali per ogni algoritmo.

0

http://www.bingandgoogle.com/

Creare un app come questo che mette a confronto ed estrae i dati. Quindi esegui un test con 50 elementi diversi da cercare e poi confronta i risultati desiderati.

0

Ho dovuto testare professionalmente un motore di ricerca. Questo è quello che ho fatto.

La ricerca includeva logica fuzzy. L'utente digita in una pagina web "Kari Trigger" e il motore di ricerca recupera voci come "Gary Trager", "Trager, C", "Corey Trager", ecc., Ognuna con un punteggio da 0 a 100, in modo che Potrei classificarli da molto probabilmente a meno probabili.

In primo luogo, ho ri-architettato il codice in modo che possa essere eseguito rimosso dalla pagina Web, in modalità batch utilizzando un grande file di query di ricerca come input. Per ogni riga nel file di input, la modalità batch dovrebbe scrivere il risultato di ricerca in alto e il suo punteggio. Ho raccolto migliaia di query di ricerca effettive dal nostro sistema di produzione e le ho eseguite attraverso l'impostazione batch per stabilire una linea di base.

Da quel momento in poi, ogni volta che ho modificato la logica di ricerca, eseguivo nuovamente il batch e poi diffavo i nuovi risultati rispetto alla linea di base. Ho anche scritto degli strumenti per rendere più facile vedere le parti interessanti del diff. Ad esempio, non mi importava molto se la vecchia logica restituiva "Corey Trager" come 82 e la nuova logica lo restituiva come un 83, quindi i miei strumenti li filtrerebbero.

Non avrei potuto realizzare tanto con i casi di test manuali. Semplicemente non avrei avuto l'immaginazione e l'intuizione di aver creato buoni dati di test. I dati del mondo reale erano molto più ricchi.

Quindi, per ricapitolare:

1) Creare un meccanismo che consente di diff i risultati dell'esecuzione nuova logica contro i risultati della logica precedente. 2) Test con molti dati realistici.
3) Creare strumenti che aiutano a lavorare con il diff, filtrando il rumore, migliorando il segnale.

Problemi correlati