nombre de mot dans un texte?
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

nombre de mot dans un texte?



  1. #1
    invitef39b2034

    Wink nombre de mot dans un texte?


    ------

    Salut tout le monde

    Est ce qu'il y a une méthode pour compter le nombre de mot dans un texte?

    (le texte peut être avec n'importe quelle langue).

    Merci beaucoup

    -----

  2. #2
    invite2f4443ca

    Re : nombre de mot dans un texte?

    Heu, avec quel outil, quel logiciel ?

    Une méthode simple valable avec les langages standards (php, perl etc.) consiste à mesurer la longueur du texte, puis retirer tous les espaces (caractère ASCII 32) et mesurer la nouvelle longueur. Le nombre d'espaces correspond plus ou moins au nombre de mots moins un.

  3. #3
    invite2d7144a7

    Re : nombre de mot dans un texte?

    Bonjour,

    Supprimer les espaces est très loin de suffire : ponctuation, données numériques ...

  4. #4
    CM63

    Re : nombre de mot dans un texte?

    Bonsoir,

    Le mieux est d'utiliser la fonction split, qui existe dans beaucoup de langages, en spécifiant plusieurs séparateurs, et ensuite tu utilises la fonction (ou méthode) Count qui renvoie le nombre de mots.

    Existent en VB, Java, Python, etc.

    Bonne soirée.

    PS: Non! VB n'a rien a voir avec Vbulletin, c'est complètement c** ces info-bulles!!
    Dernière modification par CM63 ; 16/02/2014 à 20h52.
    Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

  5. A voir en vidéo sur Futura
  6. #5
    invitef39b2034

    Re : nombre de mot dans un texte?

    Merci pour vos réponses

    J'ai besoin d'une méthode simple.
    Est ce que vous connaisez une méthode avec DOS ou WORD ou MATLAB??

  7. #6
    JPL
    Responsable des forums

    Re : nombre de mot dans un texte?

    Cela fait longtemps que je n'ai plus Word mais il y a quelque part dans un menu une option qui donne les statistiques sur le document avec bien entendu le nombre de mots.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  8. #7
    CM63

    Re : nombre de mot dans un texte?

    Bonsoir,

    Avec Word, sous VBA, tu utilises Split et Count, comme je te l'ai dit. Il faut vérifier que Split existe sous VBA, mais je crois que oui, je ne peux pas faire l'essai car je n'ai plus le pack Office. Mais il faut fair quelque chose comme cela:

    a="Ceci est une phrase, avec des virgules, des points, et des blancs. Et voila." .

    S'il n'y a pas moyen de spécifier plusieurs séparateurs dans la fonction Split, il faut commencer par remplacer les virgules et les points par des blancs, par exemple :

    b =Replace(a,","," ")
    c =Replace(b,"."," ")

    Et ensuite, tu fais:

    Mots=Split(c," ")

    Mots sera un tableau de string dont tu peux obtenir le nombre de mots : Mots.Count .

    Il faut peut-être aussi supprimer les mots vides, apparus du fait que les virgules et les points sont suivis d'un blanc.

    Bonne soirée
    Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

  9. #8
    JPL
    Responsable des forums

    Re : nombre de mot dans un texte?

    Pourquoi faire simple quand on peut faire compliqué ?
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  10. #9
    invite8f1e9402

    Re : nombre de mot dans un texte?

    Bonjour tout le monde,

    Malheureusement, voici comment Word compte les mots dans son outil statistique :
    - les caractères de ponctuation "!" ":" ";" "?" comportant un point et un autre caractère comptent pour un mot, car ils doivent être précédés et suivis d'un espace
    - les tirets, guillemets et parenthèses comptent pour un mot, car ils doivent être précédés et suivis d'un espace
    - les caractères de ponctuation "," "." et les points de suspension "..." ne comptent pas, car ils ne doivent pas être précédés d'un espace
    - les apostrophes ne comptent pas : "qu'un" ne compte que pour un mot

    Voici ce que cela donne sur un célèbre texte de Daudet (99 mots) :

    Nom : daudet.jpg
Affichages : 271
Taille : 122,6 Ko

    Donc je partage l'avis de CM63 et ne vois pas de solution sérieuse en dehors d'un bonne macro qui va pouvoir éclater le texte sous la forme d'un tableau puis purger le tableau des mots indésirables (signes ponctuation précédés d'un espace insécable, articles, par exemple, etc.).

    C'est un pb qui est tout sauf simple et qu'on ne peut pas contourner lorsqu'on veut se fabriquer une moulinette pour établir la liste des mots clés d'un texte.

  11. #10
    invite936c567e

    Re : nombre de mot dans un texte?

    Citation Envoyé par CM63 Voir le message
    PS: Non! VB n'a rien a voir avec Vbulletin, c'est complètement c** ces info-bulles!!
    En effet. Et ça confirme mes craintes exprimées quand on avait demandé notre avis sur l'introduction de cette fonction sur le forum : on se retrouve souvent avec des liens sans intérêt ou sans rapport avec la signification voulue.

  12. #11
    albanxiii
    Modérateur

    Re : nombre de mot dans un texte?

    Bonjour,

    Voir la commande wc sous n'importe quel système unix (linux aussi, donc) : http://pwet.fr/man/linux/commandes/wc
    (wc = word count, et pas autre chose ).

    @+
    Not only is it not right, it's not even wrong!

  13. #12
    CM63

    Re : nombre de mot dans un texte?

    Bonjour,

    Citation Envoyé par PA5CAL Voir le message
    En effet. Et ça confirme mes craintes exprimées quand on avait demandé notre avis sur l'introduction de cette fonction sur le forum : on se retrouve souvent avec des liens sans intérêt ou sans rapport avec la signification voulue.
    Je partage ton avis. En revanche, ce serait bien qu'on puisse mettre des info-bulles personnalisées dans nos posts.

    Bonne journée.
    Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

  14. #13
    JPL
    Responsable des forums

    Re : nombre de mot dans un texte?

    Je viens de vérifier dans LibreOffice : même principe de comptage que pour Word.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  15. #14
    invite936c567e

    Re : nombre de mot dans un texte?

    Bonjour

    Voilà un bout de code écrit en C que j'ai utilisé pour compter les mots, et qui fonctionne pour les textes codés Unicode écrit avec les caractères latins.

    Les caractères de ponctuation, tirets, guillemets et parenthèses ne comptent pas pour un mot. Les apostrophes et les traits d'union sont pris en compte : « qu'un » compte pour deux mots, « coupe-choux » également.

    Il pourrait être étendu pour tenir compte d'autres langues (comme par exemple celles s'écrivant en cyrillique) ou modifié pour appliquer des règles de comptage différentes.

    Code:
    // Compte le nombre de mots
    // caractères Unicode latin étendu
    
    int nombreMots(short *strUnicode)
    {
      short c;
      int compte = 0;
      for (;;) {
        do {
          c = *strUnicode++;
          if (c==0)
            return compte;
        } while ( c<0x41 || c>0x5A && c<0x61 || c>0x7A
                 && c<0xc0 || c>0x2AF || c==0xD7 || c==0xF7 );
        compte++;
        do {
          c = *strUnicode++;
          if (c==0)
            return compte;
        } while ( c>=0x41 && c<=0x5A || c>=0x61 && c<=0x7A
                 || c>=0xc0 && c<=0x2AF && c!=0xD7 && c!=0xF7 );
      }
      return 0;
    }
    Pour ceux qui veulent le tester, voici son équivalent en Javascript.

    Il suffit de copier-coller le code suivant dans un éditeur de texte (type bloc-note) et de l'enregistrer en texte brut dans un fichier HTML (extension « .html ») pour pouvoir l'exécuter avec son navigateur web.

    Code HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Compter les mots</title>
    <script>
    //<!--
    function nombreMots(strUnicode)
    {
      var c;
      var compte = 0;
      var imax = strUnicode.length;
      var i = 0;
      for (;;) {
        do {
          if (i==imax)
            return compte;
          c = strUnicode.charCodeAt(i++);
        } while ( c<0x41 || c>0x5A && c<0x61 || c>0x7A
                 && c<0xc0 || c>0x2AF || c==0xD7 || c==0xF7 );
        compte++;
        do {
          if (i==imax)
            return compte;
          c = strUnicode.charCodeAt(i++);
        } while ( c>=0x41 && c<=0x5A || c>=0x61 && c<=0x7A
            || c>=0xc0 && c<=0x2AF && c!=0xD7 && c!=0xF7 );
      }
    }
    
    function compter()
    {
      document.getElementById("compte").value = nombreMots(document.getElementById("texte").value);
    }
    //-->
    </script>
    </head>
    <body>
    <textarea id="texte" cols="80" rows="10" autofocus=""></textarea><br/>
    <input type="button" onclick="compter();" value="Compter">
    <input type="text" id="compte" size="4"> mots
    </body>
    </html>

  16. #15
    invite8f1e9402

    Re : nombre de mot dans un texte?

    Très bon boulot Pa5cal. J'ai testé le Javascript et tombe à 99,99% d'accord avec votre algo.

    Le poil de mouche vient des tirets. Je ne considèrerais pas le mot "sous-préfet" comptant pour deux mots, bien qu'il en compte deux, et m'en explique : le problème des tirets de césure en fin de phrase est d'une épouvantable complexité en typographie (césures automatiques, conditionnelles, etc.). Il y a aussi la césure "virtuelle" (Unicode) et, cerise sur le gâteau, sous Word on a en plus le "tiret insécable" (Ctrl+Maj+tiret du 6). Si la justification impose de couper un mot en fin de ligne, par exemple le mot "céré-
    monie", vous allez compter deux mots pour un. Donc autant laisser tomber les tirets. Naturellement, ce n'est que mon point de vue.
    Mais un grand bravo pour tout le reste, car le problème était loin d'être simple.

  17. #16
    invite936c567e

    Re : nombre de mot dans un texte?

    Une solution occupant une vingtaine de lignes de code ne peut bien évidemment pas résoudre un problème dont la complexité est souvent très sous-estimée. C'est d'ailleurs la raison pour laquelle j'évoquais la possibilité de le modifier pour prendre d'autre règles de comptage en considération.

    J'ai sous le coude d'autres solutions bien plus poussées, mais qui requièrent l'usage d'un dictionnaire lié à la langue (contrairement à ce que demandais merins) ou qui imposent que le texte soit conforme à certaines règles typographiques.


    Pour info, si l'on souhaite juste compter pour un seul mot tous les termes composés contenant un tiret (caractère 2Dh), il suffit d'ajouter au code les expressions suivantes :
    Code:
        } while ( c!=0x2D && c<0x41 || c>0x5A && c<0x61 || c>0x7A
                 && c<0xc0 || c>0x2AF || c==0xD7 || c==0xF7 );
    Code:
        } while ( c==0x2D || c>=0x41 && c<=0x5A || c>=0x61 && c<=0x7A
            || c>=0xc0 && c<=0x2AF && c!=0xD7 && c!=0xF7 );
    On pourrait également tenir compte de la même manière des autres codes représentant un tiret (2013h, 2212h, FE63h, FF0Dh ...).



    Mais il se pose également le problème du codage des caractères, car tous les logiciels ne traitent pas forcément les textes sous leur forme Unicode.

    En effet, on trouve encore beaucoup de cas où ce codage est réalisé sur un seul octet (ASCII, ISO-8859-x, Mac OS Roman, ...) ou sur une séquence de longueur variable d'octets (HTML, UTF-8, ...).

    S'assurer que les codes correspondent bien aux caractères typographiques auxquels on pense est déjà une étape qu'il n'est pas évident de franchir.

Discussions similaires

  1. nombre colonne dans un fichier texte
    Par invite56967855 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 23/12/2013, 21h29
  2. Dans WORD, texte horizontal + texte vertical comment ?
    Par invite8832ae39 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 24/01/2010, 07h28
  3. Nombre de décimales correctes dans un estimation du nombre pi
    Par Seirios dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 29/10/2009, 23h42
  4. Convertir nombre en texte avec Excel
    Par invite2150efa6 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 01/01/2008, 19h58
  5. Texte dans matlab
    Par inviteb6d74d9b dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/03/2006, 16h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...