Bon, alors, tenez-vous. Plutôt que de faire dans le théorique, je vais tenter d'expliquer un cas pratique.
En fait, prenons le texte "Toto et deux de ses camarades".
Et "Toto et ses nombreux amis "
Il y à 8 mots différents, ce qui donne 8 dimensions possibles dans lesquelles le texte (= le vecteur) peut se déplacer (= se formuler):
[Toto, et, deux, de, ses, camarades, nombreux, amis].
Avec cette clef, on peut créer un vecteur d'après les occurrences des mots dans ses phrases:
Phrase 1 : [1, 1, 1, 1, 1, 1, 0, 0]
Phrase 2: [1, 1, 0, 0, 1, 0, 1, 1]
On nourris ça à la formule de pearson (une parmi d'autres, qui si je me souviens bien traite assez bien la comparaison de texte pour diverses raisons) qui va pondre un chiffre de -1 à 1. 1 signifie une correspondance exacte, 0 qu'il n'y à pas de comparaison, et -1 qu'ils sont diamétralement opposés. Ce qui donne une idée de leur "ressemblance".
En fait, on peut penser à notre espace tri-dimensionnel (x,y,z), dans lequel il est assez facile de calculer la distance entre deux points(genre (2,1,4) et (2,1,5) ). Sauf qu'ici, on utilise autant d'axes qu'il y à de mots, ce qui peut monter à plusieurs milliers quant on utilise un corpus un tant soit peu conséquent.
Maintenant, ça ne veut pas dire qu'ils sont proches, on peut presque tout interpréter. A un moment j'ai pensé analyser tout le contenu de phpfrance pour voir quels styles d'écritures étaient les plus proches (puisqu'on parle ici d'usage des mots). Mais ça donne une idée sur leur relative ressemblance, que ce soit parce qu'ils parlent du même sujet, sont écrit dans le même style,ou sont aussi creux l'un que l'autre
En tout cas, je faisais ça sur des dizaines de milliers de texte, donc oui, ça pouvait prendre du temps
Et sinon, on peut calculer la distance (on parle pas ici de distance géométrique ou euclidienne, mais d'une distance plus abstraite) entre deux mots avec la fonction levenshtein() de php, qui compte le nombre de permutations de lettres qu'il faut pour partir d'un mot pour arriver à un autre.