Mer än ord: tokenisering (1)
Textanalys används bland annat för att analysera köprecensioner och förstå kunders upplevelse av en produkt, eller för att analysera finansiella nyheter och förutsäga sentimentet kring aktiekurser. Vanliga förbehandlingssteg inför textanalys är att konvertera texten till gemener (se tolower()) och att dela upp meningar i enskilda ord.
ft_tokenizer() utför båda dessa steg. Funktionen används på samma sätt som de andra transformationerna du har sett, utan ytterligare argument.
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
Eftersom utdata kan innehålla olika många ord per rad är output.col en listkolumn där varje element är en lista med strängar. Vid textanalys är det oftast bättre att ha ett ord per rad. Formatet lista-av-lista-av-strängar kan omvandlas till en enda teckenvektor med hjälp av unnest() från paketet tidyr. Det finns för närvarande ingen metod för att göra detta direkt i Spark, så du måste först hämta data till R innan du transformerar det. Kodmönstret för detta ser ut så här.
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
Vill du lära dig mer om paketet tidyr kan du ta kursen Cleaning Data in R.
Den här övningen är en del av kursen
Introduktion till Spark med sparklyr i R
Övningsinstruktioner
En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark har fördefinieras som track_metadata_tbl.
- Skapa en variabel med namnet
title_textfråntrack_metadata_tbl.- Välj fälten
artist_nameochtitle. - Använd
ft_tokenizer()för att skapa ett nytt fält,word, som innehåller titeln uppdelad i ord. - Hämta resultatet med
collect(). - Mutera kolumnen
wordoch plattar ut den till en lista med teckenvektorer med hjälp avlapplyochas.character. - Använd
unnest()för att platta ut listkolumnen och få ett ord per rad.
- Välj fälten
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___