CommencezCommencez gratuitement

Créer des données de caractéristiques avec fenêtre de contexte

La technique de fenêtre mobile est utile pour les modèles de Machine Learning qui s'appuient sur des données de caractéristiques de fenêtre de contexte.

Une table text comportant 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 à raison d'un mot par ligne. Chaque mot possède un indice entier unique fourni par la colonne id. La colonne id est plus petite pour les mots qui apparaissent plus tôt dans le texte et plus grande pour ceux qui apparaissent plus tard.

Les 10 premières lignes de l'ensemble de données pour le chapitre 12 sont imprimées dans la console sous le nom Table1. Les dix premières lignes du résultat souhaité, limité aux données de la part 12 (chapitre 12), sont imprimées dans la console sous le nom Table2. Dans Table2, le mot « donné » pour la ligne est fourni 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é.

Remarquez 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 se trouve dans la part 12.

N'hésitez pas à consulter le diaporama à droite de la console si vous avez un doute sur une étape vue dans la vidéo.

Cette activité fait partie du cours

Introduction à Spark SQL en Python

Voir le cours

Instructions de l’exercice

  • Obtenez, pour chaque ligne, le mot courant ainsi que les deux mots précédents et les deux mots suivants.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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