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

avec Java Discussion :

algorithme pour chercher une phrase dans un texte


Sujet :

avec Java

  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 algorithme pour chercher une phrase dans un texte
    salut,

    j'ai une application à faire, en java, qui consiste à faire la recherche d'un ensemble de mots (phrase) dans un texte, en donnant la liste des fragments de mon texte qui contiennent ces mots (fragments = 20 mots par exemple) et les fragments seront triés en fonction du nombre des mots trouvés...

    J'aimrai avoir, si possible une idée (algorithme / méthode) que je pourait implementer (utiliser) dans mon application.

    Et encore s'il y a des liens a des articles qui parlent de ca !!

    Et merci d'avance

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Points : 467
    Points
    467
    Par défaut
    Cherche dans la JavaDoc la classe Scanner.

  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
    Scanner est comme le Scanf du langage C , c'est en fonction du type de la donnée qu'elle me la retourne;

    Mais là je veux une méthode avec la quelle je test la VALEUR de la donnée (texte), et non pas son type;

    C'est facile de faire se que je vien de vous demander,
    mais j'aimrai avoir une méthode de recherche qui est :
    - rapide,
    - economie lors de l'execution,
    - efficace ...

    Et je vous remerci

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Une méthode serait de placer le texte dans un fichier (s'il n'y ai pas déjà) et ensuite de parcourir le fichier mot par mot (--> je te renvois sur la JavaDoc) en comparant le mot extrait du fichier par le premier mot de ton fragment. S'il correspond, tu regardes le deuxième mots du fragments et ainsi de suite... Ça me paraît être une méthode assez rapide
    Pas de questions technique par MP, les forums sont là pour ça.

  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 cette réponse,

    mais je pense que se n'est pas une bonne idée, car vous supposez que la phrase a cherché existe tout en entier dans le texte,

    Se que je cherche est de par exemple (c'est une méthode parmi d'autres):
    - fragmenter le texte en un ensemble de phrases (20 mots par exemple)
    - retourner une liste de ces fragments dont les quels on a trouver plus de mots de la phrase recherché.

    exemple:
    la phrase a chercher : " je suis ici "
    la liste des fragments :
    - ...je parle Anglais, ici en Amerique, je suis Bèlge...
    ==> 4 corespondances
    - ...ici on ais...car je cherche...
    ==> 2 corespondances
    ....

    comme les moteurs de recherche (Google , yahoo...)

    Et merci en tout cas

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut
    salut,
    la premiere idee qui vient a l'esprit c'est avant de commencer ta recherche tu stocke tes mots cles (je , suis , etc) ds un tableau ou une collection, apres quand tu parcourt ton texte chaque mot trouvé devra etre comparer avec tes mots cles s'il existe tu imcremente un compteur et ansi de suite. Mais cote complexité ca laisse a desirer, si se dernier point est tres important alors c pas la bonne methode.
    bonne chance

  7. #7
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Bonjour,

    L'utilisation de la méthode indexOf peut te permettre de retrouver les occurrences de mots dans une phrase avec un systeme de compteur tu fais une pondération des retours des recherches par paragraphe de chaque mot, ce qui devrait te permettre de faire ressortir les paragraphes qui contiennent le plus de mot.

    c'est comme cela que je ferais

  8. #8
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Pour accélérer les traitements, fais une recherche sur l'algo de Moriss-Pratt. Désolé je ne l'ai plus en tête.

    Voir aussi :
    - cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/
    - cours Java de jmdoudou : http://jmdoudoux.developpez.com/cours/developpons/java/

  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
    Salut ,

    Merci beaucoup pour ces informations ,
    cet algorithme de Morris Patt ma l'air interessant

    thanks a lot

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

Discussions similaires

  1. retrouver une phrase dans un texte
    Par arklane dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 22/11/2008, 19h37
  2. [Shell] Chercher une chaine dans un texte
    Par samtgr dans le forum Linux
    Réponses: 4
    Dernier message: 14/02/2008, 12h55
  3. chercher une date dans un texte en Langage C
    Par dadou9101 dans le forum Débuter
    Réponses: 3
    Dernier message: 30/01/2008, 17h35
  4. recherche d'une phrase dans un texte
    Par kha_yassine dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 30/06/2007, 23h17
  5. Réponses: 2
    Dernier message: 28/10/2005, 12h52

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