Kontextfenster-Featuredaten erstellen
Die Moving-Window-Technik ist nützlich für Machine-Learning-Modelle, die Kontextfenster-Featuredaten verwenden.
In deinem Workspace steht eine Tabelle text mit den Spalten id, word, part, title zur Verfügung. Sie enthält die Kapitel 9, 10, 11 und 12 des Sherlock-Holmes-Buchs. Die Wörter sind bereits verarbeitet und so organisiert, dass pro Zeile genau ein Wort steht. Jedes Wort hat einen eindeutigen ganzzahligen Index in der Spalte id. Die id-Spalte ist kleiner für Wörter, die früher im Text vorkommen, und größer für Wörter, die später im Text erscheinen.
Die ersten 10 Zeilen des Datensatzes für Kapitel 12 werden als Table1 in der Konsole ausgegeben. Die ersten zehn Zeilen des gewünschten Ergebnisses, gefiltert auf part 12 (Kapitel 12), werden als Table2 in der Konsole ausgegeben. In Table2 steht das „gegebene“ Wort der Zeile in der Spalte w3. Die Spalten w1 und w2 liefern die zwei Wörter unmittelbar vor dem gegebenen Wort. Die Spalten w4 und w5 liefern die zwei Wörter unmittelbar nach dem gegebenen Wort.
Beachte, dass w1 und w2 in der ersten Zeile null sind. Das liegt daran, dass es innerhalb von part 12 keine Wörter vor w3 (hier „xii“) gibt.
Wenn du dir aus dem Video etwas nicht mehr genau erinnerst, schau dir gern die Folien rechts neben der Konsole an.
Diese Übung ist Teil des Kurses
Einführung in Spark SQL mit Python
Anleitung zur Übung
- Ermittle für jede Zeile das Wort sowie die zwei vorherigen und die zwei folgenden Wörter.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Word for each row, previous two and subsequent two words
query = """
SELECT
part,
LAG(word, 2) OVER(PARTITION BY ____ ORDER BY ____) AS w1,
LAG(word, ____) OVER(____ BY part ____ BY id) AS w2,
word AS w3,
____(word, 1) OVER(____ BY part ____ BY id) AS w4,
LEAD(word, 2) OVER(____ BY part ____ BY id) AS w5
FROM text
"""
spark.sql(query).where("part = 12").show(10)