Zählen Word Frequency (höherwertiges Wörter) in einem String, ausschließlich der Schlüsselwörter
-
25-09-2019 - |
Frage
Ich möchte die Häufigkeit von Wörtern zählen (mit Ausnahme einiger Schlüsselwörter) in einem String und sortieren sie DESC. Also, wie kann ich es tun?
In der folgenden Zeichenkette ...
This is stackoverflow. I repeat stackoverflow.
Wenn die ausschließlich der Schlüsselwörter sind
ExKeywords() ={"i","is"}
Die Ausgabe sollte wie sein
stackoverflow
repeat
this
P. S. NEIN! Ich bin nicht Re-Design google! :)
Lösung
string input = "This is stackoverflow. I repeat stackoverflow.";
string[] keywords = new[] {"i", "is"};
Regex regex = new Regex("\\w+");
foreach (var group in regex.Matches(input)
.OfType<Match>()
.Select(c => c.Value.ToLowerInvariant())
.Where(c => !keywords.Contains(c))
.GroupBy(c => c)
.OrderByDescending(c => c.Count())
.ThenBy(c => c.Key))
{
Console.WriteLine(group.Key);
}
Andere Tipps
string s = "This is stackoverflow. I repeat stackoverflow.";
string[] notRequired = {"i", "is"};
var myData =
from word in s.Split().Reverse()
where (notRequired.Contains(word.ToLower()) == false)
group word by word into g
select g.Key;
foreach(string item in myData)
Console.WriteLine(item);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow