ПочатиПочніть безкоштовно

Перетворення тексту у векторний формат

Ви навчилися розбивати речення та перетворювати масив слів на числовий вектор за допомогою CountVectorizer.

Надано датафрейм df з такими стовпцями: sentence, in і out. Кожен стовпець — це масив рядків. sentence — це список слів, що представляє речення з підручника. Стовпець out містить останнє слово з sentence. Стовпець in отримано видаленням останнього слова з sentence.

model типу CountVectorizer очікує датафрейм зі стовпцем words і створює стовпець vec.

Спершу ви виконаєте перетворення, яке додає стовпець invec, що виглядає так:

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

Потім ви виконаєте друге перетворення, яке виглядає так:

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

Ця вправа є частиною курсу

Вступ до Spark SQL у Python

Переглянути курс

Інструкції до вправи

  • Створіть датафрейм result, застосувавши model для transform() над df. result має стовпці sentence, in, out і invec. invec — це векторне перетворення стовпця in.
  • Додайте до result стовпець outvec. Тепер result має стовпці sentence, in, out, invec і outvec.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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)	
Редагувати та запускати код