Hledání nejčastějších slovních sekvencí
Dříve jsme si ukázali, jak sestavit dotaz, který hledá slovní sekvence délky tři ("3-tice"). Tento dotaz jsme pak použili jako poddotaz v klasickém SQL dotazu k nalezení nejčastějších 3-tic v textovém dokumentu. Nyní provedeš podobný úkol – tentokrát pro nalezení nejčastějších 5-tic.
K dispozici máš DataFrame text_df, který obsahuje prvních pět kapitol textu o Sherlocku Holmesovi. DataFrame má sloupce: word, id, part, title. Sloupec id je celé číslo – platí, že slovo, které se v dokumentu vyskytuje později, má větší id než slovo před ním. Sloupec part rozděluje data do kapitol. DataFrame text_df je také zaregistrován jako dočasná tabulka text. Cílem je vytvořit dataset, kde každý řádek odpovídá jedné 5-tici a obsahuje sloupec count udávající, kolikrát se daná 5-tice v datasetu vyskytla.
Toto cvičení je součástí kurzu
Úvod do Spark SQL v Pythonu
Pokyny k cvičení
- Vytvoř dotaz
query, který najde 10 nejčastějších 5-tic v datasetu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Find the top 10 sequences of five words
query = """
SELECT w1, w2, w3, w4, w5, COUNT(*) AS count FROM (
SELECT word AS w1,
LEAD(____) OVER(____ ) AS w2,
____ AS w3,
____ AS w4,
____ AS w5
FROM text
)
GROUP BY w1, w2, w3, w4, w5
ORDER BY count DESC, w1, w2, w3, w4, w5
LIMIT ____
"""
df = spark.sql(query)
df.show()