Partage
  • Partager sur Facebook
  • Partager sur Twitter

mot plus fréqunet

vb2010

    28 mars 2011 à 22:38:04

    salut les amis
    svp je cherche comment trouver un mot plus fréquent dans un texte taper dans un ritchtextbox en vb2010
    exemple:
    "java sql css java html java"
    mot plus fréquente est : "java"
    merci pour l'aide
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2011 à 23:41:36

      Tout d'abord, tu sépares le texte mot par mort, puis ensuite tu utilises la fonction search pour chaque "nouveau" mot trouvé et tu regardes celui qui a le plus de résultats
      • Partager sur Facebook
      • Partager sur Twitter
        29 mars 2011 à 4:13:40

        En C#, avec LINQ, ça donnerait quelque chose du genre. À noter que l'étrange syntaxe avec => est une "lambda expression". La syntaxe d'une lambda expression est très différente en VB; voir ça: http://msdn.microsoft.com/en-us/library/bb531253.aspx. var est ce qu'on appelle de "l'inférence de type", et ça signifie que le compilateur va lui même choisir le type en fonction de l'utilisation (donc, dans var i = 2;, i est de type int car 2 est de type int). En VB, ça revient à ne pas spécifier le type lorsque l'option Infer est activée (http://msdn.microsoft.com/en-us/library/bb384665.aspx).

        var words = textBox.Text.Split(' ').Select(w => w.ToLower()) // (1) 
                                .GroupBy(w => w) // (2)
                                .Select(g => new { Word = g.Key, Count = g.Count() }) // (3)
                                .OrderByDescending(g => g.Count) // (4)
                                .Select(g => g.Word); // (5)
        var mostCommon = words.First(); // (6)
        

        (Compilé dans ma tête, mais ça devrait marcher).

        Donc, dans l'ordre:
        (1) Séparer les mots par espace et les mettre en minuscules (pour éviter des mots qui ne diffèrent que par des majuscules)
        (2) On groupe par mot: le paramètre de GroupBy est la propriété à mettre en commun (ici, c'est le mot lui-même, d'où le w => w)
        (3) Bout difficile: on créé une liste d'objets anonymes ayant chacun deux propriétés: le mot (Word) et le nombre de fois qu'il apparaît (Count)
        (4) On trie la liste par ordre décroissant de Count
        (5) Plus besoin de Count, donc on fait un Select pour extraire le mot. words contiendra alors la liste de tous les mots de textBox.Text, ordonnée en ordre décroissant de fréquence.
        (6) Le mot le plus fréquent est donc bien évidemment le premier de la liste

        Je n'ai pas suffisamment de connaissances en VB.NET pour l'écrire à la main sans support d'un compilateur, mais voilà.
        • Partager sur Facebook
        • Partager sur Twitter
          29 mars 2011 à 17:40:13

          mais si vous avez une réponse meilleur et claire les amis aider moi c mieux en vb 2010 qu'en c# car j'ai pas de connaissance en c#
          et merciiii
          • Partager sur Facebook
          • Partager sur Twitter
            29 mars 2011 à 17:54:05

            C# utilise la même bibliothèque de classes que VB.NET, et produit le même résultat après compilation.

            En gros, ça va être les mêmes appels de méthode, juste la syntaxe qui va être un peu différente (surtout les lambdas, mais j'ai laissé un lien qui explique comment les utiliser en VB).
            • Partager sur Facebook
            • Partager sur Twitter
              29 mars 2011 à 19:48:45

              Citation : Ice_Keese

              C# utilise la même bibliothèque de classes que VB.NET, et produit le même résultat après compilation.

              En gros, ça va être les mêmes appels de méthode, juste la syntaxe qui va être un peu différente (surtout les lambdas, mais j'ai laissé un lien qui explique comment les utiliser en VB).


              OK merci pour votre effort je veux essayer :)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                29 mars 2011 à 19:54:30

                Tant que t'y est Ice_Keese, autant tout faire en une seule expression :-°
                var mostCommon = textBox.Text.Split(' ').Select(w => w.ToLower()) // (1) 
                                        .GroupBy(w => w) // (2)
                                        .Select(g => new { Word = g.Key, Count = g.Count() }) // (3)
                                        .OrderByDescending(g => g.Count) // (4)
                                        .Select(g => g.Word) // (5)
                                        .First(); // (6)
                
                • Partager sur Facebook
                • Partager sur Twitter
                  29 mars 2011 à 20:04:51

                  Citation : Aethec

                  Tant que t'y est Ice_Keese, autant tout faire en une seule expression :-°


                  Oui, mais je voulais pas trop abuser...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 mars 2011 à 20:37:52

                    Et moi j'aurais mis le ToLower() avant le Split() :-°:p
                    • Partager sur Facebook
                    • Partager sur Twitter

                    mot plus fréqunet

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown