Створення ознак контекстного вікна
Техніка рухомого вікна корисна для моделей алгоритмів машинного навчання, які використовують дані ознак контекстного вікна.
У вашому середовищі доступна таблиця text зі стовпцями id, word, part, title. Вона містить розділи 9, 10, 11 і 12 книжки про Шерлока Голмса. Слова вже оброблені та впорядковані так, що в кожному рядку одне слово. Кожне слово має унікальний цілий індекс у стовпці id. Значення id менше для слів, що з'являються раніше в тексті, і більше для слів, що з'являються пізніше.
Перші 10 рядків набору даних для розділу 12 виведено в консоль як Table1. Перші десять рядків бажаного результату, обмежені показом частини 12 (Chapter 12), виведено в консоль як Table2. У Table2 «поточне» слово для рядка подано в стовпці w3. Стовпці w1 і w2 містять два слова безпосередньо перед поточним словом. Стовпці w4 і w5 містять два слова безпосередньо після поточного слова.
Зверніть увагу, що w1 і w2 дорівнюють null для першого рядка. Це тому, що немає жодних слів перед w3 (тут «xii») у межах частини 12.
Не соромтеся звертатися до слайдів праворуч від консолі, якщо ви забули, як щось робилося у відео.
Ця вправа є частиною курсу
Вступ до 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)