IniziaInizia gratis

Trasformare il testo in formato vettoriale

Hai imparato come suddividere le frasi e trasformare un array di parole in un vettore numerico usando un CountVectorizer.

È fornito un dataframe df con le seguenti colonne: sentence, in e out. Ogni colonna è un array di stringhe. sentence è un elenco di parole che rappresentano una frase tratta da un libro di testo. La colonna out fornisce l'ultima parola di sentence. La colonna in si ottiene rimuovendo l'ultima parola da sentence.

Il model di CountVectorizer si aspetta un dataframe con una colonna words e crea una colonna vec.

Per prima cosa eseguirai una trasformazione che aggiunge una colonna invec, che appare come segue:

+----------------------+-------+------------------------------------+
|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

Poi eseguirai una seconda trasformazione, che appare come segue:

+------------------------------------+----------------+
|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

Questo esercizio fa parte del corso

Introduzione a Spark SQL in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un dataframe chiamato result usando model per transform() df. result ha le colonne sentence, in, out e invec. invec è la trasformazione vettoriale della colonna in.
  • Aggiungi a result una colonna chiamata outvec. Ora result ha le colonne sentence, in, out, invec e outvec.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)	
Modifica ed esegui il codice