Méthode java troncature de terme

Fermé
cilasasuki Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 11 janvier 2015 - 21 mai 2012 à 13:47
 c - 29 mai 2012 à 09:05
Bonjour,

je dois indexer un document et pour se faire j'ai tout d'abord extrais les termes en reconnaissant les séparateurs (,;...) et puis je teste si le mot est vide (les articles le la les, les prépositions ...etc sont des mots vides)et s'il a plus de 7caractères je dois le tronquer puis le rendre minuscule,c'est à ce niveau que je suis bloquée


je cherche une méthode java qui permet de tronquer un terme ayant une longueur>7 caractères
A voir également:

1 réponse

Je sais pas si c'est vraiment ce que tu cherches, mais tu peux "tronquer" en utilisant la méthode substring, non ?

myString = myString.substring(0,7);

En utilisant ça, tu devrais remplacer le contenu initial de myString par ses 7 premiers caractères. En utilisant une structure de contrôle sur la taille de ta chaîne, ça exécute le traitement que tu souhaites.

En espérant avoir pu t'aider ! :)
2
cilasasuki Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 11 janvier 2015
21 mai 2012 à 16:28
en fait, c'est tout un processus d'indexation, je ne peux pas toujours savoir quels sont les sept premiers caractères, cet algorithme que je dois faire prend en entrée un terme extrait d'un document et puis s'il n'est pas vide il le tronque si seulement s'il a plus de sept caractères puis le rend minuscule,le résultat (tous les termes de document qui passent par ces étapes) constituerons l'index de ce document. c'est le processus d'indexation de système de recherche d'information.j'ai n'ai aucune notion sur java c'est pour cette raison j'arrive pas à continuer la programmation.
j'éspère que vous avez compris et aussi ça me ferais plaisir si vous m'aidiez merci d'avance
0
Je pense que ce bout de code devrait répondre à ton problème pour tronquer une chaîne faisant + de 7 caractères et la mettre en minuscules.
myString correspond dans ton cas au terme à indexer, peu importe si tu connais sa longueur ou non :

if (myString.length() > 7)
{
myString = myString.substring(0,7); // On tronque le terme
myString = myString.toLowerCase(); // On met le terme en minuscules
}

Je te renvoie pour plus de détails à l'API Java concernant les traitements sur des chaînes de caractères : http://docs.oracle.com/javase/6/docs/api/
0
cilasasuki Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 11 janvier 2015
22 mai 2012 à 14:25
salut, merci pour votre aide ,la moitié de problème est résolu, l'étape qui précède la troncature de mot et transformation en minuscule de terme, et de tester si le terme est vide ou non, donc il faut tout d'abord construire la stoplist qui contient tous les mots ou termes courants (non significatif),
ainsi dans la phrase:" le processus d'indexation de document " on ne prend que processus indexation et document, ces derniers sont repérés après avoir été comparés à une liste de mots vides(stoplist), car vers la fin on attribue à ces termes des poids qui indique leurs importance dans le document,
ce poids est calculé en se basant sur le nombre de fois ou ce terme est répété dans le document c'est à dire la fréquence de terme dans le document, généralement les article les prépositions et les prenons se répètent plusieurs fois dans n'importe quel document ;
et donc ils ne peuvent pas à représenter ni distinguer un document par rapport aux autres documents,
c'est pour cette raison il ne faut pas les prendre en considération,je voudrais que vous m'aidiez à la construction de la stoplist, et si par exemple en me propose une stopliste définie comment je peux comparer les termes à cette liste, on m' a proposé d'insérer cette liste dans un tableau,


en résumé je dois programmer les instructions suivantes:
string terme;
terme= getNextteme ; (qu'un autre doit programmer, elle qui permet d'extraire un terme de document ).
insérer la stoplist dans un tableau ;
parcourir le tableau en comparant le terme aux éléments de ce dernier.
si ce terme n'appartient pas à cette liste alors la suite est le code que vous m'avez donné.
je vous remercie encore une autre fois.
0
Je ne suis pas une experte en temps d'exécution des traitements, mais dans ton cas j'utiliserais plutôt une liste qu'un tableau pour faciliter le parcours en terme de code.
Tu oublies de donner une information importante : d'où provient ta stoplist ? D'un traitement informatique dans le programme (et donc dans ce cas, d'une structure Java), ou d'un fichier ?

Je te donne tout de même des indications sur les deux structures :

Tu peux déclarer une liste de String (List<String> list = new ArrayList<String>() ), puis ajouter les termes en utilisant la méthode add, que tu utilises dans une boucle jusqu'à insérer le dernier terme de la stoplist. À toi de voir comment détecter la fin de la stoplist, selon sa provenance.
Ensuite, pour vérifier l'appartenance d'un terme à cette liste, tu utilise la méthode indexOf(tonTerme), qui te renvoie soit sa position dans la liste (si le terme y appartient), soit la valeur "-1" s'il n'y appartient pas (c'est le cas qui t'intéresse). Tu n'as plus qu'à intercepter la valeur de retour, tester si elle est égale à -1, puis tu appliques le traitement que je t'ai donné.

Avec un tableau, tu utilises une boucle for (dont la condition de sortie dépend de la provenance de la stoplist) pour le remplir après l'avoir initialisé avec le nombre d'éléments de la stoplist. C'est un bémol par rapport à la structure List<String> si tu n'as pas de moyen évident de connaître le nombre d'éléments.
Pour vérifier l'appartenance d'un terme à la stoplist, tu as deux manières de faire : avec un while ou un for.
boolean appartientStoplist = false;
for (int i = 0; i < tonTableauStoplist.size() && appartientStoplist == false; i++)
{
if ( tonTableauStoplist[i] == tonTerme)
{
appartientStoplist = true;
}
}
Tu testes ensuite la valeur de appartientStoplist pour déterminer si tu poursuis le traitement ou non.

C'est le même principe avec le while, tu utilises comme condition de parcours tonTableauStoplist[i] == tonTerme (après avoir initialisé i bien évidemment), tu incrémentes. A la sortie de la boucle, tu testes la valeur de i par rapport au nombre d'éléments de la stoplist.
0
cilasasuki Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 11 janvier 2015
23 mai 2012 à 10:30
salut, je crois que les choses commence à s'éclaircir je vous remercie, je vais essayer avec les deux méthodes et prendre l'avis de mon promoteur.merci
0