Supprimer mots vides
Fermé
noussa90
-
3 juil. 2013 à 03:36
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 30 juil. 2013 à 18:59
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 30 juil. 2013 à 18:59
A voir également:
- Supprimer mots vides
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Supprimer mot de passe windows 10 - Guide
- Supprimer pub youtube - Accueil - Streaming
- Impossible de supprimer un fichier - Guide
7 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 3/07/2013 à 05:51
Modifié par KX le 3/07/2013 à 05:51
phrase.replaceAll("et|de|que|...","");La confiance n'exclut pas le contrôle
Oui je connais cette méthode mais les mots vides c'est tout un dictionnaire! (Il y'a aussi les pronoms, les déterminants, en, ...) Je vais pas m'amuser à lister ces mots dans la méthode replaceAll, je ne pense pas que c'est la meilleure façon de faire.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
3 juil. 2013 à 17:33
3 juil. 2013 à 17:33
Détrompes toi, la chaîne de caractères utilisée pour la méthode replaceAll est ensuite décomposée pour former une expression régulière ce qui rend la méthode extremement efficace pour ce genre de traitements. Bien meilleur que si tu parcourais un à un chaque déterminant pour le comparer à ton dictionnaire.
En plus ton dictionnaire ne change probablement jamais donc tu peux construire une fois pour toute (au début du programme) la chaîne de caractères, et ensuite l'utiliser. C'est là la meilleure méthode mais bien sûr je ne dis pas de taper à la main cette liste de mots vides ce qui serait effectivement idiot...
En plus ton dictionnaire ne change probablement jamais donc tu peux construire une fois pour toute (au début du programme) la chaîne de caractères, et ensuite l'utiliser. C'est là la meilleure méthode mais bien sûr je ne dis pas de taper à la main cette liste de mots vides ce qui serait effectivement idiot...
J'ai pu créer une liste de mots vide en français. Elle est donnée comme suit:
elle
il
a
afin
ai
ainsi
ais
ait
alors
après
as
assez
au
aucun
aucune
auprès
auquel
auquelles
auquels
auraient
aurais
aurait
aurez
auriez
aurions
aurons
auront
aussi
aussitôt
autre
autres
aux
avaient
avais
avait
avant
avec
avez
aviez
avoir
avons
ayant
beaucoup
c'
car
ce
ceci
cela
celle
celles
celui
cependant
certes
ces
cet
cette
ceux
chacun
chacune
chaque
chez
cinq
comme
d'
d'abord
dans
de
dehors
delà
depuis
des
dessous
dessus
deux
deça
dix
doit
donc
dont
du
durant
dès
déjà
elle
elles
en
encore
enfin
entre
er
est
est-ce
et
etc
eu
eurent
eut
faut
fur
hormis
hors
huit
il
ils
j'
je
jusqu'
l'
la
laquelle
le
lequel
les
lesquels
leur
leurs
lors
lorsque
lui
là
m'
mais
malgré
me
melle
mes
mm
mme
moi
moins
mon
mr
même
mêmes
n'
neuf
ni
non-
nos
notamment
notre
nous
néanmoins
nôtres
on
ont
ou
où
par
parce
parfois
parmi
partout
pas
pendant
peu
peut
peut-être
plus
plutôt
pour
pourquoi
près
puisqu'
puisque
qu'
quand
quant
quatre
que
quel
quelle
quelles
quelqu'
quelque
quelquefois
quelques
quels
qui
quoi
quot
s'
sa
sans
se
sept
sera
serai
seraient
serais
serait
seras
serez
seriez
serions
serons
seront
ses
si
sien
siennes
siens
sitôt
six
soi
sommes
son
sont
sous
souvent
suis
sur
t'
toi
ton
toujours
tous
tout
toutefois
toutes
troiw
tu
un
une
unes
uns
voici
voilà
vos
votre
vous
vôtres
y
à
ème
étaient
étais
était
étant
étiez
étions
êtes
être
afin
ainsi
alors
après
aucun
aucune
auprès
auquel
aussi
autant
aux
avec
car
ceci
cela
celle
celles
celui
cependant
ces
cet
cette
ceux
chacun
chacune
chaque
chez
comme
comment
dans
des
donc
donné
dont
duquel
dès
déjà
elle
elles
encore
entre
étant
etc
été
eux
furent
grâce
hors
ici
ils
jusqu
les
leur
leurs
lors
lui
mais
malgré
mes
mien
mienne
miennes
miens
moins
moment
mon
même
mêmes
non
nos
notre
notres
nous
notre
oui
par
parce
parmi
plus
pour
près
puis
puisque
quand
quant
que
quel
quelle
quelque
quelqu'un
quelques
quels
qui
quoi
sans
sauf
selon
ses
sien
sienne
siennes
siens
soi
soit
sont
sous
suis
sur
tandis
tant
tes
tienne
tiennes
tiens
toi
ton
tous
tout
toute
toutes
trop
très
une
vos
votre
vous
étaient
était
étant
être
Pour éliminer ces mots vides, je dois parcourir ma requête (étant déjà décomposée en mots) et comparer chaque mot composant la requête à tout les mots vide de la liste. Si il existe, on le supprime. Ma question est comment je vais programmé cette liste en Java.
Merci à vous.
elle
il
a
afin
ai
ainsi
ais
ait
alors
après
as
assez
au
aucun
aucune
auprès
auquel
auquelles
auquels
auraient
aurais
aurait
aurez
auriez
aurions
aurons
auront
aussi
aussitôt
autre
autres
aux
avaient
avais
avait
avant
avec
avez
aviez
avoir
avons
ayant
beaucoup
c'
car
ce
ceci
cela
celle
celles
celui
cependant
certes
ces
cet
cette
ceux
chacun
chacune
chaque
chez
cinq
comme
d'
d'abord
dans
de
dehors
delà
depuis
des
dessous
dessus
deux
deça
dix
doit
donc
dont
du
durant
dès
déjà
elle
elles
en
encore
enfin
entre
er
est
est-ce
et
etc
eu
eurent
eut
faut
fur
hormis
hors
huit
il
ils
j'
je
jusqu'
l'
la
laquelle
le
lequel
les
lesquels
leur
leurs
lors
lorsque
lui
là
m'
mais
malgré
me
melle
mes
mm
mme
moi
moins
mon
mr
même
mêmes
n'
neuf
ni
non-
nos
notamment
notre
nous
néanmoins
nôtres
on
ont
ou
où
par
parce
parfois
parmi
partout
pas
pendant
peu
peut
peut-être
plus
plutôt
pour
pourquoi
près
puisqu'
puisque
qu'
quand
quant
quatre
que
quel
quelle
quelles
quelqu'
quelque
quelquefois
quelques
quels
qui
quoi
quot
s'
sa
sans
se
sept
sera
serai
seraient
serais
serait
seras
serez
seriez
serions
serons
seront
ses
si
sien
siennes
siens
sitôt
six
soi
sommes
son
sont
sous
souvent
suis
sur
t'
toi
ton
toujours
tous
tout
toutefois
toutes
troiw
tu
un
une
unes
uns
voici
voilà
vos
votre
vous
vôtres
y
à
ème
étaient
étais
était
étant
étiez
étions
êtes
être
afin
ainsi
alors
après
aucun
aucune
auprès
auquel
aussi
autant
aux
avec
car
ceci
cela
celle
celles
celui
cependant
ces
cet
cette
ceux
chacun
chacune
chaque
chez
comme
comment
dans
des
donc
donné
dont
duquel
dès
déjà
elle
elles
encore
entre
étant
etc
été
eux
furent
grâce
hors
ici
ils
jusqu
les
leur
leurs
lors
lui
mais
malgré
mes
mien
mienne
miennes
miens
moins
moment
mon
même
mêmes
non
nos
notre
notres
nous
notre
oui
par
parce
parmi
plus
pour
près
puis
puisque
quand
quant
que
quel
quelle
quelque
quelqu'un
quelques
quels
qui
quoi
sans
sauf
selon
ses
sien
sienne
siennes
siens
soi
soit
sont
sous
suis
sur
tandis
tant
tes
tienne
tiennes
tiens
toi
ton
tous
tout
toute
toutes
trop
très
une
vos
votre
vous
étaient
était
étant
être
Pour éliminer ces mots vides, je dois parcourir ma requête (étant déjà décomposée en mots) et comparer chaque mot composant la requête à tout les mots vide de la liste. Si il existe, on le supprime. Ma question est comment je vais programmé cette liste en Java.
Merci à vous.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
19 juil. 2013 à 18:52
19 juil. 2013 à 18:52
J'ai déjà répondu à cette question, le plus efficace c'est de faire une expression régulière en mettant des "|" entre chaque mot, puis faire un replaceAll, c'est plus rapide que "comparer chaque mot composant la requête à tout les mots vide de la liste. "
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
La liste des mots vide est assez longue pour être un paramètre de la méthode replaceAll.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
20 juil. 2013 à 12:16
20 juil. 2013 à 12:16
Relis ma réponse #3 et puis si tu veux absolument contredire toute l'aide que l'on te propose, que ce soit dans cette discussion ou dans les autres, et bien débrouilles toi tout seul !
Non, je ne vous contredis pas c'est juste que j'ai mal compris votre réponse et que je ne trouve toujours pas la solution à mon problème. Sinon, je vous remercie tous pour tous vos réponses surtout vous KX. Vous étiez vraiment très utile pour moi.
"expression régulière"? Pourriez-vous m'éclaircir votre idée SVP?
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
30 juil. 2013 à 18:59
30 juil. 2013 à 18:59
Une expression régulière ou expression rationnelle (cf. Wikipedia est une manière de faire des recherches rapides grâce à une optimisation du traitement.
Par exemple si tu as à tester les mots "aaa","aab","aba";"abb","baa","bab","bba","bbb" alors on peut on peut la représenter avec un arbre de la manière suivante :
Par exemple si on veut savoir si "abc" est dans l'arbre, il suffit de regarder le première caractère "a" et de se diriger sur la bonne de gauche, on élimine ainsi déjà la moitié des tests, en effet il sera inutile de tester "baa","bab","bba","bbb" alors que l'on sait que le mot commence par "a".
De même avec le deuxième caractère, on élimine la moitié des restants : "aaa" et "aab" puisque le deuxième caractère est "b", il reste plus qu'à faire un seul test sur le "c" pour voir que "abc" n'est pas dans l'arbre.
Le nombre de tests nécessaires à effectuer est donc égal au nombre de caractères de la chaîne à chercher. C'est donc moins coûteux que de chercher à comparer tous les mots possibles les uns après les autres.
Remarque : la construction de l'arbre est une manière d'expliquer ce qui se passe, mais l'implémentation des expressions régulières utilisent plutôt la notion d'automates, pour permettre de traiter un plus grand nombre de cas possibles.
Par exemple : cette expression régulière (simplifiée) permet de vérifier qu'une chaîne de caractères est une adresse email correcte ou non :
Par exemple si tu as à tester les mots "aaa","aab","aba";"abb","baa","bab","bba","bbb" alors on peut on peut la représenter avec un arbre de la manière suivante :
/\ / \ / \ / \ / \ / \ a b / \ / \ / \ / \ a b a b / \ / \ / \ / \ a b a b a b a bOn peut alors se déplacer sur l'arbre pour savoir si un mot appartient à l'arbre ou non sans avoir à tester toute la liste des mots.
Par exemple si on veut savoir si "abc" est dans l'arbre, il suffit de regarder le première caractère "a" et de se diriger sur la bonne de gauche, on élimine ainsi déjà la moitié des tests, en effet il sera inutile de tester "baa","bab","bba","bbb" alors que l'on sait que le mot commence par "a".
De même avec le deuxième caractère, on élimine la moitié des restants : "aaa" et "aab" puisque le deuxième caractère est "b", il reste plus qu'à faire un seul test sur le "c" pour voir que "abc" n'est pas dans l'arbre.
Le nombre de tests nécessaires à effectuer est donc égal au nombre de caractères de la chaîne à chercher. C'est donc moins coûteux que de chercher à comparer tous les mots possibles les uns après les autres.
Remarque : la construction de l'arbre est une manière d'expliquer ce qui se passe, mais l'implémentation des expressions régulières utilisent plutôt la notion d'automates, pour permettre de traiter un plus grand nombre de cas possibles.
Par exemple : cette expression régulière (simplifiée) permet de vérifier qu'une chaîne de caractères est une adresse email correcte ou non :
[a-zA-Z][a-zA-Z0-9]*@[a-zA-Z][a-zA-Z0-9]*.[a-z]+