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 :

Approximative String Matching


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut Approximative String Matching
    Salut a tous

    Comme l'intitulé du sujet l'indique, je cherche un algorithme de recherche approximative de chaine de caractère simple a comprendre et efficace

    J'ai beaucoup chercher sur Google , et j'ai trouver pas mal de cours ... mais c'est un peu difficile a comprendre quand même (et vu le temps que j'ai...)

    Donc n'importe quel lien de cours facile a comprendre et le bien venu, aussi si cet algorithme est déjà implémenté dans un des langages de programmation


    et merci d'avance

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par kha_yassine Voir le message
    Comme l'intitulé du sujet l'indique, je cherche un algorithme de recherche approximative de chaine de caractère simple a comprendre et efficace
    Quelle est ta définition de "recherche approximative" ?

    Pour une chaine donnée, tu cherches toutes les chaines qui lui ressemblent phonétiquement ? textuellement ? autre ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut
    Excusez moi pour le manque de détail que j'ai mis sur le post

    voici un exemple :
    Texte : "Algorithmes : Forum d'entraide sur l'algorithmique, l'intelligence artificielle, le traitement numérique d'images et les mathématiques"

    chaine a rechercher : "Algoryt fique"

    Les erreurs au niveau de la chaine sont fait exprès,

    Les résultats de recherche :
    - l'indice du mot "Algorithmes" = 1
    - l'indice du mot "l'algorithmique" = ...
    - l'indice du mot "numérique" = ...
    - l'indice du mot "mathématiques" = ...
    - l'indice d'autres mot ayant une distance d'édition faible...

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Tu peux calculer la distance de Levenshtein (ou Damerau-Levenshtein) entre ta chaine et chaque sous-chaine (ou mot) de ton texte.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut
    Merci pour ta réponse

    Mais cette façon de faire ne va pas marcher, car le texte a traiter est très long, et aussi la chaine de caractère a rechercher peut être longue aussi

    Les premiers inconvénients que je vois :

    1- Le temps de réponse serait énorme.

    2- L'algorithme peut me retourner une chaine pas du tout conforme a se que je cherche avant celle que je cherche,

    par exemple :
    texte = "Algorithme Algérie"
    La chaine a rechercher = "Algory"

    Le résultat serait : "Algérie" avant "Algorithme"

    Bien sur qu'il y a des algorithmes "Approximative String matching" connu aussi sous le nom "fuzzy text searching" qui utilisent la distance de 'Levenshtein' mais ils considèrent que la chaine a rechercher est tout un ensemble a rechercher

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Tu peux nous donner un exemple réel de données que tu vas utiliser (chaine cherchée et texte), et du résultat attendu ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut


    voici un autre exemple :

    L'histoire est un récit, c'est la construction d'une image du passé par des hommes (les historiens) qui tentent de décrire, d'expliquer ou de faire revivre des temps révolus. Par delà les époques et les méthodes, et quel que soit le but sous-jacent du travail de l'historien, l'histoire est toujours une construction humaine, inscrite dans l'époque où elle est écrite. Comme le souligne l'historien Antoine Prost, « l'histoire, c'est ce que font les historiens ».

    L'histoire est un récit, construit non par intuition intellectuelle, mais à partir de sources. Elle s'attache avec ces sources à reconstruire plusieurs pans du passé. Au cours des siècles, les historiens ont fortement fait évoluer leurs champs d'intervention et réévaluer leurs sources, ainsi que la manière de traiter ces sources.

    Source:Wikipedia
    La chaine a rechercher :

    histoir es reci
    Resultats :

    "L'histoire est un récit..." début du premier paragraphe
    "L'histoire est un récit..." début du deuxième paragraphe

    et si je donne une grande marge d'erreur, il va me retourner aussi :
    "l'histoire est toujours..." du premier paragraphe
    "l'histoire, c'est..." du premier paragraphe
    peut être d'autres résultats encore...
    Resultats de la distance de "Levenshtein" mot par mot, avec une distance maxi = 3:

    "L'hisoire" début du premier paragraphe
    "est"
    "récit"
    "ou" la distance d'édition entre 'es' et 'ou' = 2 donc elle va être rendu comme résultat de recherche
    "de" ... et tout les autres mots de deux caractères ou de 3 caractères qui inclus 'e' ou 's'

    Je continu ??
    rien qu'avec une distance de "Levenshtein" = 3, je suis mal barré !

    J'espère que c'est plus claire maintenant

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Ok.

    Est-ce que la chaine a chercher est toujours dans ce genre là, a savoir qu'elle ressemble phonétiquement au texte cherché ?

    Auquel cas, tu as des algos comme Soundex qui te permettent d'encoder tes chaines en phonétique. La recherche avec une distance de Levenshtein devient alors plus pertinente.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut
    Phonétiquement, non pas tout a fait

    J'ai vu l'algorithme SoundEx, et c'est pas vraiment se que je cherche, surtout que mon algorithme va être utilisé pour traiter "presque" toute les langues

    Je te remercie en tout cas pour ton aide
    Je continu toujours mes recherches ... c'est pas aussi facile que je pensais

  10. #10
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut
    J'ai trouver ce document, qui a l'air d'être intéressant :

    http://www.cs.unc.edu/~weiwang/paper/SSDBM04.pdf

    Le BASS-TREE

    Mais je trouve pas l'algorithme, même pas sur Google

Discussions similaires

  1. [RegExp] RegExp.test(String) ou String.match(RegExp)
    Par Eric2a dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/09/2010, 00h42
  2. Réponses: 1
    Dernier message: 04/05/2009, 11h08
  3. [RegExp] string.match() difficile
    Par PaC_1250 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/05/2007, 13h24
  4. Type unit, type string, match with
    Par lioudow dans le forum Caml
    Réponses: 8
    Dernier message: 12/02/2007, 17h12
  5. [Regexp] String.matches
    Par scifire dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 21/11/2005, 17h25

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