CommencezCommencez gratuitement

Transformer du texte en format vectoriel

Vous avez appris à découper des phrases et à transformer un tableau de mots en vecteur numérique à l'aide d'un CountVectorizer.

Un dataframe df est fourni avec les colonnes suivantes : sentence, in et out. Chaque colonne est un tableau de chaînes. sentence est une liste de mots représentant une phrase tirée d'un manuel. La colonne out donne le dernier mot de sentence. La colonne in est obtenue en retirant le dernier mot de sentence.

Le CountVectorizer model s'attend à un dataframe contenant une colonne words et crée une colonne vec.

Vous effectuerez d'abord une transformation qui ajoute une colonne invec, qui ressemble à ceci :

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

Vous effectuerez ensuite une deuxième transformation, qui ressemble à ceci :

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

Cette activité fait partie du cours

Introduction à Spark SQL en Python

Voir le cours

Instructions de l’exercice

  • Créez un dataframe appelé result en utilisant model pour transform() df. result contient les colonnes sentence, in, out et invec. invec est la transformation vectorielle de la colonne in.
  • Ajoutez à result une colonne appelée outvec. result contient maintenant les colonnes sentence, in, out, invec et outvec.

Exercice interactif pratique

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

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