Zacznij terazZacznij za darmo

Gdzie można zaobserwować prawo Zipfa?

Zipf zaobserwował stromy i przewidywalny spadek częstości używania słów – być może jednak nie jesteś do końca przekonany do jego prawa. Możesz myśleć: „Znam mnóstwo słów i posługuję się bogatym słownictwem". Być może tak jest w twoim przypadku, ale nie można tego powiedzieć o większości ludzi! Aby to udowodnić, skonstruujemy wizualizację na podstawie 3 milionów tweetów zawierających „#sb". Pamiętaj, że wizualizacja nie odzwierciedla prawa Zipfa idealnie – wszystkie tweety zawierały ten sam hashtag, więc dane są nieco zniekształcone. Mimo to wykres, który stworzysz, pokazuje wyraźny spadek, świadczący o niewielkiej różnorodności leksykalnej wśród milionów tweetów. Oznacza to, że za stosowaniem leksykonów w analizie języka naturalnego stoi solidna podstawa naukowa!

W tym ćwiczeniu użyjesz pakietu metricsgraphics. Choć autor sugeruje użycie operatora potoku %>%, wykres skonstruujesz krok po kroku, aby poznać poszczególne elementy wykresu. Główną funkcją pakietu metricsgraphics jest mjs_plot() – to od niej zaczyna się tworzenie wykresu JavaScript. Na tej podstawie możesz następnie dodawać kolejne warstwy.

Poniżej znajduje się przykładowy przepływ pracy z pakietem metricsgraphics bez użycia operatora %>%:

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

To ćwiczenie jest częścią kursu

Analiza sentymentu w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj head() na sb_words, aby przejrzeć najczęściej występujące słowa.
  • Utwórz nową kolumnę expectations, dzieląc największą częstość słów, freq[1], przez kolumnę rank.
  • Zainicjuj sb_plot za pomocą mjs_plot().
    • Przekaż sb_words z argumentami x = rank i y = freq.
    • Wewnątrz mjs_plot() ustaw show_rollover_text na FALSE.
  • Nadpisz sb_plot za pomocą mjs_line() i przekaż sb_plot.
  • Rozbuduj sb_plot za pomocą mjs_add_line().
    • Przekaż poprzedni obiekt sb_plot oraz wektor expectations.
  • Dodaj legendę do nowego obiektu sb_plot za pomocą mjs_add_legend().
    • Przekaż poprzedni obiekt sb_plot.
    • Etykiety legendy powinny składać się z "Frequency" i "Expectation".
  • Wywołaj sb_plot, aby wyświetlić wykres. Najedź kursorem na punkt, aby jednocześnie wyróżnić wartości freq i Expectation. To właśnie magia JavaScriptu!

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
Edytuj i uruchom kod