LoslegenKostenlos loslegen

Mehr als Worte: Tokenization (1)

Typische Einsätze von Text Mining sind zum Beispiel die Analyse von Einkaufsbewertungen, um die Einstellung der Käufer:innen zum Produkt zu erfassen, oder die Auswertung von Finanznachrichten, um die Stimmung zu Aktienkursen zu prognostizieren. Um Textdaten zu analysieren, gehören zu den gängigen Vorverarbeitungsschritten das Umwandeln des Textes in Kleinschreibung (siehe tolower()) und das Aufteilen von Sätzen in einzelne Wörter.

ft_tokenizer() übernimmt beide Schritte. Die Verwendung folgt demselben Muster wie bei den anderen Transformationen, die du gesehen hast, ohne zusätzliche Argumente.

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

Da die Ausgabe in jeder Zeile eine unterschiedliche Anzahl von Wörtern enthalten kann, ist output.col eine Listenspalte, wobei jedes Element eine Liste von Strings ist. Für Analysen ist es in der Regel besser, pro Zeile genau ein Wort zu haben. Das Format „Liste von Listen von Strings“ lässt sich mit unnest() aus dem Paket tidyr in einen einzelnen Zeichenkettenvektor umwandeln. Es gibt derzeit keine Methode zum Unnesten direkt auf Spark, daher musst du die Daten dafür zunächst nach R holen. Das Muster sieht so aus:

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

Wenn du mehr über die Arbeit mit dem Paket tidyr lernen möchtest, mach den Kurs Cleaning Data in R.

Diese Übung ist Teil des Kurses

Einführung in Spark mit sparklyr in R

Kurs anzeigen

Anleitung zur Übung

Es wurde bereits eine Spark-Verbindung als spark_conn erstellt. Eine an die in Spark gespeicherten Track-Metadaten angehängte Tibble wurde als track_metadata_tbl vordefiniert.

  • Erstelle eine Variable namens title_text aus track_metadata_tbl.
    • Wähle die Felder artist_name und title aus.
    • Verwende ft_tokenizer(), um ein neues Feld word zu erzeugen, das den in Wörter aufgeteilten Titel enthält.
    • Sammle das Ergebnis.
    • Verändere die Spalte word, indem du sie mit lapply und as.character zu einer Liste von Zeichenkettenvektoren abflachst.
    • Verwende unnest(), um die Listenspalte zu entpacken, sodass du ein Wort pro Zeile erhältst.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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
  ___
Code bearbeiten und ausführen