Găsirea secvențelor frecvente de cuvinte
Anterior am văzut cum să creăm o interogare care identifică secvențe de cuvinte de lungime trei ("3-tuple"). Am folosit acea interogare ca subinterogare într-o interogare SQL tradițională pentru a găsi cele mai frecvente 3-tuple din documentul text. Acum vei efectua o sarcină similară pentru a găsi cele mai frecvente 5-tuple.
DataFrame-ul text_df este disponibil. Conține primele cinci capitole din textul Sherlock Holmes și are coloanele: word, id, part, title. Coloana id este un număr întreg astfel încât un cuvânt care apare mai târziu în document are un id mai mare decât unul care apare înainte. Coloana part împarte datele în capitole. DataFrame-ul text_df este înregistrat și ca tabel temporar numit text. Obiectivul nostru este să creăm un set de date în care fiecare rând corespunde unui 5-tuple, având o coloană count care indică de câte ori apare acel tuple în set.
Acest exercițiu face parte din cursul
Introducere în Spark SQL în Python
Instrucțiuni pentru exercițiu
- Creează o interogare
querycare identifică cele mai frecvente 10 5-tuple din set.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()