НачатьНачать бесплатно

Где можно наблюдать закон Ципфа?

Ципф обнаружил резкое и предсказуемое снижение частоты употребления слов, однако вы можете скептически относиться к его закону. Возможно, вы думаете: «Я знаю много слов и обладаю богатым словарным запасом». Это вполне может быть так — но большинство людей не могут этим похвастаться! Чтобы убедиться в этом, построим визуализацию на основе 3 миллионов твитов с упоминанием «#sb». Учтите, что визуализация не следует закону Ципфа в точности: все твиты содержали один и тот же хэштег, что несколько искажает распределение. Тем не менее результат демонстрирует резкое снижение частот и невысокое лексическое разнообразие среди миллионов твитов. Таким образом, использование лексиконов для анализа естественного языка имеет научное обоснование!

В этом упражнении вы будете использовать пакет metricsgraphics. Хотя автор пакета рекомендует использовать оператор pipe %>%, вы будете строить график пошагово, чтобы разобраться в различных элементах визуализации. Основная функция пакета metricsgraphicsmjs_plot(), с которой начинается создание JavaScript-графика. После этого на него можно накладывать дополнительные слои.

Пример рабочего процесса с metricsgraphics без использования оператора %>%:

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

Это упражнение является частью курса

Анализ тональности в R

Посмотреть курс

Инструкции к упражнению

  • Примените head() к sb_words, чтобы просмотреть наиболее частотные слова.
  • Создайте новый столбец expectations, разделив наибольшую частоту слова freq[1] на столбец rank.
  • Создайте sb_plot с помощью mjs_plot().
    • Передайте sb_words с параметрами x = rank и y = freq.
    • Внутри mjs_plot() установите show_rollover_text в значение FALSE.
  • Перезапишите sb_plot с помощью mjs_line(), передав в функцию sb_plot.
  • Дополните sb_plot с помощью mjs_add_line().
    • Передайте предыдущий объект sb_plot и вектор expectations.
  • Добавьте легенду к новому объекту sb_plot с помощью mjs_add_legend().
    • Передайте предыдущий объект sb_plot.
    • Метки легенды должны быть "Frequency" и "Expectation".
  • Вызовите sb_plot, чтобы отобразить график. Наведите курсор на точку, чтобы одновременно выделить соответствующие значения freq и Expectation. Вот что умеет JavaScript!

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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
Редактировать и запускать код