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 :

Éliminer les mots inutiles


Sujet :

Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Éliminer les mots inutiles
    Bonjour,
    je suis debutante en java , je cherche à créer une classe java qui me permet de supprimer des mots inutile (mot vide) comme : the , that, is, be, before, because, about, then, can,!,?,..... a partir d'un fichier txt .j'ai crée ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    public class MotVide {
    	public static void main(String[] args){
    		String fichier ="D:/application/entrer lemm/ambler.txt";
    // exemple d'une liste
    		  ArrayList<String> mots = new ArrayList<String>(Arrays.asList("to", "the", "a","or","on","is","in","be","are","is"));
    		String  ch = "";
    		boolean res ;
    		int j;
     
    		//lecture du fichier texte	
    		try{
    			InputStream ips=new FileInputStream(fichier); 
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			FileWriter fileWriter=new FileWriter("D:\\inputlemma.txt"); 
    			BufferedWriter bufferedWriter=new    BufferedWriter(fileWriter); 
    			String ligne;
     
    			 while ((ligne=br.readLine())!=null ){	
    				System.out.println(ligne);
    				String str[]=ligne.split(" ");
     
    				for (int i =0; i<str.length;i++ )
     
    				{
    				     ch = str[i];
    				     j=0 ;
    				     res =false ;
    				while(j<mots.size() && res ==false)				
    				{   
    					if ( mots.get(j).equalsIgnoreCase(ch))
    				         res= false ; 
    				       else  
    				         res = true ;
    					  j++;
    				}
    				System.out.println(res);
    						 if (res=true)
    				 { bufferedWriter.write(str[i]); 
    				   bufferedWriter.newLine(); }
     
    			   } 
    			 }
    			br.close();	 	
    		}		
    		catch (Exception e){
    			System.out.println(e.toString());
    		}
    	}
    }
    le résultat de code me donner un nouveaux fichier qui contient le même contenue que le fichier initiale, il ne me permet pas d’éliminer les mot vide je pense que la problème dans la fonction equals :
    la variable res prend toujours la valeur true .
    Svp aidez moi !!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Istgas Voir le message
    Bonjour,
    Salut,

    Citation Envoyé par Istgas Voir le message
    la variable res prend toujours la valeur true .
    oui, parce que tu fais :

    or, le symbole de test d'égalité c'est == pas =, qui est le signe d'affectation

    tu devrais faire :

    ou plus simplement

    Quand tu fais

    ça affecte true à res puis ça évalue l'expression res, donc qui vaut toujours true.

    Par ailleurs tu peux remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(j<mots.size() && res ==false)				
    				{   
    					if ( mots.get(j).equalsIgnoreCase(ch))
    				         res= false ; 
    				       else  
    				         res = true ;
    					  j++;
    				}
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = !mots.contains(ch.toLowerCase())
    (et ce sera un plus efficace d'utiliser un HashSet plutôt qu'une ArrayList pour mots)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Mercii beacoup sa fonctionne mais lorsque j'ai termine la liste avec des autre mots il ne me donne pas une résulta
    (et ce sera un plus efficace d'utiliser un HashSet plutôt qu'une ArrayList pour mots)
    Est ce que tu me donnée un exemple c 'est quoi HasSet ??

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

    Pour éviter ce genre d'erreur lors d'un test sur l'égalité, j'ai pris l'habitude de mettre le constant à gauche, comme ça on aura une erreur de compilation au lieu du résultat. En java, l'opérateur "=" ne passe que pour les booléens dans un clause "if" mais l'astuce est valable pour les autres langages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ("abc".equals(a)) // permet de ne pas tester si a n'est pas null
    if (true=a) // erreur de compilation
    if (2==a) // au lieu de (a==2), dans le cas d'oublie d'un égal (=), on aura une erreur de compilation
    ...
    A+.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Istgas Voir le message
    Mercii beacoup sa fonctionne mais lorsque j'ai termine la liste avec des autre mots il ne me donne pas une résulta
    Pas de quoi Mais je ne comprends pas quand tu dis "j'ai termine la liste avec des autres mots"... mets ton code, ce sera plus parlant

    Citation Envoyé par Istgas Voir le message
    Est ce que tu me donnée un exemple c 'est quoi HasSet ??
    Ce n'est pas très important dans ton petit programme, mais quand il s'agit de vérifier l'existence de quelque chose dans un ensemble de valeurs, utiliser un HashSet est plus rapide qu'une ArrayList (c'est d'autant plus important que cette liste est grande).

    Ca s'utilise pareil (si tu utilises contains(), pas si tu utilises ton while et get()) dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set<String> mots = new HashSet<String>(Arrays.asList("to", "the", "a","or","on","is","in","be","are","is"));
    Attention, un HashSet, comme tous les Set impose que les instances que l'on y met soient uniques (au sens de la méthode equals ) : mais c'est le cas d'une liste de stopwords (ça servirait à rien d'avoir 2 fois le même mot)

    Je ne t'explique pas comment fonctionne un HashSet dans le détail, ça risque d'être un petit peu compliqué : sache juste que ça utilise une valeur int (un hash) pour accélérer le test d'égalité (et la recherche), avant de tester equals, d'ou le fait que ça soit plus rapide.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    Essai ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    public class MotVide {
        public static void main(String[] args){
            String fichier ="D:/application/entrer lemm/ambler.txt";
            ArrayList<String> mots = new ArrayList<String>(Arrays.asList("to", "the", "a","or","on","is","in","be","are","is"));
            //lecture du fichier texte	
            try{
                InputStream ips=new FileInputStream(fichier); 
                InputStreamReader ipsr=new InputStreamReader(ips);
                BufferedReader br=new BufferedReader(ipsr);
                FileWriter fileWriter=new FileWriter("D:\\inputlemma.txt"); 
                BufferedWriter bufferedWriter=new    BufferedWriter(fileWriter); 
                String ligne;
     
                 while ((ligne=br.readLine())!=null ){
                    String resultat = "";
                    System.out.println(ligne);
                    String str[]=ligne.split(" ");
     
                    for (int i =0; i<str.length;i++ ){
                         boolean res=false;          
                        for (int k = 0; k < mots.size(); k++) {                                    
                            if ( !mots.get(k).equalsIgnoreCase(str[i])){  
                                res=true; break;       
                            }                                   
                        }
                        if(!res){                   
                                bufferedWriter.write(str[i]+" ");
                                resultat += str[i]+" ";
                        }
                    }
                    System.out.println(resultat);
                    bufferedWriter.newLine();
                 }
                br.close();	 	
            }		
            catch (Exception e){
                    System.out.println(e.toString());
            }
        }
    }
    tes erreurs:
    1-n'emploi pas while si tu peut employer for
    2-tu emploie beucoup trop de variable inutile : ch, j ...

  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
    @AASProni
    Il faut éviter de manipuler un String pour des concaténations parce que c'est immuable et gardé en mémoire pendant certain temps, il faut utiliser un StringBuilder.

    A+.

  8. #8
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    @AASProni
    Il faut éviter de manipuler un String pour des concaténations parce que c'est immuable et gardé en mémoire pendant certain temps, il faut utiliser un StringBuilder.

    A+.
    Merci beaucoup pour le conseil

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Pas de quoi Mais je ne comprends pas quand tu dis "j'ai termine la liste avec des autres mots"... mets ton code, ce sera plus parlan
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    public class MotsVide {
    	public static void main(String[] args){
    		String fichier ="D:/application/entrer lemm/ambler.txt";
    		String fichier1 ="D:/application/Stopliste.txt";
    		String  ch = "";
    		 ArrayList<String> mots = new ArrayList<String>();
    		boolean res ;
    		//lecture du fichier texte	
    		try{
    			InputStream ips=new FileInputStream(fichier); 
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			FileWriter fileWriter=new FileWriter("D:\\inputlemma.txt"); 
    			BufferedWriter bufferedWriter=new BufferedWriter(fileWriter); 
     
    			String ligne;
    			String ligne1;
    			InputStream ips1=new FileInputStream(fichier1); 
    			InputStreamReader ipsr1=new InputStreamReader(ips1);
    			BufferedReader br1=new BufferedReader(ipsr1);
    // lire fichier qui contient les mots vide at remplire la liste mots 		     
    		  while ((ligne1=br1.readLine())!=null)
    		 {   
     
    			 mots.add(ligne1);
     
    		}
             while ((ligne=br.readLine())!=null ){	
    				System.out.println(ligne);
    				String str[]=ligne.split(" ");
     
    			for (int i =0; i<str.length;i++ )
    				{ch = str[i];
    				 res = !mots.contains(ch.toLowerCase());
    				 br1.close();
    				 System.out.println(res);
    		       if (res==true)
    				 { bufferedWriter.write(str[i]); 
    					   bufferedWriter.newLine(); }
     
    			   } 
    			 }
    			br.close();	 	
    		}		
    		catch (Exception e){
    			System.out.println(e.toString());
    		}
    	}
     
    }

    le fichier des mots vide :
    about
    above
    after
    again
    against
    all
    an
    and
    any
    as
    at
    because
    before
    below
    between
    both
    but
    by
    can't
    cannot
    com
    could
    couldn't
    de
    did
    didn't
    don't
    down
    during
    each
    en
    few
    for
    from
    further
    he
    he'd
    he'll
    he's
    her
    here
    here's
    hers
    herself
    him
    himself
    his
    how
    how's
    i
    i'd
    i'll
    i'm
    i've
    if
    in
    into
    it
    it's
    its
    itself
    la
    let's
    more
    most
    mustn't
    my
    myself
    no
    nor
    not
    of
    off
    on
    once
    only
    or
    other
    ought
    our
    ours
    ourselves
    out
    over
    own
    same
    shan't
    she
    she'd
    she'll
    she's
    should
    shouldn't
    so
    some
    such
    than
    that
    that's
    the
    their
    theirs
    them
    themselves
    then
    there
    there's
    these
    they
    they'd
    they'll
    they're
    they've
    this
    those
    through
    to
    too
    und
    under
    until
    up
    very
    was
    wasn't
    we
    we'd
    we'll
    we're
    we've
    were
    weren't
    what
    what's
    when
    when's
    where
    where's
    which
    while
    who
    who's
    whom
    why
    why's
    will
    with
    won't
    would
    wouldn't
    www
    you
    you'd
    you'll
    you're
    you've
    your
    yours
    yourself
    yourselves
    .
    :
    ;
    ,
    !
    ?
    §
    *
    '
    "
    (
    )
    [
    ]
    +
    /
    -


  10. #10
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    A qui s'adresse ta citation?
    Pas de quoi Mais je ne comprends pas quand tu dis "j'ai termine la liste avec des autres mots"... mets ton code, ce sera plus parlan
    As-tu essayé le code que j'ai donné en haut?
    Si OUI, dis moi si ça a marché ou pas!

    Merci d'avance!

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par AASProni Voir le message
    A qui s'adresse ta citation?


    As-tu essayé le code que j'ai donné en haut?
    Si OUI, dis moi si ça a marché ou pas!

    Merci d'avance!
    Oui j'ai essayé votre code que mais ça marche pas
    Mon problème maintenant est lorsque je test ce code avec une liste qui contient 6 , 7 mot ça marche . Mais lorsque j'utilise une liste qui contient 40 mots par exemple ne me donne pas aucune résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    public class MotsVide {
    	public static void main(String[] args){
    		String fichier ="D:/application/entrer lemm/ambler.txt";
    		String fichier1 ="D:/application/Stopliste.txt";
    		String  ch = "";
    		 ArrayList<String> mots = new ArrayList<String>();
    		boolean res ;
    		//lecture du fichier texte	
    		try{
    			InputStream ips=new FileInputStream(fichier); 
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			FileWriter fileWriter=new FileWriter("D:\\inputlemma.txt"); 
    			BufferedWriter bufferedWriter=new BufferedWriter(fileWriter); 
     
    			String ligne;
    			String ligne1;
    			InputStream ips1=new FileInputStream(fichier1); 
    			InputStreamReader ipsr1=new InputStreamReader(ips1);
    			BufferedReader br1=new BufferedReader(ipsr1);
    // lire fichier qui contient les mots vide at remplire la liste mots 		     
    		  while ((ligne1=br1.readLine())!=null)
    		 {   
     
    			 mots.add(ligne1);
     
    		}
             while ((ligne=br.readLine())!=null ){	
    				System.out.println(ligne);
    				String str[]=ligne.split(" ");
     
    			for (int i =0; i<str.length;i++ )
    				{ch = str[i];
    				 res = !mots.contains(ch.toLowerCase());
    				 br1.close();
    				 System.out.println(res);
    		       if (res==true)
    				 { bufferedWriter.write(str[i]); 
    					   bufferedWriter.newLine(); }
     
    			   } 
    			 }
    			br.close();	 	
    		}		
    		catch (Exception e){
    			System.out.println(e.toString());
    		}
    	}
     
    }

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Aucun résultat ? C'est à dire ? Le fichier en sortie est complètement vide ? Le programme se bloque, s'arrête normalement, ou trace une exception ?

    Il manque un flush à la fin sur ton writer pour vider le buffer : c'est peut être tout simplement ça ton problème...

    Je me suis permis de refactoriser ton code pour y voir plus clair, avec l'utilisation d'un HashSet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.HashSet;
    import java.util.Set;
     
    public class MotsVide {
     
    	private final static String FICHIER_ENTREE = "D:/application/entrer lemm/ambler.txt";
    	private final static String FICHIER_STOPWORDS = "D:/application/Stopliste.txt";
    	private final static String FICHIER_SORTIE = "D:/inputlemma.txt";
     
    	public static void main(String[] args) {
     
    		try {
    			Set<String> mots = lireStopListe();
     
    			// lecture du fichier texte
    			try (
    				BufferedReader reader = new BufferedReader(new FileReader(
    						FICHIER_ENTREE));
    				BufferedWriter writer = new BufferedWriter(new FileWriter(
    					FICHIER_SORTIE))
    			    ) {
    				// lire fichier qui contient les mots vide at remplire la liste mots
     
    				  String ligne;
     
    				  while ((ligne = reader.readLine()) != null) {
    					System.out.println(ligne);
    					for (String str : ligne.split(" ")) {
    						if (!mots.contains(str.toLowerCase())) {
    							writer.write(str);
    							writer.newLine();
    						}
    					}
    				  }
     
    				  writer.flush();
    			}
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    	private static Set<String> lireStopListe() throws IOException {
     
    		// lecture stopliste
    		Set<String> mots = new HashSet<>();
     
    		try (
    	             BufferedReader reader = new BufferedReader(new FileReader(FICHIER_STOPWORDS))
    		    ) {
     
    			   String ligne;
    			   while ((ligne = reader.readLine()) != null) {
    				mots.add(ligne.trim());
    			   }
     
    		}
     
    		System.out.println("Stop words: " + mots);
    		return mots;
     
    	} 
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Aucun résultat ? C'est à dire ? Le fichier en sortie est complètement vide ? Le programme se bloque, s'arrête normalement, ou trace une exception ?
    Le programme s'arrete noemalement mais donne un fichier vide

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Istgas Voir le message
    Le programme s'arrete noemalement mais donne un fichier vide
    y compris avec un flush ? (tu as testé avec mon code ?)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Par contre, quand je vois ta stop word list, je me dis que le split[] n'est pas forcément une bonne idée pour parser le fichier d'entrée. En fait le problème vient du faire qu'il y a de la ponctuation de la stop word list (et que ça ne devrait pas y être : ça devrait être traité à part

    Dans la pharse : Le petit garçon, en jouant à la balle, était heureux. tu obtiens le split suivant :
    Le
    petit
    garçon,
    en
    jouant
    à
    la
    balle,
    était
    heureux.

    On voit tout de suite le problème...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Il manque un flush à la fin sur ton writer pour vider le buffer : c'est peut être tout simplement ça ton problème...
    L'absence de flush() est une chose. L'absence de close() en est une autre.

    flush() est à essayer dans le doute. close() est indispensable quelle que soit la situation.
    (D'où le AutoCloseable de Java 7 et non pas AutoFlushable)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par thelvin Voir le message
    L'absence de flush() est une chose. L'absence de close() en est une autre.

    flush() est à essayer dans le doute. close() est indispensable quelle que soit la situation.
    (D'où le AutoCloseable de Java 7 et non pas AutoFlushable)
    Ah, oui, en effet, j'avais pas vu qu'il manquait le close du writer. Faut dire que j'ai pensé au flush en refactorisant son code et que j'avais déjà refactorisé avec les try-with-resource, du coup, j'ai pas tilté sur l'absence du close.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #18
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut

    mon problème est résolue grâce à vous

Discussions similaires

  1. Le dossier qui stock les mots de passe
    Par cartonis dans le forum Sécurité
    Réponses: 21
    Dernier message: 17/08/2005, 12h49
  2. [sql] [oracle] éliminer les doublons dans sum ?
    Par trungsi dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/03/2005, 12h29
  3. Enlever les espaces inutiles d'un AnsiString
    Par jamesb dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/01/2005, 12h40
  4. Éliminer les lignes blanches dans un tableau
    Par DenPro dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/11/2004, 01h27
  5. Fusion de lignes de tables en éliminant les redondances
    Par MinsK dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 22/04/2004, 09h21

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