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
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_textaustrack_metadata_tbl.- Wähle die Felder
artist_nameundtitleaus. - Verwende
ft_tokenizer(), um ein neues Feldwordzu erzeugen, das den in Wörter aufgeteilten Titel enthält. - Sammle das Ergebnis.
- Verändere die Spalte
word, indem du sie mitlapplyundas.characterzu einer Liste von Zeichenkettenvektoren abflachst. - Verwende
unnest(), um die Listenspalte zu entpacken, sodass du ein Wort pro Zeile erhältst.
- Wähle die Felder
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
___