• Moderatore

    @Bodhisattva said:

    Mi servirebbe un parere autorevole (il vostro) per quanto riguarda la "pesatura" delle varie componenti di una pagina web. Uno degli algoritmi implementati (BM25F per chi fosse interessato) necessita di sapere quanto "sono importanti" le varie parti una pagina.
    Non so quanto si possa considerare "autorevole" la mia opinione, ma ecco il mio contributo

    TITLE 40%
    BODY 25%
    URL 15%
    H1 10%
    H2 5%
    ALT 5%
    Description 0%

    La meta-descrizione è volutamente a zero: Google ha più volte rimarcato di non utilizzarlo come fattore di ranking (e studi indipendenti - per quanto opinabili - sembrano confermarlo).
    ALT e titoli vari sono spesso abusati ho l'impressione Google ne abbia di conseguenza ridotto il peso relativo.


  • Moderatore

    @Bodhisattva said:

    Per chi volesse ulteriori dettagli (che richiedono una qualche competenza matematica) c'è un articolo (che non posso linkare in pubblico, in caso chiedete in privato) sul sito della City University di Londra, in cui c'è una trattazione completa e chiara del background probabilistico su cui si basa la formulazione di BM25 e della sua recente evoluzione BM25F, pensata per il Web. Io ho implementato una variante leggermente diversa da quella presentata qui, ho introdotto una funzione di saturazione anche per la query e ho "ritarato" quella del documento. Sul finale dell'articolo c'è anche una lista di motori di ricerca opensource che implementano questi algoritmi (per lo più il BM25). A mio modesto parere è la fonte più chiara e completa sull'argomento reperibile in rete.
    Sono interessato

    P.S.. so che Lucene ha implementato BM25 per il suo full-text search


  • User

    (come mi fa giustamente notare Federico il documento in questione è banalmente linkato su wikipedia...io non ci avevo fatto caso, lo avevo raggiunto in altri modi. Se non lo posto è perché per i nuovi utenti è contrario alle regole del forum, non è questione di riservatezza : D)


  • Moderatore

    Puoi sempre mettere il link in maniera inattiva, cioè senza http e senza www.

    Ciao
    Enea


  • Moderatore

    Shhhh :lipssealed: ...ecco il link al "documento segreto":

    "The Probabilistic Relevance Framework: BM25 and Beyond"
    http://www.soi.city.ac.uk/~ser/papers/foundations_bm25_review.pdf


  • User

    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:

    1. abbiamo utilizzato solo query di ricerca che non totalizzassero più di 350k risultati circa, quindi query non competitive.
    2. 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.
    3. 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.
    4. abbiamo escluso le pagine di cui google modifica il title pubblicato in serp.
    5. abbiamo escluso le pagine con testo volutamente non visibile.
    6. 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.


  • Moderatore

    Ciao R.
    e grazie per continuare a condividere con noi il tuo lavoro.

    Mie prime osservazioni:

    La stima della dimensione del web indicizzato basato sul numerino riportato in alto a sinistra nelle SERP ho il sospetto sia ben poco affidabile. Il numerino è notoriamente inutile (e mi spiace per il tesista Olandese) per valori di ordine di grandezza superiore alle centinaia. Il ché non esclude il valore massimo possa invece essere più indicativo, ma non ci scommetterei.
    Carina la ricerca con operatori, mi ricorda simili esperimenti di Enrico Altavilla dove E. riuscì se ben ricordo a mandare il crash il server di Google con l'uso di operatori *

    In passato il blog di MajesticSEO aveva pubblicato delle stime di dimensione dell'indice di Google nel paragonare il proprio indice con quello di altri operatori, purtroppo a una prima ricerca non l'ho trovato, ed è un valore immagino tenda a crescere continuamente (e l'Olandese avrebbe dovuto insospettirsi del fatto i numero di G decrescessero nel tempo).
    Sospetto per i tuoi scopi un numero molto grande valga come un'altro più o meno dello stesso ordine di grandezza.

    L'articolo di "mea culpa" del matematico di Moz l'ho cercato senza successo nel corso dell'ultimo mese (lo attribuivo a Pete erroneamente).
    Grazie, mi ha permesso di seguire link e contatti interessanti.

    Sui tuoi risultati: prima di suonare la fanfara è meglio aspettare di avere volumi più ricchi di dati e prove, tuttavia sono molto lieto di quanto scrivi.
    Attendo con entusiasmo gli sviluppi.

    Buone feste!


  • User

    Ciao Federico, grazie a te per l'usuale feedback.
    Hai perfettamente ragione sia sull'attendibilità del numerino fornito da google (scarsa) sia sulla precisione richiesta per i nostri scopi. Tanto più che quel numero finisce in un logaritmo che "ammazza" tutto quello che è superiore a 100. Al limite potrebbe risultare influente per query le cui parole sono molto comuni. Comunque spulcerò il blog che mi hai segnalato in cerca dei loro riscontri.
    Per quanto riguarda i risultati ottenuti so bene che questo è solo l'inizio e mi aspetto docce fredde in un futuro prossimo, però so che ci sono anche margini di miglioramento. Già riuscire a chiudere un algoritmo con correlazione 0.4 o 0.5 (sempre al netto di fattori esterni) sarebbe davvero notevole. Per adesso ho intenzione di godermi ancora per un po' l'entusiasmo attuale : D

    ps: se dovessi fare prima tu a trovare quelle informazioni da majesticseo ti sarei grato se me le girassi.


  • Moderatore

    Ciao Bodhisattva,

    @Federico Sasso said:

    In passato il blog di MajesticSEO aveva pubblicato delle stime di dimensione dell'indice di Google nel paragonare il proprio indice con quello di altri operatori, purtroppo a una prima ricerca non l'ho trovato...

    @Bodhisattva said:

    ps: se dovessi fare prima tu a trovare quelle informazioni da majesticseo ti sarei grato se me le girassi.

    M'è capitato questo articolo sott'occhi, vi è un paragone della dimensione degli indici dei vari fornitori di link intelligence, e di Google ("60 trillion of URLs in Google?s index").
    Purtroppo non cita le fonti.

    Spero d'esserti stato utile


  • User

    Ciao Federico, avevo letto anche io cose del genere, in realtà l'argomento è un po' delicato perché bisogna capire bene se intendiamo pagine indicizzate o url. A me interessano le pagine, perché una pagina può essere associata a infiniti url. E 60 trillion (60mila miliardi) se fosse riferito a pagine singole sarebbe un po' troppo...In ogni caso avevi visto giusto qualche post fa, col senno di poi ai fini del calcolo considerare 30 miliardi di pagine o 60 o 100 non incide sul ranking. Sembra che qualsiasi numero "abbastanza grande" anche se l'algoritmo ovviamente sputa score diversi, restituisca lo stesso ranking. Grazie comunque per l'aiuto, qualsiasi informazione è preziosa e molto apprezzata.

    Rob


  • User Attivo

    E poi? 🙂


  • User Attivo

    Salve ragazzi, purtroppo non ho momentaneamente il tempo di leggere tutti gli interventi ma da quello che ho letto reputo l'esperimento davvero interessante. Quindi per prima cosa chiedo a Bodhisattva c'è la possibilità di vedere una beta del tool in qualche modo?
    Poi , nonostante non siamo a conoscenza degli ingredienti e della ricetta degli algoritmi di Google , credo che in qualche modo se ci si dividesse in Team si potrebbe anche pensare di sviluppare una parte del tool in cui ci si basa anche sui fattori off-site e poi cercare di combinare entrambi i fattori provando a dare vari pesi ai 2 aspetti per avere un ranking score.
    Per quanto mi riguarda sono molto interessato al progetto e mi piacerebbe in qualche modo poter partecipare , principalmente mi occupo di programmazione e sono laureando in Informatica presso l'Università degli Studi di Palermo.
    Spero vivamente di poter partecipare al progetto e che tutti assieme possiamo arrivare a qualcosa di concreto, nonostante non potremmo mai pensare di arrivare alla torta di Big G.


  • User Attivo

    credo che il lavoro svolto da Bodhisattva tenga già conto dei fattori off-site...

    poi mi viene in mente una cosa Bodhisattva, dici di confrontare i risultati tramite il coef. di correlazione di Spearman, ma da quanto mi ricordo non è un metro attendibile della vicinanza dei risultati (non sono un matematico, ricordo solo un vecchio esame di statistica all'università... molti anni fa 🙂 )


  • User Attivo

    Mmm non conosco il coefficiente utilizzato. Potrei chiedere di avere un sunto di ciò che è stato realizzato perora ?


  • User

    Salve a tutti. Dopo una lunga assenza torno a scrivere e ahimè, non porto buone notizie. Purtroppo il progetto in questione è fermo all'ultima volta che ho scritto qui. Da allora sono seguite una serie di vicende sia personali che professionali più o meno spiacevoli che mi hanno portato lontano dall'argomento del thread. Di fatto la realtà societaria in cui si inseriva questo progetto ha avuto difficoltà insormontabili e oggi in sostanza non esiste più.

    Per un certo periodo una società di ricerca di Roma che si occupa di intelligenza artificiale si era interessata a questa idea e stavamo per raggiungere un accordo ma anche qui non se ne è fatto nulla.
    Ad oggi resta solo l'idea: "capire come fa Google a valutare i fattori interni per il posizionamento". Credo ancora che sia un problema approcciabile e anche risolvibile, oggi tra l'altro possiedo competenze che un anno fa non avevo in ambito di machine learning e non nego che il tarlo di provare a smanettare un po' per vedere di farne qualcosa in quest'ambito mi è rimasto; ma come ho detto oggi sarebbe a scopo puramente ludico.

    Non ho ancora chiaro quali saranno gli sviluppi, né quanto mi dedicherò alla cosa, in ogni caso vedrò di postare aggiornamenti di tanto in tanto 🙂
    Per quanto riguarda i fattori esterni non credo sia facile venirne a capo; nei test che avevo fatto ne avevo tenuto conto nella misura in cui li avevo esclusi...ossia avevo fatto i test per chiavi di ricerca non competitive e per pagine che avevano ottenuto il posizionamento in larga parte grazie all'ottimizzazione interna. Onestamente al momento non saprei come muovermi per valutarli; sono talmente tanti e credo anche difficilmente "misurabili"; per non parlare della reperibilità dei dati.

    Per quanto riguarda il coefficiente di Spearman è corretto quello che è stato detto; cioè non si accorge della "vicinanza" dei risultati ma solo del loro ordine. Valutando i risultati con questo parametro e considerando solo pagine con pochissimi link in ingresso (per escludere i fattori esterni appunto) l'algoritmo che avevo implementato aveva raggiunto su qualche centinaio di pagine di test una correlazione molto alta, mi pare attorno a 0.85. Per molte query riproduceva esattamente la serp di Google.

    Ripeto l'idea di rimetterci mano mi stuzzica ancora, ma come ho detto è un periodo un po' delicato e molte cose stanno cambiando in fretta, quindi non so dire se e quando questo avverrà.