CommencerCommencer 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 de caractères. sentence est une liste de mots représentant une phrase tirée d’un manuel. La colonne out contient le dernier mot de sentence. La colonne in est obtenue en retirant le dernier mot de sentence.

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

Vous allez d’abord effectuer une transformation qui ajoute une colonne invec, ce qui donne :

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

Ensuite, vous effectuerez une seconde transformation, qui donne :

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

Cet exercice fait partie du cours

Introduction à Spark SQL en Python

Afficher le cours

Instructions

  • 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 une colonne à result appelée outvec. result contient maintenant les colonnes sentence, in, out, invec et outvec.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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