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 :

Recherche de sous chaîne


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Points : 223
    Points
    223
    Par défaut Recherche de sous chaîne
    Bonjour à tous,

    voilà je vais devoir réaliser un moteur de recherche pour mon stage, cette application devra chercher dans le contenu de fichiers excel une certaine chaine.

    Mais là je me pose des questions sur l'algorithme de recherche que je vais utiliser, j'ai déja vu qu'il existait KMP ou Boyer-Moore, je ne les ai jamais utiliser, à votre avis y en a t'il un plus puissant que l'autre ? Ou plus facile à mettre en place ? Ou peut être un autre algo que je n'aurais pas vu ? Ou peut être pas d'algo du tout ?

    Une autre question que je me pose, par rapport à l'ouverture des fichiers, en effet je me dis que si j'ouvre un flux pour chaque fichiers excels à chaque recherche ça va faire un peu lourd nan ?
    Je pensais peut être à copier le contenu des fichiers excel dans un fichier texte, donc ne garder que le texte et ne faire une recherche que dans un gros fichier.
    Vous trouvez ça aussi lourd ou intéressant ?
    Sachant qu'il peut y avoir une 100aine de fichier excels !

    Merci beaucoup pour votre aide

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Il ya plusieurs problèmes différents dans la question :

    1) la lecture de l'ensemble des feuilles d'un fichier excel et leur conversion en texte.

    2) L'optimisation des requêtes, c'est à dire savoir s'il faut à chaque interrogation relire l'ensemble des fichiers Excel ou s'il faut maintenir un index qui facilitera la recherche (index qu'il faudra mettre à jour, lors de la détection d'une modification d'un fichier Excel existant ou lorsqu'un nouveau fichier Excel est apparait).

    3) l'algorithme de recherche dépendra de l'option choisie pour la question 2). C'est à dire si on doit identifier tous les mots du texte ou seulement retouver ceux de la question.

    A priori, il me semble que l'on peut relire tous les fichiers à chaque requête et que, dans ce cas, le facteur critique sera davantage le temps de conversion en texte des feuilles Excel, plûtot que la qualité de l'algo de recherche d'un mot dans le texte converti (si l'algo est pas complétement nul évidement).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre actif Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Points : 223
    Points
    223
    Par défaut
    Merci pour tes observations,

    1 - Je devrait lire les fichiers excel grace à des librairie python, mais maintenant que tu en parles ça va peut être très long de passer par tous les fichiers et copier leur contenu dans un seul fichier texte.

    2 - Je ne comprends pas bien ce que tu veux dire, qu'un fichier soit modifié ou non n'altère pas la recherche, à moins que tu parles par rapport à mon idée de copier le contenu des fichiers, et là je comprendrais et en effet un index serait à tenir.

    3 - Je comprends pas non plus :/

    Et sinon connais tu un algo de recherche puissant ou vaut mieux que je me lance dans un algo perso ?

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    La base de fichiers est-elle figée (ou quasi-figée avec une mise à jour périodique en batch) ?
    Si ce n'est pas le cas, il faut refaire la préparation à chaque recherche.

    La préparation consiste soit à tout retraiter, soit à faire une mise à jour différentielle de la base texte résultant de la conversion et/ou des index si on choisit de construire un index avec tous les mots significatifs de la base afin d'accélérer lers recherches.

    Pour faire un moteur de recherche , il y a schématiquement 2 options :
    - soit on fait une recherche comme la recherche de fichier Windows qui parcoure dynamiquement tous les fichiers et les éxamine en fonction des mots de la question,
    - soit on utilise comme Google des index qui sont créés par une tâche de fond qui analyse tous les fichiers et répertorie dans un index tous les mots avec les doc dans lesquels ils apparaissent.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre actif Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Points : 223
    Points
    223
    Par défaut
    en effet la base de fichier n'est pas figée.

    Mon idée était similaire de celle de Google que tu cites. Sauf que je comptais copier tout le contenu des fichier en texte, alors que là ton idée serait de ne garder que les mots les plus importants, je trouve ça très interessant mais je ne vois pas très bien comment le mettre en place.
    Il suffirait de supprimer les mots les plus commun ? genre "un" "le" ... ?
    Ou il y a une autre technique plus simple ?

    Au fait donc pour toi l'idée de l'index de tout les fichiers plutot qu'une bête comparaison de chaine dans chaque fichier est plus performante ?

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pour créer un index de façon assez simple, il faut analyser chaque document (dans ton ca,s un doc = 1 fichier Excel):
    - identifier tous les mots du texte,
    - normaliser les mots (suppression des accents, passage en majuscule, suppression éventuelle du "s" final, ...),
    - eliminer les mots vides (via une liste avec articles auxilliaires, prépositions, ...)

    Dans l'index, on aura la liste des doc associés à chaque mots .

    Lorsqu'on pose une question, on analyse la question comme un doc et on en tire les mots significatifs normalisés.

    Il ne reste plus qu'à pondérer les solutions (documents dans lesquels apparaissent un ou plusieurs mots) en favorisant :
    - les doc qui ont le plus de mots en commun avec la question,
    - les mots qui appariasissent dans peu de document.

    J'ai dèjà répondu à un post sur ce sujet, Il y a environ 2/3 semaines.
    J'essairai de te donner le lien.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  8. #8
    Membre actif Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Points : 223
    Points
    223
    Par défaut
    Merci beaucoup pour tes conseils, je comprends beaucoup maintenant et je pense que je vais vraiment adopter cette solution, qui me parait à la fois puissante et intéressante à mettre en place

    Encore merci !

Discussions similaires

  1. Recherche de sous chaîne en récursif
    Par Kriegor D Will dans le forum Débuter
    Réponses: 9
    Dernier message: 21/06/2013, 10h33
  2. Recherche une sous chaîne de caractères dans un Vector
    Par brino1987 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/06/2013, 14h31
  3. Algorithmie, recherche de sous chaînes
    Par vince85 dans le forum Général Java
    Réponses: 9
    Dernier message: 01/05/2011, 18h27
  4. Réponses: 16
    Dernier message: 10/01/2008, 15h12
  5. Recherche d'une chaîne dans une sous chaîne
    Par teen6517 dans le forum Langage
    Réponses: 3
    Dernier message: 29/03/2007, 19h10

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