So habe ich beliebiger Text in einer TXT-Datei und ich muss die 10 häufigsten Wörter finden. Wie soll ich das machen? Ich denke, ich sollte Sätze von Punkt zu Punkt lesen und es zu einem Array zusammensetzen, aber ich weiß nicht wirklich, wie ich das machen soll.So finden Sie 10 häufigsten Wörter in einem Text
Antwort
Sie könnten es mit Linq erreichen. so etwas wie dieses versuchen:
var words = "two one three one three one";
var orderedWords = words
.Split(' ')
.GroupBy(x => x)
.Select(x => new {
KeyField = x.Key,
Count = x.Count() })
.OrderByDescending(x => x.Count)
.Take(10);
'ToList()' ist * redundant *: '... words.Split ('') .GroupBy (x = > x) ... ' –
Sehr wahr Dmitry, es ist nicht erforderlich. Ich habe das Codebeispiel bearbeitet. – JanneP
Wenn Sie einen "* zufälligen Text * in einer TXT-Datei" erhalten, wird Ihre aktuelle Routine Schwierigkeiten haben: Sie müssen alle * Satzzeichen * (* Kommas *, * Punkte * usw.) entfernen; Sie müssen sich mit * case * befassen, z. '" Einer ist nur einer, aber nicht EINER. "' - das Wort 'one' erscheint * zweimal * –
alle Daten in String konvertieren, und spaltete es in Array
Beispiel:
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
string[] words = text.Split(delimiterChars);
var dict = new Dictionary<String, int>();
foreach(var value in array)
{
if (dict.ContainsKey(value))
dict[value]++;
else
dict[value] = 1;
}
for(int i=0;i<dict.length();i++) //or i<10
{
Console.WriteLine(dict[i]);
}
Sie zuerst das Array mit größeren Wert sortieren müssen.
Gegenbeispiel: 'text =" Eins, zwei, drei, vier, vier, fünf ";' das erwartete Ergebnis ist das '' Vier "', das auf der Oberseite ist. Das tatsächliche Ergebnis ist die * leere Zeichenfolge * Regeln sie alle. –
Der schwierigste Teil der Aufgabe ist Split der erste Text zu Worten. Natürliche Sprache (zB Englisch) Wort ist eine ziemlich komplexe Sache:
Forget-me-not // 1 word (a nice blue flower)
Do not Forget me! // 4 words
Cannot // 1 word or shall we split "cannot" into "can" + "not"?
May not // 2 words
George W. Bush // Is "W" a word?
W.A.S.P. // ...If it is, is it equal to "W" in the "W.A.S.P"?
Donald Trump // Homonyms: name
Spades is a trump // ...and a special follow in a game of cards
It's an IT; it is // "It" and "IT" are different (IT is an acronym), "It" and "it" are same
Ein weiteres Problem ist der Fall: Sie It
und it
als ein und dass gleiche Wort zählen möchten, aber IT
als andere Akronym. Als ein erster Versuch, schlage ich etwas wie folgt aus:
var top10words = File
.ReadLines(@"C:\MyFile.txt")
.SelectMany(line => Regex
.Matches(value, @"[A-Za-z-']+")
.OfType<Match>()
.Select(match => CultureInfo.InvariantCulture.TextInfo.ToTitleCase(match.Value)))
.GroupBy(word => word)
.Select(chunk => new {
word = chunk.Key,
count = chunk.Count()})
.OrderByDescending(item => item.count)
.ThenBy(item => item.word)
.Take(10);
In meiner Lösung, die ich angenommen habe:
- Wörter
A..Z, a..z
enthalten,-
(Bindestrich) und'
(Apostroph) Buchstaben nur TitleCase
wurde verwendet, um alle Großbuchstaben-Akronyme von regulären Wörtern zu trennen (It
undit
werden als das gleiche Wort behandelt, währendIT
als unterschiedliche Wörter)- Bei binden (zwei oder viele Wörter haben die gleiche Frequenz) diese Bindung bricht nach Alphabet um
- 1. Die 5 häufigsten Wörter in einem Text finden
- 2. Finden Sie die häufigsten Wörter in großen MySQL-Datenbank
- 3. Grundstück häufigsten Wörter in Python
- 4. Sehen Sie sich die 7 häufigsten Wörter im Text an, aber sortieren Sie die Wörter, die geläufige Wörter sind
- 5. So finden Sie Text
- 6. Drucken Sie 10 am häufigsten vorkommende Wörter eines Textes, einschließlich und ohne Stoppwörter
- 7. So finden Sie bestimmte Wörter in den letzten 10 Zeilen der Datei mit Batch
- 8. So finden Sie die am häufigsten verwendete Gruppe von Spielern
- 9. Am häufigsten vorkommenden n Wörter in einem String
- 10. Finden Sie die am häufigsten verwendete Farbe in einem Bild
- 11. So unterdrücken Sie Wörter in einem DIV
- 12. Finden Sie ein Wort in einem Text und machen Sie Wörter in einem Text Fett und Farbe: rot
- 13. Finde die am häufigsten vorkommenden Wörter in einem Text in R
- 14. Funktion, um den häufigsten Buchstaben zu finden, mit dem Wörter in einem Satz enden
- 15. Finde die häufigsten Wörter mit LINQ
- 16. Finden Sie die 3 häufigsten Ganzzahlen aus einem Array
- 17. finden Sie die häufigsten Wörter in einer Liste (ohne Frequenz-Nr.)
- 18. So finden Sie eindeutige Wörter aus der Datei linux
- 19. So markieren Sie Text in einem tkinter Text-Widget
- 20. So finden Sie wiederholte Wörter einer Zelle in SQL
- 21. Python - Zähle Wörter in einem gegebenen Text
- 22. Über Wörter in einem Text schweben
- 23. Finden Sie das am häufigsten verwendete Wort von Benutzereingabe
- 24. So finden Sie die am häufigsten besuchten Seiten in der Websitesammlung mit Sharepoint 2010
- 25. So erhalten Sie die Anzahl der echten Wörter in einem Text in Swift
- 26. Wie finden Sie alle Wörter zwischen Klammern?
- 27. So finden Sie Wörter mit REGEX mit Elixir
- 28. Wie findet man die häufigsten Wörter mit Spacy?
- 29. Die häufigsten Zeichenfolgen in SQLite finden
- 30. So erkennen Sie Text in einem Foto
Was haben u bisher versucht? –
Text in Wörter aufteilen, nach diesen Wörtern gruppieren, nach Anzahl sortieren (in absteigender Reihenfolge), Top 10 nehmen –