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
Instrukcje do ćwiczenia
- Użyj
head()nasb_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_plotza pomocąmjs_plot().- Przekaż
sb_wordsz argumentamix = rankiy = freq. - Wewnątrz
mjs_plot()ustawshow_rollover_textnaFALSE.
- Przekaż
- Nadpisz
sb_plotza pomocąmjs_line()i przekażsb_plot. - Rozbuduj
sb_plotza pomocąmjs_add_line().- Przekaż poprzedni obiekt
sb_plotoraz wektorexpectations.
- Przekaż poprzedni obiekt
- Dodaj legendę do nowego obiektu
sb_plotza pomocąmjs_add_legend().- Przekaż poprzedni obiekt
sb_plot. - Etykiety legendy powinny składać się z
"Frequency"i"Expectation".
- Przekaż poprzedni obiekt
- Wywołaj
sb_plot, aby wyświetlić wykres. Najedź kursorem na punkt, aby jednocześnie wyróżnić wartościfreqiExpectation. 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