Создание данных признаков контекстного окна
Техника скользящего окна полезна для алгоритмов машинного обучения, работающих с данными признаков контекстного окна.
В вашем рабочем пространстве доступна таблица text со столбцами id, word, part, title. Она содержит главы 9, 10, 11 и 12 книги о Шерлоке Холмсе. Слова уже обработаны и организованы по одному в каждой строке. Каждое слово имеет уникальный целочисленный индекс в столбце id: чем раньше слово встречается в тексте, тем меньше его значение id.
Первые 10 строк набора данных для главы 12 выведены в консоль как Table1. Первые десять строк ожидаемого результата, ограниченные частью 12 (глава 12), выведены в консоль как Table2. В Table2 «текущее» слово строки находится в столбце w3. Столбцы w1 и w2 содержат два слова, непосредственно предшествующих текущему, а столбцы w4 и w5 — два слова, следующих за ним.
Обратите внимание: в первой строке w1 и w2 имеют значение null. Это связано с тем, что в части 12 нет слов, стоящих перед w3 (здесь — «xii»).
Если вы не помните, как что-то делалось в видео, воспользуйтесь слайдами, доступными справа от консоли.
Это упражнение является частью курса
Введение в Spark SQL на Python
Инструкции к упражнению
- Получите слово для каждой строки, а также два предшествующих слова и два последующих слова.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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)