Mi avanzano solo un paio di sigarette e a birra sono messo peggio pertanto faro' un riassunto, bypasso la parte teorica per proporre direttamente quella pratica.
Prendiamo un foglio elettronico e lavoriamo su una matrice di una data dimensione, per esempio 100-200 colonne per 20.000 righe.
Immettiamo in ogni cella una funzione che produca un numero random, per esempio da 1 a 90.000 (90.000 rappresenterebbe il numero di tutte le parole in uso per una data lingua, per esempio italiano).
Ora ipotizziamo che quella matrice rappresenti un sito (se la matrice sara' di 100*10.000 avremo un ipotetico sito di 1.000.000 di parole.)
Per semplificare il concetto ora faremo finta di avere a che fare con un sito di 10.000 pagine di 100 parole ognuna, ed ogni riga rappresentera' una nosta pagina, ogni cella numerica una parola del dizionario italiano.
Il resto e' semplice. A questo punto potremo facilmente creare tutte le correlazioni che vogliamo tra i vari numeri, le varie parole.
I motori praticamente fanno la stessa cosa con la differenza che leggono realmente ed analizzano frase per frase tutto il web.
Facciamo finta di essere un motore, e come prima cosa assegnamo i seguenti numeri al nostro personale dizionario:
il = 1
lo = 2
la = 3
i = 4
gli = 5
le = 6
ecc ecc
Adesso analizziamo la seguente frase: "Il cane rincorreva i gatti oltre lo steccato".
Avremo: "1,cane,rincorreva,4,gatti,oltre,2,steccato".
Tuttavia come premesso, noi ipotetico motore, avremo preventivamente assegnato ad ogni parola del nostro "ideale dizionario" un numero, per esempio:
cane = 15.125
rincorrere = 29.154
gatto = 57.100
oltre = 1.254
steccato = 65.500
A questo punto la nostra fase tradotta numericamente sara':
1 , 15.125 , 29.154 , 4 , 57.100 , 1.254 , 2 , 65.500
Ora facciamo le varie analisi-correlazioni prendendo atto che in questa prima frase:
1 ha prossimita' 0 rispetto 15.125
1 ha prossimita' 1 rispetto 29.154
1 ha prossimita' 2 rispetto 4
ecc ecc
15.125 ha prossimita' 0 rispetto 29.154
15.125 ha prossimita' 1 rispetto 4
ecc ecc
Insomma, numerando tutte le parole, leggendo tutte le righe delle pagine del web, creando schemi di prossimita' parola per parola, pagina per pagina, sito per sito ecc ecc e' facilissimo stabilire quando un link, una riga, una pagina e' in tema o meno, e' spam o non lo e', indifferentemente dalla lingua usata, basta confrontare i risultati con le medie nazionali, numero per numero.
Non mi addentro oltre, ma da questo semplice esempio potrete capire come la semantica, se basata su questo semplice schema, si risolve grazie al buon vecchio solito e stantio calcolo delle % e delle probabilita'. Nessun esperto di lingue, nessun esperto di semantica, solo un banale programmino che sostituisce ad ogni parola un numero prefissato e poi in base alla sequenza e/o alla % di questi numeri decide il da farsi. Si possono, a questo punto, fare mille ragionamenti e mille calcoli. Ma di fatto, man mano che ci si rende conto di quanto siano semplici questi algoritmi, non si capisce del tutto perche' ci siano cosi' pochi motori di ricerca "seri". Beh, provare per credere.
Differentemente a quanto molti credono non sono le idee che mancano, ma spiderizzare ed analizzare miliardi di pagine e' compito possibile solo a pochi grandi. Almeno adesso e' cosi'. Tuttavia man mano che passeranno gli anni le cose cambieranno, ed entro qualche anno, auspico e credo, chiunque di noi (dato i futuri bassi costi di linee ed hardware) sara' in grado di creare un propio motore competitivo.