Больше чем слова: токенизация (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
___