IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algo de recherche de similarité de texte


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut Algo de recherche de similarité de texte
    Bonjour à tous je voudrais savoir s’il existe un algo ou une technique pour comparer des milliers de documents sans indexer deux documents identique.

    L'application que je développe en ce moment index de énormément de texte, et mon problème est qu'il arrive assez souvent d'indexer deux fois le même texte. Donc je cherche une méthode pour garder une signature de chaque document indexé pour la comparer avec les documents qui entre dans le système et si deux signature sont identique ou fortement similaire je n'index pas le document.

    Merci

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Généralement on utilise un hash comme MD5 pour créer les signatures des documents. En pratique la probabilité que deux documents différents aient la même signature est infime et ainsi il est aisé de vérifier qu'un nouveau document n'est pas déjà dans la base en comparant simplement sa signature à l'ensemble des signatures des documents déjà dans la base. S'il y a concordance, il suffit de comparer les deux documents qui ont la même signature, le coût est ainsi énormément minimisé par rapport à une comparaison avec chaque document déjà dans la base.

    As-tu besoin de plus de détails ? (Tous les langages décents ont des librairies pour calculer le hash MD5 d'un document)

    --
    Jedaï

  3. #3
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Merci Jedai pour ta réponse, mon programme est écrit en C# je vais donc utiliser Security.Cryptography pour générer une signature md5 de chacun des documents.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Goe,
    Citation Envoyé par Jedai Voir le message
    Généralement on utilise un hash comme MD5 pour créer les signatures des documents. En pratique la probabilité que deux documents différents aient la même signature est infime et ainsi il est aisé de vérifier qu'un nouveau document n'est pas déjà dans la base en comparant simplement sa signature à l'ensemble des signatures des documents déjà dans la base. S'il y a concordance, il suffit de comparer les deux documents qui ont la même signature, le coût est ainsi énormément minimisé par rapport à une comparaison avec chaque document déjà dans la base.

    As-tu besoin de plus de détails ? (Tous les langages décents ont des librairies pour calculer le hash MD5 d'un document)

    --
    Jedaï
    On peut même plutôt calculer les hash de ces 2 documents avec un autre algorithme (crcXX, shaXX...), littéralement aucune chance qu'ils donnent également la même signature.

    Mais il n'est pas sûr que ce soit plus rapide que faire la comparaison directe des documents, le premier test à faire étant de comparer les tailles, qui éliminera au moins une partie des cas à traiter.

  5. #5
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Je pense que la solution de jedai est mieux dans mon cas, je doit indexer des millers voir millions de document (je bosse sur un moteur de recherche d'entreprise). Donc comparer les tailles permet certes d'éliminer une bonne partie des cas à traiter mes ceux restant sont encore trop nombreux . Il me faut une comparaison directe donc l'approche par signature md5 ou autre est meilleur selon moi.

  6. #6
    alex_pi
    Invité(e)
    Par défaut
    Après, il faut bien se rendre compte que la signature MD5 ne convient que pour détecter *rigoureusement* le même texte, à la virgule pres. Si l'un est stocké en HTML et l'autre en texte brut, tu n'as quasiment aucune chance d'extraire du texte brut depuis l'HTML et d'obtenir le même hash. Je pense qu'il doit quand même y avoir des méthodes plus résistantes à de petits changement pour détecter des textes très similaires.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Par défaut
    Si tu cherches à êtrte moins rigoureux tu peux utiliser le cosinus entre 2 phrases...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algo de recherche dans un cube de couleur
    Par mamelouk dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2005, 21h38
  2. Algo de recherche de flou
    Par Joeleclems dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 15/03/2005, 10h19
  3. algo de recherche en profondeur
    Par sylsau dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 08/02/2005, 22h59
  4. [VBA] Algo de recherche de doublons
    Par guams dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/07/2004, 17h10
  5. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo