Tworzenie danych cech okna kontekstowego
Technika ruchomego okna jest przydatna w algorytmach uczenia maszynowego korzystających z danych cech okna kontekstowego.
W twoim środowisku pracy dostępna jest tabela text z kolumnami id, word, part, title. Zawiera ona rozdziały 9, 10, 11 i 12 książki o Sherlocku Holmesie. Słowa zostały już przetworzone i zorganizowane w formacie jedno słowo na wiersz. Każde słowo ma unikalny indeks całkowity podany w kolumnie id. Kolumna id ma niższe wartości dla słów pojawiających się wcześniej w tekście i wyższe dla słów pojawiających się później.
Pierwsze 10 wierszy zbioru danych dla rozdziału 12 jest wyświetlonych w konsoli jako Table1. Pierwsze dziesięć wierszy oczekiwanego wyniku, ograniczonego do części 12 (Rozdział 12), jest wyświetlonych w konsoli jako Table2. W Table2 „dane" słowo dla danego wiersza znajduje się w kolumnie w3. Kolumny w1 i w2 zawierają dwa słowa bezpośrednio poprzedzające dane słowo. Kolumny w4 i w5 zawierają dwa słowa bezpośrednio po danym słowie.
Zwróć uwagę, że w1 i w2 mają wartość null dla pierwszego wiersza. Wynika to z tego, że w części 12 nie ma żadnych słów poprzedzających w3 (tutaj: „xii").
Jeśli nie pamiętasz, jak coś zostało zrobione w filmie, skorzystaj ze slajdów dostępnych po prawej stronie konsoli.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark SQL w Pythonie
Instrukcje do ćwiczenia
- Pobierz słowo dla każdego wiersza wraz z dwoma poprzedzającymi je słowami i dwoma następującymi po nim słowami.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)