J'ai une grande base de documents, livres. Il y a un moteur de recherche dessus ainsi qu'un ensemble de facilités de navigation genre bookmark, etc.
Mais j'aimerais adjoindre des "plus". Par exemple proposer aux lecteurs les documents "semblables" à celui qu'il est en train de lire.
Comment donc déterminer, parmi tous les documents, les plus "semblables" à un document donné?
Une recherche via google ne me donne rien de concret (autre que de la théorie).
Dans une première approche intuitive, peut-être simpliste, je me proposais d'établir un vecteur binaire de chaque document où chaque bit correspond à un mot existant (donc chaque document aurait son vecteur de 100000 bits s'il y a 100000 mots au total dans l'ensemble des documents). Ensuite on comparerait les vecteurs de chaque document deux à deux (en faisant un "ET" binaire) pour déterminer les plus proches (après comptage des bits étant restés à "1" suite au "ET").
J'y vois déjà plusieurs inconvénients.
-Aucune pondération sur la quantité des mots dans chaque document, ni sur leur position relative;
-temps d'execution d'ordre N² pour déterminer, pour chaque document, les documents qui lui sont les plus proches (même si c'est précalculé, avec 1 million de documents se sera long...);
-le résultat est quantitatif, pas nécessairement qualitatif. Par exemple, imaginons que deux documents seulement parlent de la comète de Haley. Il serait dommage que ces documents ne soient pas "proches" l'un de l'autre. Une pondération sur certaines expressions, termes ou mots serait bienvenue.
En reprenant les idées de base que j'ai pu trouver dans les "théories", il faudrait donner une "empreinte" à chaque document, empreinte qui serait un vecteur de valeurs. Ce vecteur permettrait de placer le document dans un espace à dimension réduite (deux idéalement). Ensuite on obtiendrait les documents les plus proches en cherchant ceux qui se trouvent à "proximité" dans l'espace à dimension réduite via un calcul de "distance".
Voilà, voilà, merci pour vos idées et vos lumières
Partager