IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Y-a-t-il plus rapide pour enlever les mots vides ?


Sujet :

Delphi

  1. #21
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour CapJack,

    Au collège j'ai appris qu'une fréquence est un nombre d'événements par unité de temps.

    Par contre ce n'est pas interdit d'utiliser "fréquence" pour désigner la "proportion" de quelque chose qui se répète dans un intervalle différent d'une durée, comme par exemple x %.

    Quant à la différence entre un nombre d'occurrences, d'apparitions, ou d'événements ça semble clairement kif-kif avec un "Effectif" qui est un nombre.

    D'où fréquence = nombre d'occurrences par unité de quelque chose.

    Reste à savoir comment Bruno13 les calcule car cette "unité de quelque chose" peut, dans les étapes suivantes, descendre jusqu'à la phrase à moins qu'il se contente de les comptabiliser simplement sur l'ensemble de tout un texte.
    A+

    P.S : Au fait, dans l'autre discussion sur "comment enlever rapidement les accents" j'ai suggéré que les deux meilleures solutions soient intégrées dans la Faq mais comme les solutions en question ne viennent pas de moi, qui n'en ai fait que des tests comparatifs de vitesse sur une même bécane, je laisse bien entendu à César ce qui appartient à César. Comme en plus les codes en question sont adaptables pour faire tous types de conversions (tout en majuscules, tout en minuscules, avec ou sans accents, etc) ils présentent donc un intérêt plus large que l'enlèvement des accents ... et comme en plus tous les efforts ont été réunis pour gratter jusqu'aux dernière millisecondes ce serait dommage de ne pas les mettre dans la Faq.

  2. #22
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    A Bruno13,

    Au fait, dans la function CreerListeSansMotNiChaineVide() : TStringList; il serait judicieux de remplacer Mot:=ListeOrdreIni[i]; par Mot:=Trim(ListeOrdreIni[i]); pour avoir la certitude que les lignes-vides du type plusieurs espaces ' ' soient également éliminées, ... à moins que ceci ait été fait en amont ?
    A+

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Salut Gilbert et Capjack,

    Tout d'abord pour répondre à Gilbert, je suis descendu de 7 secondes à moins d'une seconde pour un texte d'environ 26 000 mots ! (AMD Athlon 1.4GHz) donc tu peux facilement imaginer mon sourrire

    Pour ce qui est du reste, je m'explique un peu mieux :

    Pour l'occurrence, moi c'est le nombre de fois où apparait le mot dans l'ensemble du corpus. Le corpus étant l'ensemble des pages à analyser. Attention : si le mot apparait 4 fois dans la même page, cela fait toujours une occurrence de 1.

    Pour la fréquence, c'est un comptage du nombre de fois où apparait le mot dans le corpus. Si le mot apparait 4 fois dans une page cela fait Freq = 4.

    Je vais surement écrire un nouveau post car ce point là est un peu plus compliqué pour moi à optimiser car cela touche à la structure de mes objets.
    Bref rdv au prochain post.

  4. #24
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Citation Envoyé par Gilbert Geyer
    A Bruno13,

    Au fait, dans la function CreerListeSansMotNiChaineVide() : TStringList; il serait judicieux de remplacer Mot:=ListeOrdreIni[i]; par Mot:=Trim(ListeOrdreIni[i]); pour avoir la certitude que les lignes-vides du type plusieurs espaces ' ' soient également éliminées, ... à moins que ceci ait été fait en amont ?
    A+
    Salut Gilbert, c'est fait en amont

    merci pour l'info
    Amicalement,
    Bruno

  5. #25
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-bonjour,
    ]Bruno13 a écrit:
    je suis descendu de 7 secondes à moins d'une seconde
    ... sachant que t'étais déjà descedu de 2 min à 7 sec auparavent,
    ... et 2*60/moins-d'une-sec ça fait au moins 120 fois plus rapide qu'au début, ça valait bien le coup d'optimiser.

    Bruno13 a écrit:
    Pour l'occurrence, moi c'est le nombre de fois où apparait le mot dans l'ensemble du corpus. Le corpus étant l'ensemble des pages à analyser. Attention : si le mot apparait 4 fois dans la même page, cela fait toujours une occurrence de 1.

    Pour la fréquence, c'est un comptage du nombre de fois où apparait le mot dans le corpus. Si le mot apparait 4 fois dans une page cela fait Freq = 4.
    ... et pour "occurrence" si le mot apparaît 4 fois dans chacune des 6 pages d'un même corpus ça donne Occurrence = une fois 6 ... ou Occurrence = 1 ?
    ... et pour "fréquence" = nombre de fois où apparaît le mot dans un corpus de plusieurs pages avec Freq = 4 pour la première page et Freq = 6 dans une autre page je suppose qu'on additionne ?
    ... ç'est surtout "occurrence" que m'a l'air un peu bizarre.

    En attendant d'y voir plus clair voiçi déjà une function qui prend une liste de mots comportant des doublons, triplons, etc (qui peut être issue du corpus en entier ou d'une ou plusieurs pages, ou de n'importe quel fractionnement) et qui renvoie la liste-sans-doublon de ces mots avec pour chacun de ces mots le nombre de fois qu'il a été rencontré comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    applications 3
    appliquer 3
    approche 3
    apres 4
    area 3
    array 4
    article 6
    assembleur 3
    assigned 3
    astuce 3
    astuces 4
    attributs 3
    aussi 4
    ...
    ... mais attention j'ai nommé la fonction par CreerListeOccurrencesMots() il faudrait plutôt la nommer CreerListeComptageMots compte tenu de ta terminologie, en voiçi le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    function  CreerListeOccurrencesMots(const Liste : TStringList) : TStringList;
    //        Liste doit contenir des lignes sans caractère accentué ou de ponctuation,
    //        avec un seul mot par ligne sinon c'est l'occurrence de l'expression
    //        qui est renvoyée.
    var       i,ind,Occ : integer; Mot : string;
    begin     Result:=TStringList.create;
              if Liste.count=0 then EXIT;
              with Result do
              begin //Sorted:=false;  //< plus lent
                    Sorted:=TRUE;     //< plus rapide
                    Capacity:=Liste.capacity;
                    AddObject(Trim(Liste[0]),tObject(integer(1))); // Pour amorcer la liste Result
                    for i:=1 to Liste.count-1 do
                    begin Mot:=Trim(Liste[i]);
                          if Mot<>'' then
                          begin ind:=IndexOfSL3(Result,Mot);
                                // si Mot ne figure pas dans la liste Result on le
                                // laisse rentrer une seule fois dans la liste :
                                if ind<0
                                then AddObject(Mot,tObject(integer(1)))
                                // et s''il y figure on augmente son occurrence :
                                else begin occ:=integer(Result.Objects[ind]) + 1;
                                           Objects[ind]:=tObject(integer(occ));
                                     end;
                          end;
                    end;
              end;
    end; // CreerListeOccurrencesMots()
    ... et code d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    var       ListeOccurrencesMots : TStringList;
    procedure TForm1.bFrequenceMotsClick(Sender: TObject);
    var       chrono  : oChrono; i,occ : integer; s : string;
    begin     //ComboBox1.clear;
              RichEdit3.clear;
              chrono.top;
              ListeOccurrencesMots:=CreerListeOccurrencesMots(SLMotsDuTexte);
              label12.caption:='Mis : '+FloatToStrf(Chrono.Mis,ffFixed,10,2)+' ms';
              // mis 7 à 8 ms pour créer ListeOccurrencesMots à partir de la liste
              // SLMotsDuTexte de 2000 mots comportant des doublons dans des
              // proportions ayant réduit ListeOccurrencesMots à 576 lignes
              for i:=0 to ListeOccurrencesMots.count-1 do
              begin occ:=integer(ListeOccurrencesMots.Objects[i]);
                    s:=ListeOccurrencesMots[i]+' '+intToStr(occ);
                    //ComboBox1.Items.add(s);
                    RichEdit3.lines.add(s);
              end;
    end;
    ... ça te permettra déjà de faire un test.
    A+

    EDIT même jour 16h43 : A propos de terminologie, trouvé sur le Dico du Net :
    Dico du Net :
    Occurrence
    Définition
    Nombre de fois où un mot apparaît dans un texte.
    Description
    L'occurrence d'un mot est égale au nombre de fois où ce mot apparaît dans un texte. Cette notion est utilisée pour mesurer l'indice de densité d'un mot dans un texte.

    Indice de densité
    Définition
    Rapport entre l'occurrence d'un mot dans un texte et le nombre total de mots du texte.
    Description
    L'indice de densité d'un mot est égal au nombre de fois où ce mot apparaît dans un texte, divisé par le nombre de mots total du texte.

    L'indice de densité fait partie des critères utilisés par les moteurs de recherche pour juger la pertinence d'une page par rapport à une requête. En général il faut un indice de densité supérieur à la moyenne pour les mots-clés stratégiques, sans toutefois tomber dans l'excès (qui peut être pénalisé en terme de positionnement).

    De nombreux outils en ligne permettent de mesurer l'indice de densité.

  6. #26
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Salut Gilbert,

    ... et pour "occurrence" si le mot apparaît 4 fois dans chacune des 6 pages d'un même corpus ça donne Occurrence = une fois 6 ... ou Occurrence = 1
    Pour moi la réponse est 6.

    En effet pour moi l'occurrence n'est pas ce que la definition explique ci dessus. Mais j'avoue que je doute de mes souvenirs d'autrefois

    Donc pour la Freq, c'est assez simple mais pour l'occurrence je dois garder en mémoire la page en cours (son indice par exemple) de traitement pour ne pas ajouter +1 à chaque fois qu'un mot revient.

    hum, je ne sais pas si je suis clair là. Je dois filer j'ai un RDV d'où mon texte pas trop clair.

    Je reviens tout à l'heure.

    Amicalement,
    Bruno

  7. #27
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-Salut Bruno,
    Tu dis :
    En effet pour moi l'occurrence n'est pas ce que la definition explique ci dessus. Mais j'avoue que je doute de mes souvenirs d'autrefois
    ... comme ta manière de définir et de calculer ce que tu appelles "occurrence" est une manière particulière propre à ton application et en contradiction avec celle du Dico il serait préférable de donner un autre nom au résultat de ce calcul comme par exemple "occurrence-réduite" et de réserver l'usage du mot "occurrence" aux cas correspondant à la définition donnée par le Dico c'est à dire "Nombre de fois où un mot apparaît dans un texte" en conséquence de quoi "occurrence" remplacerait ce que tu nommes "Freq".

    A mon avis ce serait moins ambigü pour tout le monde surtout si tu lances une nouvelle discussion avec ce sujet. Pour "occurrence" il suffira de rappeler la définition du dico, et pour "occurrence-réduite" il suffira de donner ta définition spécifique et ce sera bien plus clair.

    A demain

  8. #28
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Citation Envoyé par Gilbert Geyer
    Au collège j'ai appris qu'une fréquence est un nombre d'événements par unité de temps.
    Tu confonds fréquence d'un évènement périodique, et fréquence statistique : ce sont deux notions différentes.

  9. #29
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,
    CapJack a écrit :
    Tu confonds fréquence d'un évènement périodique, et fréquence statistique : ce sont deux notions différentes.
    ... en fait ce n'est pas une confusion c'est une préférence de langage.
    ... bien qu'il soit exact qu'il s'agit de deux notions différentes je préfère réserver l'usage du terme "fréquence" aux événements périodiques c'est à dire des événements fréquents dans le temps.
    J'y peux rien si les statisticiens utilisent le mot "fréquence" pour ne désigner en fait qu'une "proportion", qu'une "fraction" ou qu'un "pourcentage" d'un tout.
    Et lorsque il s'agit d'un statisticien-linguiste, ou l'inverse, il risque aussi d'utiliser l'expression "Indice de densité" pour désigner le rapport entre l'occurrence d'un mot dans un texte et le nombre total de mots du texte.
    (En fait "Indice de densité" me semble bien plus parlant dans ce cas)

    En fait l'essentiel c'est de se mettre d'accord sur la terminologie et de s'y tenir ensuite ça évite les quiproquos qui résultent de l'usage de pseudo-synonymes. Et comme l'objectif de la présente discussion est de répondre au problème posé par Bruno13 la balle est donc dans son camp pour clarifier l'énoncé de son problème vu que ça conditionne fortement nos réponses.

    A+

  10. #30
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Non non, pas d'accord... un terme de mathématiques est un terme de mathématiques, on ne peut pas modifier comme ça nous arrange le sens des mots pour justifier notre ignorance, désolé... mais je suis bien conscient que c'est le mal du siècle !

    Moi, je me bats sans arrêt pour l'utilisation du mot juste, et plus ça va, plus je sens que c'est un combat perdu d'avance... c'est sans doute une conséquence lointaine d'une certaine démagogie consistant à laisser les élèves "exprimer les choses avec leur langage à eux"... quelle horreur !

    Donc ce n'est pas au terme de fréquence de s'adapter à toi, ou à moi, ou à Bruno13, ou à qui que ce soit d'autre. C'est l'inverse : c'est à nous d'utiliser le mot juste dans le contexte adapté. Ici, il s'agit de comptage, donc de statistiques, donc fréquence = effectif/effectif total. Point final.

    Mais je sens qu'il y aura souvent des prises de bec sur ce sujet. Que de temps perdu en malentendus ! Moi, je passe du temps (avec plaisir), parfois beaucoup, à répondre sur les forums, je n'ai pas envie de perdre mon temps (avec énervement) à savoir ce que l'autre a voulu dire, ou à m'apercevoir que j'ai répondu à côté de la question, parce que la question était mal posée... non ?

  11. #31
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    A CapJack

    Moi, je me bats sans arrêt pour l'utilisation du mot juste,...
    ... c'est effectivement indispensable pour se comprendre sans malentendus
    ... et ça va même plus loin car c'est à partir du vocabulaire utilisé qu'on nomme souvent ses fonctions, variables et autres ingrédients du code et on finit par se piéger avec des libellés mal choisis.
    ... mais les dictionnaires sont là pour appeler un chat un chat.

    Ici, il s'agit de comptage, donc de statistiques, donc fréquence = effectif/effectif total. Point final.
    ... pas si vite, comme le dit le Dico du Net les linguistes qui font du comptage de mots désignent le "Rapport entre l'occurrence d'un mot dans un texte et le nombre total de mots du texte" par l'expression "Indice de densité" donc faudra choisir entre le vocabulaire des statisticiens et celui des linguistes.
    L'essentiel étant que la terminologie choisie soit accompagnée de sa définition.

    A propos des comptages, pour la suite j'avais lu dans le message du 23/07/2007 13h36 de Bruno13 qu'il disait "... surement écrire un nouveau post car ce point là est un peu plus compliqué pour moi à optimiser car cela touche à la structure de mes objets".

    A+

  12. #32
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Bonjour à tous,

    Désolé pour mon vocabulaire, je ne pensais pas que cela pouvait soulever un débat. La prochaine fois c'est promis je choissirai bien mes termes.

    En ce qui concerne mon nouveau post, je ne l'ai pas encore posté par manque de temps et je n'ai pas encore testé ce que tu proposes Gilbert dans ce post.

    Je ne manquerai pas de vous tenir informé.

    Amicalement,
    Bruno

  13. #33
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    A Bruno13,

    Pour info je te signale qu'en fouillant sous Google avec "indice densité" on touve sur http://www.webrankinfo.com/outils/indice-densite.php
    une rubrique "Calcul d'indice de densité - Outil gratuit" et cet outil je cite "... vous permet de calculer l'indice de densité de plusieurs mots-clés d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page. Cet outil est basé sur l'API Google".

    Cet outil te permettrait le cas échéant de faire des tests de comparaisons pour calibrer éventuellement les paramétrages de ton application.

    A+

  14. #34
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Salut Gilbert,

    Merci pour cette information. Effectivement je vais m'en servir pour mes comparaisons et voir si je peux rivaliser

    Amitiés,
    Bruno

Discussions similaires

  1. Y-a-t-il plus rapide pour enlever les accents ?
    Par Bruno13 dans le forum Langage
    Réponses: 48
    Dernier message: 12/05/2023, 11h24
  2. [Bash] et [Perl] - le plus rapide pour parcourir un fichier ?
    Par Bahan_auboulot dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 23/12/2008, 10h46
  3. [XHTML] Moyen plus rapide pour mettre mes pages en XHTML
    Par Linoa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 30/08/2005, 17h46
  4. Algo le plus rapide pour trouver une répétition ?
    Par AsmCode dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 28/07/2005, 00h26
  5. Réponses: 16
    Dernier message: 19/05/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo