CommencerCommencer gratuitement

Créer des données de caractéristiques à partir d’une fenêtre de contexte

La technique de fenêtre glissante est utile pour les modèles de Machine Learning qui utilisent des données de caractéristiques basées sur une fenêtre de contexte.

Une table text avec les colonnes id, word, part, title est disponible dans votre espace de travail. Elle contient les chapitres 9, 10, 11 et 12 du livre Sherlock Holmes. Les mots ont déjà été traités et organisés en un mot par ligne. Chaque mot possède un identifiant entier unique fourni par la colonne id. La colonne id est plus petite pour les mots apparaissant plus tôt dans le texte et plus grande pour les mots apparaissant plus tard.

Les 10 premières lignes du jeu de données pour le chapitre 12 sont affichées dans la console sous le nom Table1. Les dix premières lignes du résultat attendu, limitées à la partie 12 (Chapitre 12), sont affichées dans la console sous le nom Table2. Dans Table2, le mot « donné » pour la ligne figure dans la colonne w3. Les colonnes w1 et w2 donnent les deux mots immédiatement avant le mot donné. Les colonnes w4 et w5 donnent les deux mots immédiatement après le mot donné.

Notez que w1 et w2 valent null pour la première ligne. C’est parce qu’il n’y a aucun mot avant w3 (ici, « xii ») qui soit dans la partie 12.

N’hésitez pas à consulter les diaporamas disponibles à droite de la console si vous avez oublié comment quelque chose a été fait dans la vidéo.

Cet exercice fait partie du cours

Introduction à Spark SQL en Python

Afficher le cours

Instructions

  • Récupérez le mot de chaque ligne, ainsi que les deux mots précédents et les deux mots suivants.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)
Modifier et exécuter le code