Transformarea textului în format vectorial
Ai învățat cum să împarți propoziții și să transformi un array de cuvinte într-un vector numeric folosind un CountVectorizer.
Este furnizat un dataframe df cu următoarele coloane: sentence, in și out. Fiecare coloană este un array de șiruri de caractere. sentence este o listă de cuvinte care reprezintă o propoziție dintr-un manual. Coloana out conține ultimul cuvânt din sentence. Coloana in se obține prin eliminarea ultimului cuvânt din sentence.
CountVectorizer-ul model așteaptă un dataframe cu o coloană words și creează o coloană vec.
Vei efectua mai întâi o transformare care adaugă o coloană invec, care arată astfel:
+----------------------+-------+------------------------------------+
|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
Apoi vei efectua o a doua transformare, care arată astfel:
+------------------------------------+----------------+
|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
Acest exercițiu face parte din cursul
Introducere în Spark SQL în Python
Instrucțiuni pentru exercițiu
- Creează un dataframe numit
resultfolosindmodelpentru a aplicatransform()pedf.resultva conține coloanelesentence,in,outșiinvec.inveceste transformarea vectorială a coloaneiin. - Adaugă o coloană numită
outveclaresult.resultva conține acum coloanelesentence,in,out,invecșioutvec.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)