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

Java Discussion :

Déterminer le nombre d'occurences des mots dans un fichiers texte


Sujet :

Java

  1. #1
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut Déterminer le nombre d'occurences des mots dans un fichiers texte
    Bonjour,

    S'il vous plaît il me faut chercher le nombre d'occurence de chaque mot importé d'une fichier. En effet, je dois tout d'abord sélectionner un fichier texte puis déterminer pour chaque mot leur nombre d'occurence et enfin les afficher dans JTEXTAREA par nombre d'occurence croissant.

    J'ai commencé par la création de l'interface graphique et j'ai fais le code me permettant d'avoir le JFileChooser maintenant après la sélection de cette fichier texte il me faut faire les mot dans un emplacement, avant ça retirer les espaces puis calculer pour chaque mot leur nombre d'occurences.
    Que pensez vous ? Avez-vous un code qui peut m'aider svp ? ça fais presque 3 ans ou j'ai pas développé en Java.

    Toute information sera le bien venu et merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir

    Pour compter le nombre d’occurrence d'un mot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Pattern pattern = Pattern.compile("(^|(\\s+))mot");
    /**
     * Si tu as supprimé les espaces et que les mots sont concaténés 
     *Pattern pattern = Pattern.compile("mot");
    **/
    Matcher matcher = pattern.matcher("mot test mot test mot mot test mot testmot testmot mot \nmot");
    int count = 0;
    while (matcher.find()) {
        count++;
    }
    A+.

  3. #3
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    Merci pour votre réponse,
    j'ai trouvé déjà une fonction qui me permet de déterminer le nombre d'occurence dans une chaîne dans un ancien post mais maintenant je suis bloqué comment déterminer déjà les mots qui composent cette chaine de caractère , pour pouvoir chercher pour chaque mot composant cette chaine leur nombre d'occurence dans cette chaine.
    Avez vous une idée svp ?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pattern pattern = Pattern.compile("\\s+");
    String[] mots = pattern.split("mot test mot test        mot mot test mot testmot testmot mot \n\tmot");

  5. #5
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pattern pattern = Pattern.compile("\\s+");
    String[] mots = pattern.split("mot test mot test        mot mot test mot testmot testmot mot \n\tmot");
    Je suis désolé mais j'ai pas compris le deux instructions, pouvez-vous m'expliquez encore svp ?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    Je suis désolé mais j'ai pas compris le deux instructions, pouvez-vous m'expliquez encore svp ?
    Désolé, il y avait un épisode de Simpson à la télé pendant que j'ai répondu et j'ai pas voulu le raté . C'est pas difficile à trouver quand même, ou par ici .

    A+.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Sinon, tu aurais pu le tester avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i=0; i< mots.length; i++){
    	System.out.println(mots[i]);
    }

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Si jamais ça peut t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pattern pattern = Pattern.compile("\\s+");
    String[] mots = pattern.split("mot test mot    test mot mot test mot testmot testmot mot \n\tmot");
    Set<String> motsSansDoublon = new HashSet<String>(Arrays.asList(mots));
    for(Iterator<String> iterators = motsSansDoublon.iterator(); iterators.hasNext();){
    	System.out.println(iterators.next());
    }
    Je pense qu'il ne te reste qu'à bidouiller un peu ces codes.

    A+.

  9. #9
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Bonsoir,

    Il y a un point que je n'ai pas compris : Les mots dont tu dois chercher le nombre d'occurrence dans un fichier sont-ils connus à l'avance ? En fait pour l'instant ce que j'ai plutôt compris c'est qu'il fallait tout d'abord identifier tous les mots contenus dans le fichier puis donner le nombre d'occurrence de chacun d'entre eux, ai-je mal compris ?

  10. #10
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Si jamais ça peut t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pattern pattern = Pattern.compile("\\s+");
    String[] mots = pattern.split("mot test mot    test mot mot test mot testmot testmot mot \n\tmot");
    Set<String> motsSansDoublon = new HashSet<String>(Arrays.asList(mots));
    for(Iterator<String> iterators = motsSansDoublon.iterator(); iterators.hasNext();){
    	System.out.println(iterators.next());
    }
    Je pense qu'il ne te reste qu'à bidouiller un peu ces codes.

    A+.
    J'ai essayé de tester ce code mais il y'a une erreur dans l'utilisation de Iterator pour parcourir le motssansdoublon, y-a t'il une autre manière pour parcourir cette chaine ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The type HTMLDocument.Iterator is not generic; it cannot be parameterized with arguments <String>

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    J'ai essayé de tester ce code mais il y'a une erreur dans l'utilisation de Iterator pour parcourir le motssansdoublon, y-a t'il une autre manière pour parcourir cette chaine ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The type HTMLDocument.Iterator is not generic; it cannot be parameterized with arguments <String>
    Tu as instancié ta Collection pour un HTMLDocument avec une Collection de pour un String. Mais sans voir ton code,

    A+.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    jai un repertoir contient environ de 500 fichier txt jai besoin d un code JAVA qui me permetre de chercher un mot entrer dans un champ de text et calculer son occurenec eet afichira sa frequence ? est ya kelkun qui px maider c vrmt urgent

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Octobre 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Question
    Bonsoir,

    Je cherche à identifier tous les mots contenus dans le fichier puis donner le nombre d'occurrence de chacun d'entre eux sans connaitre les mots à l'avance. Cependant ils sont toujours entre guillemets "mon mot" dans mon fichier txt

    Ex : {"trait_type":"Ear","value":"Pink Ear"}

    Est-ce que vous pouvez m'aider ?

  14. #14
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut
    Tu as un algorithme simple pour faire ça :
    d'abord il faut créer une HahsMap ou une Hashtable (mémoire associative) qui contiendra les associations entre les mots (String) et les compteurs (Integer ou autre classe adaptée).
    puis il faut récupérer la liste de tous les mots de ton fichier en utilisant la fonction split par exemple.
    ensuite tu parcours ta liste de mots :
    - si le mot n'existe pas dans la mémoire associative : ajouter dans la mémoire associative le mot associé à son compteur mis à 1 (table.put(mot, compteur))
    - sinon récupérer le compteur associé au mot et l'incrémenter

    Si tu as besoin de trier la liste des mots en fonction de leurs occurrences, il te suffit de créer une classe compteur adaptée contenant le mot et un entier avec une fonction compare qui trie les compteurs en fonction de la valeur de l'entier associé au mot. Ensuite tu extrais la liste des compteurs depuis la mémoire associative et tu tries cette liste (Collections.sort). Après tu n'as plus qu'à parcourir la liste triée et récupérer la liste de mots triée selon le nombre d'occurrences.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

Discussions similaires

  1. Remplacer des mots dans un fichier par des nombres
    Par bougnbie dans le forum Langage
    Réponses: 5
    Dernier message: 17/04/2014, 13h06
  2. Réponses: 4
    Dernier message: 09/10/2011, 16h17
  3. le nombre d'occurences des mots d'un texte
    Par hendrix67 dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2010, 09h39
  4. calculer le nombre d'occurence de mot dans une chaine
    Par hadjiphp dans le forum Langage
    Réponses: 8
    Dernier message: 20/04/2009, 11h06
  5. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42

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