ComenzarEmpieza gratis

Creación de datos de características de ventana de contexto

La técnica de ventana deslizante es útil para modelos de Machine Learning que usan datos de características de ventana de contexto.

En tu espacio de trabajo hay una tabla text con las columnas id, word, part, title. Contiene los capítulos 9, 10, 11 y 12 del libro de Sherlock Holmes. Las palabras ya están procesadas y organizadas a una palabra por fila. Cada palabra tiene un índice entero único en la columna id. La columna id es menor para palabras que aparecen antes en el texto y mayor para palabras que aparecen más tarde.

Las primeras 10 filas del conjunto de datos para el capítulo 12 se han imprimido en la consola como Table1. Las primeras diez filas del resultado deseado, limitado a mostrar la parte 12 (Capítulo 12), se han imprimido en la consola como Table2. En Table2, la palabra «dada» para la fila aparece en la columna w3. Las columnas w1 y w2 muestran las dos palabras inmediatamente anteriores a la palabra dada. Las columnas w4 y w5 muestran las dos palabras inmediatamente posteriores a la palabra dada.

Observa que w1 y w2 valen null en la primera fila. Esto se debe a que no hay palabras anteriores a w3 (aquí, «xii») que estén dentro de la parte 12.

No dudes en consultar las diapositivas disponibles a la derecha de la consola si se te olvida cómo se hizo algo en el vídeo.

Este ejercicio forma parte del curso

Introducción a Spark SQL en Python

Ver curso

Instrucciones del ejercicio

  • Obtén la palabra de cada fila junto con las dos palabras anteriores y las dos posteriores.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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)
Editar y ejecutar código