Aggiornamento n.2
Dunque, l'algoritmo nella sua versione base è implementato e blandamente rodato. Si dimostra stabile e di buon umore. Sono già stati effettuati alcuni pochi test preliminari i cui risultati sono stati davvero molto incoraggianti...tanto che non ho resistito e sono venuto a postare. =_= Troverete i risultati dei test alla fine di questo post, ma andiamo con ordine:
Idea di base:
l'idea alla base di tutto come è già stato esposto sopra è che i fattori di posizionamento si dividano in modo netto in esterni ed interni e che le due parti non si influenzino a vicenda; ossia in altre parole che Google apprezzi o meno l'ottimizzazione di una pagina a prescindere dai fattori esterni come l'authority o il pagerank e che quindi ci si possa dedicare all'ottimizzazione dimenticandoci di quello che verrà dopo; prendendola come un qualcosa che va fatto, che non basterà per posizionarci per una chiave competitiva ma che aiuterà in modo sostanziale. Quindi lo scopo del gioco non è il posizionamento, lo scopo del gioco è la migliore ottimizzazione possibile in vista di un futuro posizionamento. Questi "assiomi" di base hanno definito l'ambiente di test nel modo in cui spiegherò dopo.
Su queste premesse la mia teoria è che google per quanto riguarda i fattori interni utilizzi algoritmi tutto sommato semplici e ben approssimabili da oggetti come il BM25; certo google ha dalla sua anche qualcosa di "semantico" ma credo come già esposto che questo serva solo per una prima scrematura e che poi la serp su questa scrematura sia data da algoritmi più semplici ma più diretti, come appunto il BM25.
Algoritmo:
si tratta nella sua struttura base del BM25F, la recente versione del "vecchio" Okapi BM25, considerato lo "state of the art" degli algoritmi basati sul modello vettoriale. La differenza sostanziale che lo distingue dagli algoritmi vettoriali classici è la scelta di una crescita asintotica al posto di quella lineare o logaritmica; può sembrare una modifica marginale ma di fatto non è così; le ragioni che portano a questa particolare scelta sono di natura probabilistica e hanno una loro motivazione teorica molto profonda e soprattutto molto corretta (dettagliatamente esposta nell'articolo postato poco sopra)...infatti nella letteratura il BM25 risulta molto più performante rispetto agli altri algoritmi del tipo Tf*Idf.
Quello che abbiamo fatto è stato prendere il modello base BM25F e strutturarlo per l'ambiente WWW, ecco su questo non esiste letteratura o se esiste è molto scarna.
Rough Tuning:
è stato effettuato un rough tuning dell'algoritmo che di suo è abbastanza robusto, ossia consente buone performance già con un tuning approssimativo. Per tuning si intende sostanzialmente fissare i parametri variabili dell'algoritmo che servono ad adattarlo ai vari contesti di utilizzo con lo scopo di incrementarne la performance. Ad esempio alcuni di questi parametri sono le lunghezze medie dei vari campi (title, url, h1, h2, ecc..) dei documenti nella collezione che si è deciso di indicizzare (in questo caso il web..) oppure le rilevanze dei suddetti campi. Per le seconde ci siamo largamente ispirati ai suggerimenti del buon Federico Sasso. Unico e apprezzatissimo supporter :° Per quanto riguarda le lunghezze è stato più complesso...stabilire la lunghezza media dei title nel web è folle. Così l'idea è stata; ok riduciamo il campo; facciamo che non ci interessa come ambiente il web ma solo la parte di web "ottimizzata", in fondo è con quella che dovremo competere; quindi facciamo che non ci interessa la media dei title generale ma solo la media dei title di quelle pagine che qualcuno con una certa esperienza ha redatto con fini di ottimizzazione. Quindi abbiamo raccolto qualche decina di pagine ottimizzate da seo noti (di cui una grandissima parte tra i moderatori di questo forum...) e abbiamo calcolato le suddette lunghezze; anche in questo modo le deviazioni standard sono state notevoli ma non ci interessa troppo la precisione in questa fase.
Altro parametro necessario è la dimensione della collezione di documenti presa in analisi.
A questo punto abbiamo stabilito che questa collezione è l'insieme delle pagine web "ottimizzate" presenti su internet. Ecco in questo caso purtroppo la follia sarebbe stimare questo numero così com'è...come si può calcolare quante pagine del web sono ottimizzate? Al contrario invece è fattibile fare delle stime sulle dimensioni del web in generale ed è questo che abbiamo calcolato.
<dettaglio tecnico>
Questa "contraddizione" nella scelta dei parametri, ossia scegliere in un caso le pagine ottimizzate e nell'altro le pagine in generale è stata attentamente valutata e carta e penna alla mano abbiamo dimostrato analiticamente che questa scelta non inficia la coerenza dell'algoritmo e che anzi non genera nessuna differenza, a patto che si accetti l'assunto di base secondo cui il fatto che una pagina sia o meno ottimizzata non dipende da quali parole contiene; ossia che scelte 2 qualsiasi parole distinte nel dizionario la probabilità che una pagina contente la prima sia ottimizzata è uguale alla probabilità che una pagina contente la seconda sia ottimizzata, questo per ogni coppia di parole distinte. E` una ipotesi abbastanza forte ma tutto sommato ragionevole, infatti si possono ottimizzare pagine su qualsiasi argomento e di fatto avviene.
</dettaglio tecnico>
Tornando al punto, come abbiamo calcolato le dimensioni del web? Ci sono varie fonti sull'argomento, una fra tutte è la pagina worldwidewebsizedotcom pagina tenuta da un tizio che sulla base delle ricerche nella sua tesi di dottorato utilizza metodi statistici per stimare le dimensioni dell'indice di google, attualmente le sue stime si attestano attorno a 15 miliardi di pagine uniche.
Al che però ho pensato, perché cavolo devo dare retta a questo qui quando lo posso chiedere direttamente a Google? Infatti utilizzando gli operatori di ricerca avanzati si può fare la seguente query
intext:"a OR e OR 一 OR i OR u OR o OR y"
in questo modo stiamo chiedendo a google di restituirci tutte le pagine che contengano nel loro testo (qualunque testo) ALMENO una vocale O il carattere 一 che è il più comune ideogramma cinese. Non è difficile intuire che questa richiesta è estremamente vicina alla richiesta "restituiscimi in serp TUTTE le pagine del tuo indice". Bene, mr.G con questa richiesta dice di avere indicizzate la sciocchezza di 25 miliardi e 270 milioni di pagine con queste caratteristiche. Modificando la query e ampliandola non c'è comunque verso di superare questo numero, Google non restituisce serp con più di 25.27*10^9 pagine. Siamo ben 10 miliardi sopra le stime del tizio, e non parliamo di stime qui, la fonte è direttamente google. Il che significa di fatto che purtroppo nonostante la buona volontà costui può prendere la tesi di dottorato e buttarla nel cesso. Credo che gli manderò una email di auguri con le buone notizie.
Test Effettuati:
Fissati i suddetti parametri abbiamo effettuato 4 o 5 test elementari per calcolare il coefficiente di correlazione di Spearman tra il nostro algoritmo e google al netto di fattori di posizionamento esterni.
<dettaglio tecnico>
Il coefficiente di correlazione di spearman non è altro che un numerino compreso tra -1 e 1 che in questo caso ci dice quanto il ranking che il nostro algoritmo fornisce sui documenti web è "vicino" al ranking fornito da google. Un coefficiente pari a 0 indica che tra i due non c'è nessuna correlazione e che quindi abbiamo perso tempo, un coefficiente pari a -1 indica che i due rankano al contrario ossia che le due serp prodotte sono l'una l'inversa dell'altra =_= un coefficiente pari a 1 è un jackpot. Se è 1 il nostro algoritmo fornisce esattamente lo stesso ranking di google.
</dettaglio tecnico>
4 o 5 prove sono un campione statistico misero e non sono nemmeno lontanamente sufficienti per avere dati pubblicabili, però forniscono delle indicazioni elementari e in questo caso sono stati molto incoraggianti.
Dunque per escludere i fattori di posizionamento esterni abbiamo utilizzato i seguenti parametri:
- abbiamo utilizzato solo query di ricerca che non totalizzassero più di 350k risultati circa, quindi query non competitive.
- abbiamo scelto pagine con una domain authority non superiore a 15 e una page authority non superiore a 25, creando di fatto una "serp virtuale" costituita solo da pagine quasi del tutto prive di backlinks in cui quindi l'ordinamento che google fornisce è dato solo dall'ottimizzazione.
- non abbiamo scelto pagine nell'ordine esatto fornito dalla serp di google ma abbiamo messo un po' di distanza tra l'una e l'altra al fine di smorzare un po' l'effetto di altri fattori imprevedibili (anzianità del sito, authorship e chissà che altro). Quindi abbiamo scelto saltando un po' di pagine tra l'una e l'altra.
- abbiamo escluso le pagine di cui google modifica il title pubblicato in serp.
- abbiamo escluso le pagine con testo volutamente non visibile.
- abbiamo messo insieme in questo modo 6 o 7 pagine per ogni query scelte andando non oltre circa la quinta pagina della serp.
Purtroppo è impossibile eliminare in modo esatto ogni segnale esterno, ad esempio una pagina con pochi backlinks ottimizzata in modo perfetto, se ha qualche backlink nocivo ce la ritroveremo bassa nel ranking di google nonostante rientri nei parametri che abbiamo scelto ma avendo una buona ottimizzazione invece risulterà alta nel nostro ranking falsando così i risultati. In ogni caso questo è il set che abbiamo usato.
Risultati Ottenuti:
premetto che stando a quanto ho trovato online la miglior correlazione trovata fino ad ora è stata quella dell'algoritmo LDA (latent dirichlet allocation) prodotta in uno studio di Ben Hendrickson, il matematico di seomoz. Il buon Ben ha messo insieme questo algoritmo e sull'onda dell'entusiasmo ha indetto una sorta di conferenza per dire a tutti che LDA produceva un coefficiente di correlazione con google pari a 0.32 (tutto è presente in questo articolo mozdotcom/blog/lda-and-googles-rankings-well-correlated ); un risultato notevolissimo se rapportato agli altri, salvo poi accorgersi che aveva sbagliato i calcoli e che il vero coefficiente era 0.17 un risultato comunque buono ma largamente ridimensionato.
A questo punto Ben ha passato un pessimo quarto d'ora e l'imbarazzo è abbastanza palese in quest'altro post di rettifica ( mozdotcom/blog/lda-correlation-017-not-032 ).
Vengo al punto, nei 5 test fatti da noi la correlazione trovata è stata in media superiore a 0.8, con una vetta di 0.94. In un singolo caso in cui abbiamo praticamente disatteso il protocollo di scelta delle pagine e abbiamo preso la serp in prima pagina para para ha totalizzato 0.6 che è comunque un risultato strepitoso (ci aspettavamo un crollo verticale vista la totale vicinanza tra le pagine esaminate e quindi l'influenza dei fattori esterni).
Ripeto, i test sono troppo pochi per trarre conclusioni ma questi numeri parlano da soli. Parrebbe che la mia teoria se non esatta quanto meno si muove nella giusta direzione.
Fine Tuning e Modifiche dell'Algoritmo:
Per fare il fine tuning di questo algoritmo occorre fare una serie di operazioni dell'ordine di 10^17. Serve un ampio database di pagine web. Serve tempo. Serve potenza di calcolo. servono algoritmi che ottimizzino i calcoli da fare. Sarà un lavoro lungo, ma col giusto tuning si possono incrementare ancora le prestazioni. Inoltre l'idea è quella di modificare strutturalmente BM25F e di introdurre un sistema di espansione della query, dei segnali relativi alla prossimità delle parole che premino la presenza di corrispondenze esatte della query e altre modifiche di questo tipo che lo rendano più "intelligente". Servirà del tempo ma se questi pochi semplici test preliminari sono anche solo vagamente rappresentativi del quadro generale, con questi miglioramenti contiamo di ottenere qualcosa di veramente spendibile in ambito SEO. Lo sarebbe già nella versione base. Sono fermamente convinto che sia possibilissimo alla fine chiudere un algoritmo che mimi il comportamento di Google per quanto riguarda i fattori interni.
Documentazione:
Non appena il nostro sito web sarà online (a meno di cambi nella politica di divulgazione) sarà online anche un tool che permetta già un utilizzo di base corredato con una documentazione completa. Stilerò un paper in cui saranno esposti tutti i dettagli.
Che dire, è un post molto lungo, spero che qualcuno abbia la pazienza di leggerlo. Aspetto vostri feedback. In ogni caso buone feste :**
R.