Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz ramkę danych o nazwie result, używając model do wywołania transform() na df. Ramka result zawiera kolumny sentence, in, out oraz invec. Kolumna invec to wektorowa reprezentacja kolumny in.
  • Dodaj do ramki result kolumnę outvec. Ramka result zawiera teraz kolumny sentence, in, out, invec i outvec.

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)	
Edytuj i uruchom kod