НачатьНачать бесплатно

Преобразование текста в векторный формат

Вы узнали, как разбивать предложения на слова и преобразовывать массив слов в числовой вектор с помощью CountVectorizer.

Дан датафрейм df со следующими столбцами: sentence, in и out. Каждый столбец содержит массив строк. sentence — это список слов, представляющих предложение из учебника. Столбец out содержит последнее слово из sentence. Столбец in получается путём удаления последнего слова из sentence.

CountVectorizer model ожидает датафрейм со столбцом 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)	
Редактировать и запускать код