ComenzarEmpieza gratis

Transformar texto a formato vectorial

Has aprendido a dividir oraciones y a transformar un array de palabras en un vector numérico usando un CountVectorizer.

Se proporciona un dataframe df con las siguientes columnas: sentence, in y out. Cada columna es un array de cadenas. sentence es una lista de palabras que representa una oración de un libro de texto. La columna out contiene la última palabra de sentence. La columna in se obtiene eliminando la última palabra de sentence.

El model de CountVectorizer espera un dataframe con una columna words y crea una columna vec.

Primero realizarás una transformación que añade una columna invec, que se ve así:

+----------------------+-------+------------------------------------+
|in                    |out    |invec                               |
+----------------------+-------+------------------------------------+
|[then, how, many, are]|[there]|(126,[3,18,28,30],[1.0,1.0,1.0,1.0])|
|[how]                 |[many] |(126,[28],[1.0])                    |
|[i, donot]            |[know] |(126,[15,78],[1.0,1.0])             |
+----------------------+-------+------------------------------------+
only showing top 3 rows

Después realizarás una segunda transformación, que se ve así:

+------------------------------------+----------------+
|invec                               |outvec          |
+------------------------------------+----------------+
|(126,[3,18,28,30],[1.0,1.0,1.0,1.0])|(126,[11],[1.0])|
|(126,[28],[1.0])                    |(126,[18],[1.0])|
|(126,[15,78],[1.0,1.0])             |(126,[21],[1.0])|
+------------------------------------+----------------+
only showing top 3 rows

Este ejercicio forma parte del curso

Introducción a Spark SQL en Python

Ver curso

Instrucciones del ejercicio

  • Crea un dataframe llamado result usando model para transform() df. result tiene las columnas sentence, in, out e invec. invec es la transformación vectorial de la columna in.
  • Añade una columna a result llamada outvec. Ahora result tiene las columnas sentence, in, out, invec y outvec.

Ejercicio interactivo práctico

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

# Transform df using model
result = model.____(df.withColumnRenamed('in', 'words'))\
        .withColumnRenamed('words', 'in')\
        .withColumnRenamed('vec', 'invec')
result.drop('sentence').show(3, False)

# Add a column based on the out column called outvec
result = model.transform(result.withColumnRenamed('out', 'words'))\
        .withColumnRenamed('words', 'out')\
        .withColumnRenamed('vec', '____')
result.select('invec', 'outvec').show(3, False)	
Editar y ejecutar código