Le plus grand se produisant mots dans une chaîne de caractères en C#
J'essaie de trouver le top occurrances de mots dans une chaîne de caractères.
par exemple
Hello World This is a great world, This World is simply great
à partir du dessus de la chaîne, je suis en train de calculer des résultats quelque chose comme suit:
- monde, 3
- grand, 2
- bonjour, 1
- ce, 2
mais en ignorant les mots avec une longueur de moins de 3 caractères par exemple is
qui s'est produite deux fois.
J'ai essayé de regarder dans Dictionary<key, value>
paires, j'ai essayé de regarder dans linq GroupBy
extension. Je sais que la solution se trouve quelque part entre les deux, mais j'ai juste ne peux pas obtenir ma tête autour de l'algorithme et comment obtenir ce fait.
Est-ce un devoir?
Ceci est similaire: stackoverflow.com/questions/8630235/...
Non ce n'est pas des devoirs à faire, je suis en train d'extraire les méta mots-clés et de les enregistrer dans la base de données pour chaque enregistrement.
Ceci est similaire: stackoverflow.com/questions/8630235/...
Non ce n'est pas des devoirs à faire, je suis en train d'extraire les méta mots-clés et de les enregistrer dans la base de données pour chaque enregistrement.
OriginalL'auteur Thr3e | 2012-01-03
Vous devez vous connecter pour publier un commentaire.
À l'aide de LINQ et Regex
+1 Meilleure réponse qu'il tient compte de la ponctuation...
Je suis d'accord sur le niveau mathématique. À partir de la programmation de savoir LINQ est tout aussi précieuse.
Exactement ce que je cherchais. Merci ... je suis en train de convertir le résultat .ToList.(5) pour obtenir le top 5 des mots par la densité. Merci pour l'aide
dites-moi comment faire pour imprimer uniquement le maximum de répéter mot
OriginalL'auteur Ilia G
Alors j'aimerais éviter de LINQ et les Regex et le, car il semble que vous essayez de trouver un algorithme et de comprendre ce pas l'utilisation d'une fonction pour le faire pour vous.
Pas que ce ne sont pas des solutions valables. Ils sont. Certainement.
Essayer quelque chose comme cela
+1 Nice poste d'enseignant. Donnera un autre +1 pour les commentaires, si je le pouvais.
Concernant votre commentaire sur le boîtier, il est beaucoup plus facile solution: créer le dictionnaire à l'aide d'un casse comparer:
var dictionary = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase);
Ah je ne savais pas qu'on pouvait le faire 🙂 C'est ce que je reçois pour ne pas regarder les surcharges!
merci beaucoup pour l'algorithme. Même moi, je suis l'aide de la fonction décrite ci-dessus pour mon application, mais vous m'avez aidé à résoudre où j'ai été bloqué et aussi que cela va m'aider à plusieurs parties de mon programme. Grande Réponse
OriginalL'auteur Jordan
Je écrire une chaîne de processeur de classe.Vous pouvez l'utiliser.
Exemple:
Classe:
OriginalL'auteur Jahan
Pas parfait, parce qu'il ne veut pas couper la virgule, mais il vous montre comment faire le regroupement et le filtrage au moins.
OriginalL'auteur Tatham Oddie
Pour obtenir le mot avec la plupart des occurrences:
results.First().Word;
Word = x.First()
, vous pouvez accéder à la clé de groupe viaWord = x.Key
.Merci @TathamOddie ne savais pas qu' - btw, merci pour le FormsAuthenticationExtensions 😉
OriginalL'auteur xandercoded