ComeçarComece de graça

Transformando texto em formato vetorial

Você aprendeu a dividir frases e transformar um array de palavras em um vetor numérico usando um CountVectorizer.

É fornecido um dataframe df com as seguintes colunas: sentence, in e out. Cada coluna é um array de strings. sentence é uma lista de palavras que representa uma frase de um livro. A coluna out traz a última palavra de sentence. A coluna in é obtida removendo a última palavra de sentence.

O model do CountVectorizer espera um dataframe com uma coluna words e cria uma coluna vec.

Você primeiro fará uma transformação que adiciona uma coluna invec, que fica assim:

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

Depois, você fará uma segunda transformação, que fica assim:

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

Este exercício faz parte do curso

Introdução ao Spark SQL em Python

Ver curso

Instruções do exercício

  • Crie um dataframe chamado result usando model para transform() df. result terá as colunas sentence, in, out e invec. invec é a transformação vetorial da coluna in.
  • Adicione uma coluna a result chamada outvec. Agora result terá as colunas sentence, in, out, invec e outvec.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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)	
Editar e executar o código