Aan de slagGa gratis aan de slag

Waar kun je de wet van Zipf waarnemen?

Hoewel Zipf een sterke en voorspelbare afname in woordgebruik zag, geloof je misschien niet in de wet van Zipf. Je denkt misschien: "Ik ken genoeg woorden en heb een bijzonder vocabulaire". Dat kan zo zijn, maar voor de meeste mensen geldt dat niet! Om dat te laten zien, maken we een visualisatie van 3 miljoen tweets met "#sb". Houd er rekening mee dat de visualisatie de wet van Zipf niet perfect volgt; alle tweets bevatten dezelfde hashtag, dus het is wat scheef. Toch laat de visualisatie die je maakt een sterke afname zien, met weinig lexicale diversiteit in miljoenen tweets. Er zit dus zeker wetenschap achter het gebruik van lexicons voor natuurlijke-taalanalyse!

In deze oefening gebruik je het pakket metricsgraphics. Hoewel de auteur aanraadt om de pipe-operator %>% te gebruiken, bouw je de grafiek stap voor stap op om de verschillende onderdelen te leren kennen. De hoofdfunctie van het pakket metricsgraphics is de functie mjs_plot(), de eerste stap om een JavaScript-plot te maken. Daarna kun je extra lagen boven op de plot toevoegen.

Een voorbeeldworkflow met metricsgraphics zonder de operator %>% staat hieronder:

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

Deze oefening maakt deel uit van de cursus

Sentimentanalyse in R

Cursus bekijken

Oefeninstructies

  • Gebruik head() op sb_words om de topwoorden te bekijken.
  • Maak een nieuwe kolom expectations door de grootste woordfrequentie, freq[1], te delen door de kolom rank.
  • Start sb_plot met mjs_plot().
    • Geef sb_words door met x = rank en y = freq.
    • Stel binnen mjs_plot() show_rollover_text in op FALSE.
  • Overschrijf sb_plot met mjs_line() en geef sb_plot door.
  • Voeg toe aan sb_plot met mjs_add_line().
    • Geef het vorige sb_plot-object en de vector expectations door.
  • Plaats een legenda op een nieuw sb_plot-object met mjs_add_legend().
    • Geef het vorige sb_plot-object door
    • De legendalabels moeten bestaan uit "Frequency" en "Expectation".
  • Roep sb_plot aan om de plot te tonen. Beweeg met je muis over een punt om tegelijkertijd een freq- en een Expectation-punt te highlighten. De magie van JavaScript!

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren