Comment comparer des documents ?
Sommaire
Comparaison de documents, de quoi parle-t-on ?
De nombreuses applications nécessitent de pouvoir comparer des documents entre eux, par exemple pour corriger un document, détecter du plagiat, constituer une mémoire de traduction, faire de la recherche d’information, lutter contre les fake news ou encore évaluer un logiciel de traduction.
Les techniques employées diffèrent selon les besoins et la taille des documents. On trouve parmi ces techniques le calcul de la distance d’édition, les modèles probabilistes et la comparaison par espace vectoriel.
La distance d’édition
Il n’est pas rare qu’une erreur typographique se glisse dans la requête d’utilisateur sur un moteur de recherche : caractère oublié, incertitude sur l’orthographe… La distance d’édition permet de retourner des résultats en comparant la requête avec les termes effectivement présents dans l’index du moteur de recherche. Cette distance d’édition est également utilisée pour des applications telles que la correction orthographique ou pour certaines mesures de qualité en traduction automatique, qui consistent à comparer le document produit par la machine avec une version standard rédigée par un traducteur.
Comment calculer une distance d’édition
La distance d’édition consiste à compter le nombre minimum d’opérations nécessaires et suffisantes pour passer d’une chaîne de caractères à une autre. Ces opérations sont :
- l’élision : un caractère est effacé (exmple)
- l’insertion : un caractère est ajouté (exeemple).
- la substitution : un caractère est remplacé (example).
Ainsi par exemple, la distance d’édition entre les chaînes modela et demotal est de 5:
- insertion de deux caractères d et e (+ 2) pour passer de modela à demodela
- substitution de t à la place de d (+ 1) et de a à a place de e (+ 1) pour passer de demodela à demotala
- suppression de a (+ 1) pour passer de demotala à demotal
Comparer des textes, la méthode vectorielle
Les méthodes vectorielles consistent à construire un espace vectoriel dont chaque mot des textes est un vecteur, puis de positionner le texte dans cet espace afin de calculer des distances vectorielles entre textes. On parle ainsi de vectorisation des textes.
Ce type de technique est notamment utilisé en recherche d’information.
Comment construire un espace vectoriel pour la comparaison de textes
Une méthode consiste, dans un premier, à compter les mots dans les différents textes du corpus.
Le positionnement des documents dans cet espace vectoriel repose sur deux facteurs qui traduisent quelques intuitions simples :
- plus un terme est fréquent dans un document, plus il est probable que ce document concerne le concept correspondant à ce terme,
- plus un terme est fréquent dans l’ensemble du corpus, moins il est discriminant pour la recherche d’information.
Techniquement, ces principes se traduisent par deux facteurs :
- la fréquence d’apparition du terme dans le document considéré
- la fréquence d’apparition du terme dans l’ensemble du corpus.
Afin de mettre en équation, on écrit
- tf (text frequency) pour la fréquence d’apparition dans le document considéré.
- tf = fréquence du terme dans le document / nombre de mots dans le document
- IdF (Invert document frequency) pour la fréquence d’apparition dans l’ensemble du corpus
- Idf = log(nombre de documents / nombre de documents contenant le terme au moins une fois)
Le positionnement d’un document dans cet espace vectoriel consiste à calculer tf*idf pour chaque vecteur-mot.
La recherche d’information par comparaison de documents consiste alors à positionner la requête dans cet espace vectoriel et de trouver les documents les plus proches mathématiquement.
Vectorisation à l’aide de plongements lexicaux
Il est également possible d’obtenir cette représentation vectorielle à partir des techniques d’apprentissage à base de réseaux de neurones. Historiquement, on distingue les « word embeddings » (en français plongements lexicaux) qui permettent d’associer un vecteur à un mot, les vecteurs ayant pour propriété d’être d’autant plus proches que leur sens est proche. En cumulant l’ensemble des vecteurs, on obtient une représentation vectorielle du texte. Des approches plus récentes (comme BERT) permettent d’obtenir un vecteur à partir d’une séquence de mots (souvent des phrase) et ainsi d’obtenir une mesure de similarité sémantique entre deux textes, même s’ils n’emploient pas les mêmes mots.
Les mémoires de traduction
Les mémoires de traduction fonctionne en comparant le texte à traduire avec les textes déjà traduits. Cette comparaison nécessite la construction d’une base de données issue de l’analyse des documents traduits. Vous trouverez plus d’information sur la page dédiée aux outils de traduction.
Études de cas associés
Je suis responsable commercial du service de ventes en ligne pour une entreprise de vente de produits sportifs, et dans le cadre du processus de gestion de nos leads, je souhaite disposer d'une solution pour aider les commerciaux de mon équipe à qualifier automatiquement les leads et à les classer en fonction de leur profil ou de leurs intentions d'achat.
Je suis responsable RH et je m'occupe actuellement du recrutement dans le cadre de l'extension de nos équipes. Nous avons identifié, en accord avec la GPEC et les besoins des managers, un certain nombre de postes pour lesquels nous souhaitons embaucher les meilleurs candidats. Après avoir formalisé les missions et compétences requises dans des fiches de postes, rédigé les offres d'emploi et diffusé ces dernières en ligne, mon service a reçu des centaines de candidatures pour chaque poste. Ces candidatures sont stockées dans la base de données de notre SIRH, et pour chaque offre publiée, j'ai accès en un clic à l'ensemble des CVs que j'ai reçus. Pour éviter à mon équipe de lire toutes les candidatures, je souhaite dans un premier temps identifier dans la masse de CVs ceux qui sont pertinents pour chaque poste afin de ne transmettre qu'une poignée de candidatures qualifiées aux managers qui sont demandeurs du recrutement. Comment faire pour évaluer automatiquement si un CV est pertinent pour un poste ?
Je suis responsable de la pharmacovigilance au sein d'une structure publique de veille sanitaire. Je souhaite pouvoir exploiter plus largement les sources d'information sur les effets des traitements et garantir une certaine objectivité des analyses à partir des textes libres : l'analyse linguistique automatisée répond-elle à ces objectifs et comment ?
Comme éditeur ou responsable de médias, je dois traiter le risque de plagiat, c'est à dire : lutter contre l'exploitation abusive du contenu de mes publications, mais aussi me prémunir du risque que mes publications tombent sous le coup d'accusations de plagiat.
Enseignant dans l'enseignement supérieur, je dois vérifier que les copies de mes étudiants ne contiennent pas d'extraits traduits d'articles scientifiques disponibles en ligne.
Je suis directeur de la publication d'un journal d'information généraliste. A l'heure des médias sociaux, tout le monde ou presque peut publier de l'information visible de toute la planète. Cette formidable opportunité est hélas une aubaine pour les rumeurs voire la désinformation délibérée. Ne pas se faire le relais des infox est un devoir des médias désormais inscrit dans la loi. Débusquer et dénoncer la désinformation n'est pas une obligation légale mais un objectif éthique pour les médias.
Je suis responsable de la communication pour une ONG dans un domaine où l'information au public est essentielle et controversée et où le lobbying est très actif. Je dois repérer quotidiennement les informations diffusées et relayées sur les réseaux sociaux et dans la presse afin d'ajuster ma stratégie de communication. Existe-t-il des solutions de fact checking pour lutter contre la diffusion des infox (fake news) ?