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
Oefeninstructies
- Gebruik
head()opsb_wordsom de topwoorden te bekijken. - Maak een nieuwe kolom
expectationsdoor de grootste woordfrequentie,freq[1], te delen door de kolomrank. - Start
sb_plotmetmjs_plot().- Geef
sb_wordsdoor metx = rankeny = freq. - Stel binnen
mjs_plot()show_rollover_textin opFALSE.
- Geef
- Overschrijf
sb_plotmetmjs_line()en geefsb_plotdoor. - Voeg toe aan
sb_plotmetmjs_add_line().- Geef het vorige
sb_plot-object en de vectorexpectationsdoor.
- Geef het vorige
- Plaats een legenda op een nieuw
sb_plot-object metmjs_add_legend().- Geef het vorige
sb_plot-object door - De legendalabels moeten bestaan uit
"Frequency"en"Expectation".
- Geef het vorige
- Roep
sb_plotaan om de plot te tonen. Beweeg met je muis over een punt om tegelijkertijd eenfreq- en eenExpectation-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