Kom igångKom igång gratis

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

Visa kurs

Ö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_text från track_metadata_tbl.
    • Välj fälten artist_name och title.
    • 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 word och plattar ut den till en lista med teckenvektorer med hjälp av lapply och as.character.
    • Använd unnest() för att platta ut listkolumnen och få ett ord per rad.

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
  ___
Redigera och kör kod