Tokenisation des mot

Fermé
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018 - 3 nov. 2017 à 16:00
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018 - 3 nov. 2017 à 20:20
Bonjour,
je voulait mettre en place une methode qui permet de decouper des phrases a partire d'une fichier lus par programme, pour cela la methode recoit en parametre une fichier et le lu et decoupe les phrases en mot. le probleme c'est ma methode me fait perdre certains caractere que j'aurais dans la suite. les caracteres perdus sont le virgules, points-virgules et l'apostrophe. mais je veut pas cela, je veux meme avoir ces caracteres, alors ceux que je veux c'est que les information lu et tokeniser y compris le caratere, la meme methode StringTokenizer elimine les informations passé en parametre et tokenise selon ces carateres.
voici la methode
public static void lectureCorpus(final File file) throws IOException {
		fr = new FileReader(file);
		br = new BufferedReader(fr);
		String ligne = br.readLine();

		// comme il ya pas grand nombre de ligne lire, on a pas besoin la boucle
		// while
		System.out.println("-----------------lecture du fichier exemple.fr ou le corpus---------------------------");
		System.out.println(ligne);
		System.out.println("-----------apres la tokenisation----------");
		// tokenisation du corpus
		StringTokenizer tk = new StringTokenizer(ligne, ",'!! ");

		//
		List<String> listString = new ArrayList<String>();
		while (tk.hasMoreTokens()) {
			//listString.add(tk.nextToken());
                         System.out.println(tk.nextToken());
		}
		System.out.println("la taille de la liste de tokenisé " + listString.size());
		//String n = traduction(listString);

		// fermeture du fichier
		closeFichier();

	}

le resultat que ca donne:
j
achète
à
bas
prix
tout
compte
fait
c
est
bien
moins
cher
voila le resultat ca donne ca, mais les carateres tel que ,;!! sont perdu mais je veux pas, si quelqu'un a compris mon probleme essayer de m'aider SVP. MERCI D AVANCE


1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
3 nov. 2017 à 16:15
Bonjour,

StringTokenizer est dépréciée depuis Java 4 (sorti en 2002 !!) et ne devrait plus être utilisée, à la place il faut considérer les expressions régulières.
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
0
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018
3 nov. 2017 à 17:28
pouvez-vous vous expliquez d'avantage? parce que là j'arrive pas vous comprendre
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018
3 nov. 2017 à 17:34
Il faudrait refaire ton code sans le StringTokenizer mais utiliser à la place des expressions régulières (package java.util.regex) telles que la classe Pattern.

https://cyberzoide.developpez.com/tutoriels/java/regex/
0
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018
3 nov. 2017 à 20:01
BOnsoir j'avais utiliser aussi et je reutilise encore pour vous montrer le resultat:
la fonction:
// la lecture du corpus
	public static void lectureCorpus(final File file) throws IOException {
		fr = new FileReader(file);
		br = new BufferedReader(fr);
		String ligne = br.readLine();

		// comme il ya pas grand nombre de ligne lire, on a pas besoin la boucle
		// while
		System.out.println("-----------------lecture du fichier exemple.fr ou le corpus---------------------------");
		System.out.println(ligne);
		System.out.println("-----------apres la tokenisation----------");
		String[] lineTk = null;
		lineTk = ligne.split("\\s");
		
		for(String str:lineTk){
			System.out.println(str);
		}
		// tokenisation du corpus
//		StringTokenizer tk = new StringTokenizer(ligne, ",'!! ");
//
//		//
//		List<String> listString = new ArrayList<String>();
//		while (tk.hasMoreTokens()) {
//			//listString.add(tk.nextToken());
//			System.out.println(tk.nextToken());
//		}
//		System.out.println("la taille de la liste de tokenisé " + listString.size());
		//String n = traduction(listString);

		// fermeture du fichier
		closeFichier();

	}

le resultat

j'achète
à
bas
prix
tout
compte
fait,
c'est
bien
moins
cher!!

mais le probleme avec ce methode je parviendrait pas faire la traduction a la suite, vu que les caractere et les mots sont collée les uns des autres, et la recherche ne se ferra pas tant que les caracteres sont collés.
0
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018
3 nov. 2017 à 20:20
c'est a dire que par exemple, il ya ca j'achète dans le text, il ya un apostrophe qui se trouve et j'aurais besoin ca aussi, je sais pas comment l'extraire et les autrres aussi comme !!, tout
0