Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Använd head()sb_words för att granska de vanligaste orden.
  • Skapa en ny kolumn expectations genom att dividera den högsta ordfrekvensen, freq[1], med kolumnen rank.
  • Starta sb_plot med mjs_plot().
    • Skicka in sb_words med x = rank och y = freq.
    • Sätt show_rollover_text till FALSE inom mjs_plot().
  • Skriv över sb_plot med mjs_line() och skicka in sb_plot.
  • Lägg till i sb_plot med mjs_add_line().
    • Skicka in det föregående sb_plot-objektet och vektorn expectations.
  • Placera en legend i ett nytt sb_plot-objekt med mjs_add_legend().
    • Skicka in det föregående sb_plot-objektet.
    • Legendetiketterna ska bestå av "Frequency" och "Expectation".
  • Anropa sb_plot för att visa plotten. Håll muspekaren över en punkt för att samtidigt markera en freq- och en Expectation-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
Redigera och kör kod