Var kan du observera Zipfs lag?
Zipf observerade en brant och förutsägbar minskning i ordanvändning – men kanske är du inte helt övertygad om Zipfs lag. Du kanske tänker: "Jag kan massor av ord och har ett varierat ordförråd." Det kan stämma för dig, men för de flesta ser det annorlunda ut! För att visa det ska vi skapa en visualisering baserad på 3 miljoner tweets med hashtaggen "#sb". Tänk på att visualiseringen inte följer Zipfs lag perfekt – eftersom alla tweets innehåller samma hashtag är datan något snedfördelad. Trots det visar grafen du skapar en brant nedgång, vilket tyder på en begränsad lexikal variation bland de miljontals tweetsen. Det finns alltså vetenskaplig grund för att använda lexikon vid analys av naturligt språk!
I den här övningen använder du paketet metricsgraphics. Även om författaren rekommenderar pipe-operatorn %>% bygger du grafen steg för steg för att lära dig om de olika delarna i plotten. Huvudfunktionen i metricsgraphics är mjs_plot(), som är det första steget när du skapar ett JavaScript-diagram. Därefter kan du lägga till fler lager ovanpå plotten.
Nedan visas ett exempel på ett metricsgraphics-arbetsflöde utan %>%-operatorn:
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
Den här övningen är en del av kursen
Sentimentanalys i R
Övningsinstruktioner
- Använd
head()påsb_wordsför att granska de vanligaste orden. - Skapa en ny kolumn
expectationsgenom att dividera den högsta ordfrekvensen,freq[1], med kolumnenrank. - Starta
sb_plotmedmjs_plot().- Skicka in
sb_wordsmedx = rankochy = freq. - Sätt
show_rollover_texttillFALSEinommjs_plot().
- Skicka in
- Skriv över
sb_plotmedmjs_line()och skicka insb_plot. - Lägg till i
sb_plotmedmjs_add_line().- Skicka in det föregående
sb_plot-objektet och vektornexpectations.
- Skicka in det föregående
- Placera en legend i ett nytt
sb_plot-objekt medmjs_add_legend().- Skicka in det föregående
sb_plot-objektet. - Legendetiketterna ska bestå av
"Frequency"och"Expectation".
- Skicka in det föregående
- Anropa
sb_plotför att visa plotten. Håll muspekaren över en punkt för att samtidigt markera enfreq- och enExpectation-punkt. JavaScript i sin bästa form!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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