Aan de slagGa gratis aan de slag

Tekst omzetten naar vectorformaat

Je hebt geleerd hoe je zinnen splitst en een array van woorden omzet naar een numerieke vector met een CountVectorizer.

Er is een dataframe df beschikbaar met de kolommen: sentence, in en out. Elke kolom is een array van strings. sentence is een lijst met woorden die samen een zin uit een tekstboek vormen. De kolom out geeft het laatste woord van sentence. De kolom in is verkregen door het laatste woord uit sentence te verwijderen.

Het CountVectorizer-model verwacht een dataframe met een kolom words en maakt een kolom vec aan.

Je voert eerst een transform uit die een kolom invec toevoegt, die er als volgt uitziet:

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

Daarna voer je een tweede transform uit, die er als volgt uitziet:

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

Deze oefening maakt deel uit van de cursus

Introductie tot Spark SQL in Python

Cursus bekijken

Oefeninstructies

  • Maak een dataframe result door model te gebruiken om transform() op df toe te passen. result heeft de kolommen sentence, in, out en invec. invec is de vectortransformatie van de kolom in.
  • Voeg aan result een kolom outvec toe. result heeft nu de kolommen sentence, in, out, invec en outvec.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)	
Code bewerken en uitvoeren