Ciao a tutti,
dopo aver atteso un pochino per gli algoritmi e la logica di funzionamento eccovela spiegata qui sotto.
Il motore funziona contemporaneamente con due algoritmi, proprio per evideniziare le differenze di posizioni in base all'algoritmo adottato.
1)
Algoritmo a pesi semplici
Questo algoritmo è molto semplice. Viene attribuito un peso ad ogni termine (d'ora in poi lo chiamiamo
keyword) contenuto nel documento, valorizzando le keyword in modo diverso a seconda della posizione in cui si trovano, ovvero:
Se la keyword è contenuta nel title allora gli si attribuisce un valore di 3
Se la keyword è contenuta nel h1 allora gli si attribuisce un valore di 2
Se la keyword è contenuta nel corpo della pagina allora gli si attribuisce un valore di 1
Il peso totale per la keyword è dato da:
num_ric_title*3 + num_ric_h1*2 + num_ric_body
dove per num_ric_title si intende in numero di volte (ricorrenze) che la keyword è trovata nel titolo.
ESEMPIO PRATICO:
Vogliamo calcolare il peso della keyword "SEO" contenuta in una pagina.
Riscontriamo che nel titolo compare 1 volta, 1 volta nel h1 e 5 volte nel corpo della pagina il peso calcolato è:
1*3 + 1*2 + 5 = 10
La keyword "SEO" nel documento analizzato ha come peso 10.
2) Algoritmo Tf*IDF (Term Frequency * Inverse Document Frequency)
Questo algoritmo è leggermente più complesso, ma la sua logica è facile da capire.
Questo algoritmo vuole premiare con un peso maggiore le keyword che nel documento sono più di frequente (Tf) e nello stesso tempo fà un controllo su tutti i documenti indicizzati per attribuire un peso minore alle keyword che compaiono in molti documenti, e un peso maggiore alle key più rare, questo perchè se una key è presente in tutti i documenti è meno interessante un esempio di key presenti in quasi tutit i documenti sono "il un la" ecc. (IDF)
Tf*IDF è in realtà una combinazione di due algoritmo moltiplicati tra di loro, scomponiamoli per un attimo per capire meglio la loro logica.
- Term Frequency: il Tf esprime la frequenza in cui una key è presente all'interno del documento in esame, si calcola prendendo il numero delle volte che compare la key del documento dividendolo per il numero di tutti i termini contenuti nel documento.
Tf= ni / T
Dove Tf è la Term frequency, ni è il numero di volte che la keyword i compare, T è il totale dei termini contenuti.
Attenzione, esiste anche il Term frequency normalizzato ma per ora non lo trattiamo.
- Inverse Document Frequency: è simile al precedente ma calcola in quanti documenti è presente una data keyword e ne attribuisce un peso tanto maggiore quanto è meno diffusa la keyword. La formula è la seguente:
IDF= Log(D/ndi)
Dove D è il numero totale di documenti indicizzati, ndi è il numero dei documenti che contengono la keyword "i" presa in esame, il logaritmo viene usato vari motivi tra cui il seguente.
Qualora il termine sia contenuto in tutti i documenti, con una semplice divisione si avrebbe un risultato di 1, ma se è contenuta in tutti i documenti non è per nulla significante, infatti facendo il logaritmo di 1 il risultato è 0. Cosa che dal punto di vista nostro è il risultato ottimale (non è significativa la key il suo peso è 0).
CONCLUDENDO
la formula per calcolare un peso w tramite l'algoritmo Tf*IDF è:
w = ni / T * Log(D/ndi)
Spero di essere stato abbastanza chiaro, postate qualsiasi domanda.