LoslegenKostenlos starten

Wo kannst du das Gesetz von Zipf beobachten?

Auch wenn Zipf einen steilen und vorhersagbaren Rückgang der Wortverwendung beobachtet hat, glaubst du vielleicht nicht an Zipfs Gesetz. Du denkst dir womöglich: „Ich kenne viele Wörter und habe einen ausgeprägten Wortschatz." Das mag für dich stimmen, aber für die meisten Menschen gilt das nicht! Um das zu zeigen, erstellen wir eine Visualisierung aus 3 Millionen Tweets, die „#sb" erwähnen. Denk daran: Die Visualisierung folgt Zipfs Gesetz nicht perfekt – alle Tweets enthalten denselben Hashtag, daher ist das etwas verzerrt. Trotzdem zeigt die Grafik, die du erstellst, einen starken Abfall und damit eine geringe lexikalische Vielfalt in Millionen von Tweets. Es gibt also durchaus wissenschaftliche Gründe, Lexika für die Analyse natürlicher Sprache zu verwenden!

In dieser Übung nutzt du das Paket metricsgraphics. Obwohl der Autor empfiehlt, den Pipe-Operator %>% zu verwenden, baust du die Grafik Schritt für Schritt auf, um die verschiedenen Aspekte des Plots kennenzulernen. Die Hauptfunktion des Pakets metricsgraphics ist mjs_plot() – der erste Schritt, um einen JavaScript-Plot zu erstellen. Darauf aufbauend kannst du weitere Ebenen zum Plot hinzufügen.

Ein Beispiel-Workflow mit metricsgraphics ohne den Operator %>% sieht so aus:

metro_plot <- mjs_plot(data, x = x_axis_name, y = y_axis_name, show_rollover_text = FALSE)
metro_plot <- mjs_line(metro_plot)
metro_plot <- mjs_add_line(metro_plot, line_one_values)
metro_plot <- mjs_add_legend(metro_plot, legend = c('names', 'more_names'))
metro_plot

Diese Übung ist Teil des Kurses

<Kurs>Sentimentanalyse in R</Kurs>
Kurs ansehen

Übungsanweisungen

  • Verwende head() auf sb_words, um die Top-Wörter zu prüfen.
  • Erstelle eine neue Spalte expectations, indem du die größte Wortfrequenz freq[1] durch die Spalte rank teilst.
  • Starte sb_plot mit mjs_plot().
    • Übergib sb_words mit x = rank und y = freq.
    • Setze innerhalb von mjs_plot() show_rollover_text auf FALSE.
  • Überschreibe sb_plot mit mjs_line() und übergib sb_plot.
  • Ergänze sb_plot mit mjs_add_line().
    • Übergib das vorherige sb_plot-Objekt und den Vektor expectations.
  • Füge eine Legende zu einem neuen sb_plot-Objekt mit mjs_add_legend() hinzu.
    • Übergib das vorherige sb_plot-Objekt.
    • Die Legendenbeschriftungen sollten aus "Frequency" und "Expectation" bestehen.
  • Rufe sb_plot auf, um die Grafik anzuzeigen. Fahre mit der Maus über einen Punkt, um gleichzeitig einen freq- und einen Expectation-Punkt hervorzuheben. Die Magie von JavaScript!

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Examine sb_words
___

# Create expectations
sb_words$expectations <- sb_words %$% 
  {___[___] / ___}

# Create metrics plot
sb_plot <- ___(___, x = ___, y = ___, ___ = ___)

# Add 1st line
sb_plot <- ___(___)

# Add 2nd line
sb_plot <- ___(___, ___)

# Add legend
sb_plot <- ___(___, legend = c("___", "___"))

# Display plot
sb_plot
Code bearbeiten und ausführen