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>Übungsanweisungen
- Verwende
head()aufsb_words, um die Top-Wörter zu prüfen. - Erstelle eine neue Spalte
expectations, indem du die größte Wortfrequenzfreq[1]durch die Spalterankteilst. - Starte
sb_plotmitmjs_plot().- Übergib
sb_wordsmitx = rankundy = freq. - Setze innerhalb von
mjs_plot()show_rollover_textaufFALSE.
- Übergib
- Überschreibe
sb_plotmitmjs_line()und übergibsb_plot. - Ergänze
sb_plotmitmjs_add_line().- Übergib das vorherige
sb_plot-Objekt und den Vektorexpectations.
- Übergib das vorherige
- Füge eine Legende zu einem neuen
sb_plot-Objekt mitmjs_add_legend()hinzu.- Übergib das vorherige
sb_plot-Objekt. - Die Legendenbeschriftungen sollten aus
"Frequency"und"Expectation"bestehen.
- Übergib das vorherige
- Rufe
sb_plotauf, um die Grafik anzuzeigen. Fahre mit der Maus über einen Punkt, um gleichzeitig einenfreq- und einenExpectation-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