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 :

traitement d'un fichier texte


Sujet :

Java

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut traitement d'un fichier texte
    bonjour,
    j'ai un fichier texte ,je veus ignorer toutes les termes de liaison comme "des, de,la,le,dans.et.aux,à...." pour traiter ensuite que les noms verbes ....
    comment je peut faire ca avec java

    j'ai le code suivant qui traite tous les mots:que faut il faire pour eliminer tous les termes cite au dessus

    merci d'avance

    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
        	String mot ;
        	String aux;
        	int i=0;
     
        	String ligneIN=null;
        	int nbmots;
        	int nbMotsDiff=0;
     
        	StringTokenizer st;
        	String tabMotsDiff[]=new String [11000];
    	int tabFreq[]=new int [11000];
        	boolean trouve;
    	BufferedReader fin=new 	BufferedReader(new FileReader("test.txt"));
        	while((ligneIN=fin.readLine())!=null)
        	{
        		st=new StringTokenizer(ligneIN," ?,.;:!");
        		while(st.hasMoreTokens()&&calcul<11)
        		{   
        			mot=st.nextToken();
        			calcul++;
     
        				for( i=0,trouve=false;i<nbMotsDiff&&!trouve;i++)
        			{
        				if(tabMotsDiff[i].equals(mot))
        				trouve=true;
        			}
        			if(trouve)
        				tabFreq[i-1]++;
        			else
        			{
        				tabMotsDiff[nbMotsDiff]=mot;
        				tabFreq[nbMotsDiff]=1;
        				nbMotsDiff++;
        			}
        			nbmots++;
        		}
        	}
     
        	fin.close();

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 103
    Points : 110
    Points
    110
    Par défaut
    Salut,
    tout d'abord, je te suggère d'utiliser des structures de données mieux adapter à tes besoins : insertion, test d'appartenance.
    Je te propose le code suivant :
    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
     
    	static String[] dictionnaire={"de","des","dans","le","la","les","et","aux","à"};
     
    	public static void main(String[] args) throws IOException {
    		String mot ;
    		String ligneIN=null;
    		StringTokenizer st;
    		HashSet<String> interdits=new HashSet<String>();
    		for (int i = 0; i < dictionnaire.length; i++) {
    			interdits.add(dictionnaire[i]);
    		}
    		HashMap<String,Frequence> tabMotsDiff=new HashMap<String,Frequence>();
    		BufferedReader fin=new 	BufferedReader(new FileReader("/home/nono/Bureau/test.txt"));
    		while((ligneIN=fin.readLine())!=null) 	{
    			st=new StringTokenizer(ligneIN," ?,.;:!\"");
    			while(st.hasMoreTokens()) {
    				mot=st.nextToken();
    				if(!interdits.contains(mot)) {
    					if(tabMotsDiff.containsKey(mot)) {tabMotsDiff.get(mot).increment();}
    					else {tabMotsDiff.put(mot, new Frequence());}
    				}
    			}
    			fin.close();
                           System.out.println(tabMotsDiff);
    		}
    Le code utilise une petite classe destinée à compter le nombre d'occurrences d'un mot :
    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
     
    class Frequence {
     
     
    		public int nbOccurences;
     
    		public Frequence() {
    			super();
    			nbOccurences=1;
    		}
     
    		public final void increment() {
    			nbOccurences++;
    		}
     
    		public final int getNbOccurences() {
    			return nbOccurences;
    		}
     
    		public final void setNbOccurences(int nbOccurences) {
    			this.nbOccurences = nbOccurences;
    		}
     
     
    		@Override
    		public String toString() {
    			return Integer.toString(nbOccurences);
    		}
     
     
    	}
    Je crois qu'on peut encore améliorer le dictionnaire

    Ensuite, tu peux encore perfectionner en utilisant des expressions régulières pour tenir un peu compte de la grammaire.

    Bonne chance

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut benselma
    merci pour votre aide
    mais aussi une question svp:j'ai pas compris ces lignes là ;je suis debutante et je conné pa ce type d'ecriture ,je travaille pas sur la version .5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HashSet<String> interdits=new HashSet<String>();
     
    		HashMap<String,Frequence> tabMotsDiff=new HashMap<String,Frequence>();

  4. #4
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par benselma Voir le message
    je conné pa ce type d'ecriture ,je travaille pas sur la version .5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HashSet<String> interdits=new HashSet<String>();
     
    		HashMap<String,Frequence> tabMotsDiff=new HashMap<String,Frequence>();
    bonjour,
    pour cela je t'invite à voir faq de java: http://java.developpez.com/faq/java/...angage_donnees
    ce lien te donne une idée sur ces notions

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 103
    Points : 110
    Points
    110
    Par défaut
    Salut,

    tu devrais passer à la version 1.6 !
    La notion en question est la généricité. Cette notion est très utile autant pour ton propre code que pour utiliser l'API de sun.
    Par exemple, toutes les collections sont génériques.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashMap<String,Frequence> tabMotsDiff=new HashMap<String,Frequence>();
    Signifie que je veux créer une nouvelle table de hachage dont les clés sont des objets de type String et l'objet associé à cette clé de type Frequence.

Discussions similaires

  1. Traitement d'un fichier texte
    Par Vincinho dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/04/2010, 15h48
  2. requete de traitement d'un fichier texte
    Par AlternantOracle dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2009, 15h32
  3. Traitement d'un fichier texte.
    Par riou34 dans le forum 4D
    Réponses: 4
    Dernier message: 25/01/2009, 12h23
  4. Réponses: 8
    Dernier message: 14/09/2006, 16h43
  5. [INFO] Traitement d'un fichier texte
    Par doudine dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 25/04/2006, 09h23

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