Articles

Locality Sensitive Hashing (LSH) – une solution évolutive pour dédupliquer des tâches à partir de plusieurs sources

Retour au sujet — pourquoi la déduplication est-elle importante ?

Nous utilisons un corpus massif d’offres d’emploi de Kalibrr combinées à des offres d’emploi extraites de diverses offres d’emploi publiques pour former notre modèle. Avoir plusieurs emplois dans notre corpus contenant des descriptions de travail similaires sera préjudiciable au modèle. Exemple de ce qui est montré dans l’image ci-dessous.

Different jobs with the same descriptions

Duplicate job descriptions associated to varying positions can affect the model’s performance in distinguishing context between different job titles. Depuis l’apprentissage profond, et en général l’apprentissage automatique, les modèles sont formés pour apprendre une fonction qui mappe un ensemble de fonctionnalités à des catégories ou optimise un objectif, avoir des entrées similaires mais associées à des cibles différentes aura certainement un impact sur la confiance et les performances du modèle.

Outre le problème de performance prédictive, la formation d’un modèle avec un grand corpus où la plupart des données sont des doublons consommera des ressources de calcul inutiles.

Ceci illustre comment la compréhension des données peut facilement influer sur les performances du modèle.

Tf-Idf – un algorithme de déduplication simple

La détection des doublons peut être effectuée de différentes manières. La représentation de documents dans des représentations vectorielles simples comme tf-idf peut être une méthode raisonnable pour découvrir des documents presque similaires. Cela peut être fait en comparant des métriques de similarité telles que la similarité cosinus ou euclidienne entre des vecteurs de document.

Nous montrons dans l’extrait suivant comment nous pouvons appliquer l’algorithme pour identifier des textes presque identiques.

Tf-Idf appliqué à la découverte de texte presque en double.

Bien que cette méthode fonctionne dans de petits corpus, elle est assez difficile à mettre à l’échelle en raison de la dimensionnalité résultante des vecteurs après transformation des documents. Notez également qu’il a fallu 319 ms pour que le script exécute tout le pipeline. C’est l’une des nombreuses manifestations de la « malédiction de la dimensionnalité » — une dimensionnalité élevée de la transformation affecte à la fois la complexité spatiale et temporelle de l’analyse.

Hachage Sensible à la localité (LSH) — la technique évolutive

Une solution à ce problème est le hachage sensible à la localité (LSH). La méthode LSH peut effectuer une analyse de quasi-similarité sur des ensembles de données massifs. Il utilise le hachage pour mapper des documents dans des compartiments dont la dimensionnalité est inférieure d’un ordre de grandeur à une transformation tf-idf équivalente. Cette propriété rend LSH pratique à utiliser dans des applications à grande échelle telles que l’exploration de texte.

LSH utilise l’algorithme de minhash pour calculer la probabilité de collision. Il a été démontré que la probabilité de collision en LSH en utilisant minhash est équivalente à la métrique de similarité de Jaccard. En bref, Jaccard similarity calcule l’intersection de deux ensembles divisés par l’union des éléments de chaque ensemble. Dont la formule est illustrée ci-dessous.

La similarité de Jaccard quantifie l’idée suivante : deux groupes ayant des éléments plus communs sont susceptibles d’être similaires.

Voici un extrait sur LSH selon wikipedia:

Le hachage sensible à la localité (LSH) réduit la dimensionnalité des données à haute dimension. LSH hache les éléments d’entrée de sorte que les éléments similaires correspondent aux mêmes « compartiments » avec une forte probabilité (le nombre de compartiments étant beaucoup plus petit que l’univers des éléments d’entrée possibles). LSH diffère des fonctions de hachage conventionnelles et cryptographiques car elle vise à maximiser la probabilité d’une « collision » pour des éléments similaires. Le hachage sensible à la localité a beaucoup en commun avec le regroupement de données et la recherche du voisin le plus proche.

LSH au travail

Nous montrons ci-dessous une implémentation de LSH, en utilisant ce module, appliquée au même exemple illustré ci-dessus.

LSH appliqué à la découverte de texte presque en double.

Les résultats montrent que l’ensemble du pipeline est environ 4 fois plus rapide que la version Tf-Idf. Cette différence est plus drastique une fois qu’un ensemble de données plus grand est utilisé. Nous avons exclu l’analyse des performances de la mémoire maintenant, mais nous allons écrire un benchmark plus complet entre les deux méthodes dans un article séparé.

Nous avons appliqué LSH à notre corpus et nous avons vu que certaines offres d’emploi avec un contenu presque similaire apparaissent plus de 200 fois!

Pensées finales

Alors que Tf-Idf est plus populaire et un modèle plus familier pour travailler avec la similitude de texte; si vous traitez des ensembles de données de cette échelle, LSH est un modèle plus pratique. Même pour des ensembles de données plus petits, LSH offre une amélioration considérable du temps de calcul.

Être capable de dédupliquer correctement un corpus réduit le bruit dans les données d’entraînement, économise des ressources de calcul et aide à apprendre un modèle plus précis pour notre cas d’utilisation.

Nous pensons qu’il existe une multitude de problèmes auxquels LSH peut être appliqué, tels que:

  • Nettoyage de l’image en double: appliquez LSH sur les fonctionnalités de l’image et ne conservez qu’une image unique de chaque bac.
  • Chatbots: identifiez des entrées similaires et formez un modèle pour identifier la meilleure réponse de la base de connaissances.
  • Moteur de recommandations : regroupez les éléments avec des fonctionnalités presque similaires et approuvez les éléments aux utilisateurs.

N’hésitez pas à explorer et à essayer LSH à vos propres problèmes! 🙂

Références sur LSH

Ces articles illustrent assez bien le fonctionnement de LSH et montrent également des exemples.

Voici un cours sur l’extraction d’ensembles de données massifs qui traite de LSH.

Suivez-nous !

Nous publions en permanence des articles sur l’Apprentissage Automatique, l’Apprentissage profond, la PNL, la Programmation Probabiliste et les projets d’analyse que nous réalisons chez Kalibrr Research. Suivez-nous pour être averti de nos prochains messages! 🙂