Scala Anfänger - einfachste Art Wörter in einer Datei zu zählen

9

Ich versuche auf die einfachste Weise ein Programm zu programmieren, um Wortvorkommen in einer Datei in der Scala-Sprache zu zählen. Bisher habe ich diesen Code:

%Vor%

Berücksichtige nicht den regulären Ausdruck. Ich würde gerne wissen, wie man einzelne Wörter extrahiert Sequenz in dieser Zeile abgerufen:

%Vor%

, um die Häufigkeit jedes Worts zu ermitteln. Zur Zeit bekomme ich eine Karte mit gezählten Wortsequenzen.

    
dmydlarz 18.03.2013, 21:37
quelle

4 Antworten

29

Sie können die Dateizeilen in Wörter umwandeln, indem Sie sie mit der Regex "\W+" teilen ( flatmap ist faul, so dass nicht die gesamte Datei in den Speicher geladen werden muss). Zum Zählen von Vorkommen können Sie über ein Map[String, Int] falten und es mit jedem Wort aktualisieren (viel mehr Speicher und Zeiteffizienz als mit groupBy )

%Vor%     
Garrett Hall 18.03.2013, 22:03
quelle
12

Ich denke, das Folgende ist etwas leichter zu verstehen:

%Vor%     
Michael Yakobi 17.08.2013 22:01
quelle
1

Ich bin nicht 100% sicher, was Sie fragen, aber ich denke, ich sehe das Problem. Verwenden Sie flatMap anstelle von map :

%Vor%

Dies wird alle Ihre Sequenzen miteinander verknüpfen, so dass groupBy für einzelne Wörter anstatt für Zeilenebene verwendet wird.

Ein Hinweis zu Ihrer Regex

Ich weiß, dass du gesagt hast, dass du dir keine Gedanken über deine Regex machen musst, aber hier sind ein paar Änderungen, die du machen kannst, um es lesbarer zu machen. Hier ist, was Sie gerade haben:

%Vor%

Zuerst können Sie Scala's Strings in drei Anführungszeichen verwenden, damit Sie Ihren Backslashes nicht entkommen müssen:

%Vor%

Zweitens, wenn Sie das - an den Anfang Ihrer Zeichenklasse setzen, müssen Sie nicht entkommen:

%Vor%     
DaoWen 18.03.2013 22:03
quelle
1

Hier ist was ich getan habe. Dies wird eine Datei hacken. Hashmap ist eine gute Wette für hohe Leistung und wird jede Art von Leistung übertreffen. Es gibt eine kürzere Sortier- und Slice-Funktion, die Sie auch betrachten können.

%Vor%     
JasonG 19.03.2013 00:19
quelle

Tags und Links