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

Больше чем слова: токенизация (1)

Текстовый анализ широко применяется в самых разных задачах: например, для анализа отзывов покупателей с целью понять их отношение к товару или для анализа финансовых новостей с целью оценить настроения вокруг акций. Стандартные шаги предобработки текстовых данных включают приведение текста к нижнему регистру (см. tolower()) и разбиение предложений на отдельные слова.

ft_tokenizer() выполняет оба этих шага. Функция используется по той же схеме, что и другие виденные вами преобразования, и не требует дополнительных аргументов.

shop_reviews %>%
  ft_tokenizer("review_text", "review_words")

Поскольку количество слов в каждой строке может быть разным, output.col представляет собой столбец-список, где каждый элемент — это список строк. Для анализа текста обычно удобнее иметь по одному слову в каждой строке. Формат «список списков строк» можно преобразовать в обычный символьный вектор с помощью unnest() из пакета tidyr. В настоящее время метод unnest недоступен непосредственно в Spark, поэтому перед преобразованием данные необходимо собрать в R. Схема кода для этого выглядит следующим образом.

library(tidyr)
text_data %>%
  ft_tokenizer("sentences", "word") %>%
  collect() %>%
  mutate(word = lapply(word, as.character)) %>%
  unnest(word)

Если вы хотите подробнее изучить пакет tidyr, пройдите курс Cleaning Data in R.

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

Введение в Spark с sparklyr на R

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

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

Подключение к Spark уже создано и доступно как spark_conn. Tibble, привязанный к метаданным треков, хранящимся в Spark, предварительно определён как track_metadata_tbl.

  • Создайте переменную title_text на основе track_metadata_tbl.
    • Выберите поля artist_name и title.
    • Используйте ft_tokenizer(), чтобы создать новое поле word, содержащее название, разбитое на слова.
    • Соберите результат.
    • Преобразуйте столбец word, привев его к списку символьных векторов с помощью lapply и as.character.
    • Используйте unnest(), чтобы развернуть столбец-список и получить по одному слову в каждой строке.

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

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

# track_metadata_tbl has been pre-defined
track_metadata_tbl

title_text <- track_metadata_tbl %>%
  # Select artist_name, title
  ___ %>%
  # Tokenize title to words
  ___ %>%
  # Collect the result
  ___ %>%
  # Flatten the word column 
  ___ %>% 
  # Unnest the list column
  ___
Редактировать и запускать код