Skapa kontextfönster-särdragsdata
Det rörliga fönstrets teknik är användbar för maskininlärningsalgoritmer som arbetar med kontextfönster-särdragsdata.
En tabell text med kolumnerna id, word, part och title finns tillgänglig i din arbetsyta. Den innehåller kapitel 9, 10, 11 och 12 ur Sherlock Holmes-boken. Orden är redan bearbetade och organiserade så att varje rad innehåller ett ord. Varje ord har ett unikt heltalsindex i kolumnen id. Lägre värden i id anger ord som förekommer tidigare i texten, och högre värden anger ord som förekommer senare.
De första 10 raderna i datamängden för kapitel 12 skrivs ut i konsolen som Table1. De första tio raderna i det önskade resultatet, begränsat till del 12 (kapitel 12), skrivs ut som Table2. I Table2 finns det "givna" ordet för varje rad i kolumnen w3. Kolumnerna w1 och w2 innehåller de två orden direkt före det givna ordet. Kolumnerna w4 och w5 innehåller de två orden direkt efter det givna ordet.
Observera att w1 och w2 är null på den första raden. Det beror på att det inte finns några ord före w3 (här "xii") inom del 12.
Tveka inte att titta på slides-presentationen till höger om konsolen om du behöver påminna dig om hur något gjordes i videon.
Den här övningen är en del av kursen
Introduktion till Spark SQL i Python
Övningsinstruktioner
- Hämta ordet för varje rad, tillsammans med de två föregående orden och de två efterföljande orden.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)