Przekształcanie tekstu do formatu wektorowego
Wiesz już, jak dzielić zdania i przekształcać tablicę słów w wektor numeryczny za pomocą CountVectorizer.
Dostępna jest ramka danych df z następującymi kolumnami: sentence, in i out. Każda kolumna zawiera tablicę ciągów tekstowych. Kolumna sentence to lista słów reprezentujących zdanie z podręcznika. Kolumna out zawiera ostatnie słowo zdania. Kolumna in powstaje przez usunięcie ostatniego słowa z kolumny sentence.
Model CountVectorizer o nazwie model oczekuje ramki danych z kolumną words i tworzy kolumnę vec.
Na początku wykonasz transformację, która dodaje kolumnę invec. Wynik wygląda następująco:
+----------------------+-------+------------------------------------+
|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
Następnie wykonasz drugą transformację, której wynik wygląda tak:
+------------------------------------+----------------+
|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
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark SQL w Pythonie
Instrukcje do ćwiczenia
- Utwórz ramkę danych o nazwie
result, używającmodeldo wywołaniatransform()nadf. Ramkaresultzawiera kolumnysentence,in,outorazinvec. Kolumnainvecto wektorowa reprezentacja kolumnyin. - Dodaj do ramki
resultkolumnęoutvec. Ramkaresultzawiera teraz kolumnysentence,in,out,invecioutvec.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)