Перетворення тексту у векторний формат
Ви навчилися розбивати речення та перетворювати масив слів на числовий вектор за допомогою 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)