Compter la fréquence de chaque mot
Il y a un répertoire avec quelques fichiers de texte. Comment puis-je compter la fréquence de chaque mot dans chaque fichier? Un mot désigne un ensemble de caractères qui peut contenir les lettres, les chiffres et le soulignement des caractères.
- Qu'essayez-vous de faire? Comment avez-vous essayé de le faire? Comment se fait-il pas de travail?
- Je ne sais pas ce que je dois faire en premier. La question principale est de savoir comment faire une recherche de mots? Ce conteneur générique dois-je utiliser pour stocker des informations sur les mots, le nombre de fréquences et les fichiers.
Vous devez vous connecter pour publier un commentaire.
Voici une solution qui devrait compter toutes la fréquence des mots dans un fichier:
Vous pouvez appeler ce code comme ceci:
Après ces paroles contiennent tous les mots dans le fichier avec leur fréquence (par exemple,
words["test"]
renvoie le nombre de fois que le "test" est dans le fichier de contenu. Si vous avez besoin d'accumuler les résultats de plus d'un fichier, il suffit d'appeler la méthode pour tous les fichiers avec le même dictionnaire. Si vous avez besoin des résultats séparés pour chaque fichier puis de créer un nouveau dictionnaire à chaque fois et d'utiliser une structure de type @Gris suggéré.Il y a une Linq-ish alternative qui omi est plus simple. La clé ici est d'utiliser le cadre construit en
File.ReadLines
(qui est paresseusement de lire ce qui est cool) etstring.Split
.Pour obtenir des fréquences de nombreux fichiers, vous pouvez avoir une surcharge basée sur
params
.De comptage de mots:
Lire le texte à partir d'un fichier:
De comptage de mots de la structure:
@aKzenT réponse est bonne, mais il a un problème! son code ne vérifie jamais si le mot est existe déjà dans le dictionnaire ou pas! j'ai donc modifié le code comme suit: