Omvandla text till vektorformat
Du har lärt dig att dela upp meningar och omvandla en array av ord till en numerisk vektor med hjälp av en CountVectorizer.
En dataram df tillhandahålls med följande kolumner: sentence, in och out. Varje kolumn är en array av strängar. sentence är en lista med ord som representerar en mening från en lärobok. Kolumnen out ger det sista ordet i sentence. Kolumnen in skapas genom att ta bort det sista ordet från sentence.
CountVectorizer-modellen model förväntar sig en dataram med en kolumn words och skapar en kolumn vec.
Du börjar med att utföra en transformation som lägger till en kolumn invec, vilket ser ut så här:
+----------------------+-------+------------------------------------+
|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
Därefter utför du en andra transformation, vilket ser ut så här:
+------------------------------------+----------------+
|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
Den här övningen är en del av kursen
Introduktion till Spark SQL i Python
Övningsinstruktioner
- Skapa en dataram kallad
resultgenom att användamodelför att anropatransform()pådf.resulthar kolumnernasentence,in,outochinvec.invecär vektortransformationen av kolumnenin. - Lägg till en kolumn i
resultkalladoutvec.resulthar nu kolumnernasentence,in,out,invecochoutvec.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)