Compter les mots...

Le
Nicolas B.
Bonjour,

Il est possible dans Word de compter les mots d'un documents, mais le
problème, c'est qu'il considère comme un mot tout ce qui est délimité par
des espaces.
Ainsi, si je tape 'Comment ça va ?', il me compte 4 mots (le quatrième mot
est le point d'interrogation).

Je voudrais donc créer une macro permettant de compter les mots
"correctement", en utilisant la règle suivante :
un mot est la chaîne de caractères de lettres et/ou chiffres (0-9, a-z, A-Z
et toutes les lettres accentuées, majuscules ou minuscules) la plus longue
non coupée par d'autres caractères.

Voici quelques exemples pour mieux me faire comprendre (enlever les
apostrophes) :

'Ca va ?' : Une espace sépare les chaînes 'Ca' et 'va'. L'espace insécable
suivie du point d'interrogation n'est pas considérée comme un mot car ces
deux caractères ne font pas partie de ceux définissant un mot (chiffres,
lettres et lettres accentuées). On a donc ici au total 2 mots.

'Je n'arrive pas à compter les mots.' : La fonction de comptage de Word ne
compterait que 7 mots, alors que 'n'arrive' représente deux mots, d'après la
règle précédente : en effet, les deux chaînes de caractères sont coupées par
un caractère "parasite", l'apostrophe. Il y a donc 8 mots.


Je ne suis pas sûr d'avoir été clair :-)

Est-ce possible de programmer tout ça ?


Merci
--
Nicolas B.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry Fontenelle [MSFT]
Le #853031
Bonjour,

Effectivement, la fonction de comptage des mots dans Word
est pour le moment assez rudimentaire. Elle est
traditionnellement utilisée pour obtenir une approximation
quant au nombre de mots; tout le problème vient de la
définition de ce qu'on entend par mot, en fait (la
définition utilisée ici est effectivement "toute séquence
de caractères comprise entre deux espaces"; la majorité
des utilisateurs s'en satisfont et un raffinement du
comptage devrait alors prendre en compte la langue dans
laquelle le texte est rédigé, afin d'appliquer des
heuristiques différentes). Actuellement, l'outil est le
même pour toutes les langues, mais on peut effectivement
imaginer une version future qui serait plus raffinée (je
vais transmettre ces informations...).

Cela dit, le problème est plus complexe que vous ne le
décrivez ci-dessous; ce que vous ambitionnez de faire
revient à écrire un segmenteur de mots (ce qu'on appelle
en anglais un "Word Breaker", ou un "tokenizer"). Le
problème de l'apostrophe est intéressant: elle n'est pas
toujours un caractère parasite: dans l'exemple cité, elle
l'est (comme pour m', n', s', d', qu'...). Mais vous serez
d'accord avec moi que vous ne souhaiteriez pas couper le
mot "aujourd'hui" en deux, même s'il contient une
apostrophe (idem pour prud'homme, prud'hommal,
presqu'île...). L'apostrophe fait partie intégrante de ces
mots.
Un autre problème est celui qui concerne le traitement du
trait d'union. Dans la phrase

"Le match France-Espagne était beau."

on devrait compter 6 mots (France et Espagne étant des
mots distincts). Idem pour "les relations employeurs-
employés". Pourtant, il existe des milliers de mots
comportant un trait d'union que l'on souhaite probablement
compter comme un seul mot (tire-bouchon, coupe-gorge,
presse-papier...). N'oublions pas non plus les clitiques,
ces mots qu'on attache à la fin de certains autres mots
avec un trait d'union (-ci dans "cette maison-ci"; -en
dans "prends-en"; -moi et -là dans "donne-moi ce livre-
là"). Je présume qu'on souhaiterait les considérer comme
des mots distincts aussi. Je ne parle pas des ambiguïtés
pour le mot "rendez-vous" (rendez-vous = 1 mot si c'est un
nom commun, 2 mots si c'est le verbe "se rendre" à
l'impératif). Que faire aussi de mots comme "hors-
d'oeuvre" (votre heuristique le couperait après
l'apostrophe, alors qu'on souhaite probablement ne compter
qu'un seul mot).

Comme vous le voyez, il n'est pas impossible de régler ce
problème (nous le faisons pour développer des correcteurs
orthographiques et grammaticaux, entre autres
applications), mais cela nécessite généralement pas mal de
connaissances linguistiques qu'il faut inculquer à
l'ordinateur.

J'espère que vous trouverez ces quelques notes stimulantes
et pas décourageantes!

Bien à vous, et bon courage!

Thierry

Thierry Fontenelle [MSFT]
Microsoft Natural Language Group


-----Original Message-----
Bonjour,

Il est possible dans Word de compter les mots d'un
documents, mais le

problème, c'est qu'il considère comme un mot tout ce qui
est délimité par

des espaces.
Ainsi, si je tape 'Comment ça va ?', il me compte 4 mots
(le quatrième mot

est le point d'interrogation).

Je voudrais donc créer une macro permettant de compter
les mots

"correctement", en utilisant la règle suivante :
un mot est la chaîne de caractères de lettres et/ou
chiffres (0-9, a-z, A-Z

et toutes les lettres accentuées, majuscules ou
minuscules) la plus longue

non coupée par d'autres caractères.

Voici quelques exemples pour mieux me faire comprendre
(enlever les

apostrophes) :

'Ca va ?' : Une espace sépare les chaînes 'Ca' et 'va'.
L'espace insécable

suivie du point d'interrogation n'est pas considérée
comme un mot car ces

deux caractères ne font pas partie de ceux définissant un
mot (chiffres,

lettres et lettres accentuées). On a donc ici au total 2
mots.


'Je n'arrive pas à compter les mots.' : La fonction de
comptage de Word ne

compterait que 7 mots, alors que 'n'arrive' représente
deux mots, d'après la

règle précédente : en effet, les deux chaînes de
caractères sont coupées par

un caractère "parasite", l'apostrophe. Il y a donc 8 mots.


Je ne suis pas sûr d'avoir été clair :-)

Est-ce possible de programmer tout ça ?


Merci
--
Nicolas B.


.



Publicité
Poster une réponse
Anonyme