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 :

BreakIterator et offet de Texte


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Points : 31
    Points
    31
    Par défaut BreakIterator et offet de Texte
    Bonjour, en lisant un post, j'ai fait la jolie découverte du BreakIterator pour segmenter un texte.

    Le premier problème c'est qu'on peut pas mettre tout un fichier dans le Donc je l'ui envoie ligne par ligne.

    Le deuxième c'est qu'il me faut une boucle d'arrêt et un des moyens simples serait de savoir l'offset de fin du fichier, car je gère les offsets de chaque mots du coup je sais ou j'en suis.

    Mais je sais pas comment on peut savoir l'offset de fin de fichier ?

    Merci d'avance

    -Fanz-

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Comment tu parcours ton fichier ? Tu pourrais nous montrer le code ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    En fait j'ai trouvé
    j'avais déjà une méthode je le savais pas, je travaille sur une apply déjà existante à l'origine.

    Maintenant le problème c'est que mes offsets sont pas bon car quand je clique sur un mot je récupère un bout de phrase dans lequel il apparaît, mais c'est pas le bon bout.....

    Voilà mon code pour la segementation :
    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
    public void segmentByBreak() throws IOException 
    { 	
     
    	BreakIterator boundary = BreakIterator.getWordInstance();
    	FileIn fi = new FileIn(this.rsot.getListOfTexts().elementAt(0).elementToStringForFile(),RandomSetOfTexts.encoding);
    	String lineBuffer=null;	
    	rsot.initSeqFile(0);
    	int position=rsot.currentOffsetBasis; 
    	//saut du bom
    	int bom=rsot.currentOffsetBasis-rsot.currentTextBeginning;
    	if (bom>0)fi.readNChar(bom);	
     
    	try 
    	{ 
    		while(position<rsot.length())
    		{ 
    			lineBuffer=fi.readLine(); 
    	        boundary.setText(lineBuffer);
    	        addEachForward(boundary, lineBuffer,position);
     
    			if(lineBuffer==null 
    					||position==(Util.lengthInBytes(lineBuffer)))
    			{  
    				lineBuffer=fi.readLineWithCount();
     
    			} 	
    			position+=lineBuffer.length();
    			System.out.println(position+"  "+rsot.length());
    			//if(position ==196072)break;
    		}  
    	}
    Et voici celle ou je traite chaque ligne :
    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
    private  void addEachForward(BreakIterator boundary, String source, int pos) {
        int start = boundary.first(),posBegin= 0,posEnd=0,posBeginWord=0,posEndWord=0;
        String word = null,tmp = null;
        StringTokenizer st;
        String delim = "?.,;':- ()[]_=+*/!\\\"%¡";
        for (int end = boundary.next();end != BreakIterator.DONE;start = end, end = boundary.next()) 
        {
        	word =source.substring(start,end);
        	posEnd = pos+boundary.current() ;
        	posBegin = posEnd-word.length() ;
        	if(!word.equals("null"))
        	{
        		st = new StringTokenizer(word,delim);
        		while(st.hasMoreTokens())
        		{
        			tmp = st.nextToken().trim();
        			if(tmp.length()!=0)//&& !tmp.equals("?"))//delim.indexOf(tmp)==-1)
        			{
        				posBeginWord=posBegin+word.indexOf(tmp);
        				posEndWord= posBeginWord+tmp.length() ;
        				System.out.println(tmp);
        				copeWithWordByBreak(tmp, new OffsetPair(posBeginWord,posEndWord));
        			}
        		}
        	}
        }
    }

Discussions similaires

  1. afficher du texte
    Par Mau dans le forum OpenGL
    Réponses: 10
    Dernier message: 24/06/2003, 15h31
  2. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 12h06
  3. combobox->text
    Par clovis dans le forum C++Builder
    Réponses: 18
    Dernier message: 21/06/2002, 15h43
  4. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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