Alura > Cursos de Inteligência Artificial > Cursos de IA para Dados > Conteúdos de IA para Dados > Primeiras aulas do curso TensorFlow Keras: classificando e sugerindo palavras

TensorFlow Keras: classificando e sugerindo palavras

Lidando com texto - Apresentação

Olá! Sou Allan Spadini, instrutor na Alura.

Audiodescrição: Allan Spadini é uma pessoa branca, com cabelos e olhos castanhos. Usa uma camiseta preta com estampa e está sentado de frente para um microfone de mesa. Ao fundo, uma parede lisa com iluminação degradê do verde ao azul.

Já pensou em como seu editor de textos sugere as próximas palavras que você deve digitar?

Neste curso sobre TensorFlow, voltado para a classificação e sugestão de próximas palavras, estudaremos o problema de um portal de notícias.

Este portal precisa classificar os títulos e descrições dos artigos em diferentes categorias. Além disso, é necessário que as pessoas que escrevem os artigos para este portal adotem sempre o mesmo estilo.

Por isso, precisaremos construir um modelo de Deep Learning capaz de sugerir as próximas palavras, sempre seguindo o mesmo estilo.

Nessa jornada, aprenderemos a utilizar o TensorFlow para construir modelos de Deep Learning que realizem essas tarefas.

Para acompanhar este curso, é importante que você saiba utilizar a linguagem Python, voltada para a Ciência de Dados. Além de saber utilizar o TensorFlow para executar tarefas de classificação em dados tabulares, em tabelas.

Te esperamos nos próximos vídeos desse curso. Até lá!

Lidando com texto - Carregando textos

Imagine que somos cientistas de dados trabalhando para um portal de notícias. Este portal quer construir uma solução que automatize a classificação das notícias em diferentes categorias.

As diferentes categorias que queremos classificar esses dados, são: mundo, esportes, negócios e ciência e tecnologia.

Acessando o dataset

Abriremos o dataset para entender como esses dados serão passados para um modelo de Deep Learning, que construiremos para executar essa tarefa. Para isso, usaremos a plataforma Lightning AI. Caso você também queira utilizá-la, disponibilizamos um tutorial nessa aula.

Se você quiser executar o conteúdo deste curso no Google Colab, é totalmente possível. Usaremos essa plataforma pois ela oferece algumas GPUs que funcionam por mais tempo, isso nos ajudará na gravação do curso. No momentoda gravação do curso a plataforma é gratuita.

Já estamos com a plataforma Lightning AI aberta no computador, com um ambiente de VS Code. Nela, acessarmos o dataset, que está no GitHub.

url ='https://github.com/allanspadini/curso-tensorflow-proxima-palavra/raw/main/dados/train.zip'

Para ler esse dataset, usaremos a biblioteca Pandas. Então, começaremos fazendo a importação escrevendo import pandas as pd, seguido de "Enter".

import pandas as pd

Entendendo a estrutura dos dados

Vamos ler esse dataset com o read.csv. Então, na célula abaixo, escrevemos df = pd.read_csv(). Nos parênteses, passaremos a url onde colocamos os nossos dados seguido e header=None,names=['ClassIndex, 'Título','Descrição'].

df = pd.read_csv(header=None,names=['ClassIndex, 'Título','Descrição'])

Vamos imprimir as primeiras linhas, passando df.head().

df.head()

Assim, temos o seguinte retorno:

-ClassIndexTituloDescrição
03Wall St. Bears Claw Back Into the Black (Reuters)Reuters - Short-sellers, Wall Street's dwindli...
13Carlyle Looks Toward Commercial Aerospace (Reu...Reuters - Private investment firm Carlyle Grou...
23Oil and Economy Cloud Stocks' Outlook (Reuters)Reuters - Soaring crude prices plus worries\ab...
33Iraq Halts Oil Exports from Main Southern Pipe...Reuters - Authorities have halted oil export\f...
43Oil prices soar to all-time record, posing new...AFP - Tearaway world oil prices, toppling reco...

Temos o ClassIndex, que é justamente a classe que estávamos mostrando anteriormente. Temos a classe, o título e a descrição dessas informações. Então, a classe está sendo identificada por um número, mas ela tem uma categoria correspondente em texto.

Porém, o que queremos fazer, para trabalhar com esse texto, é colocar o título e a descrição desse texto em uma única coluna. Então, a primeira tarefa que faremos é colocar em uma nova coluna chamada texto.

Na célula abaixo, escrevemos df['Texto'] = df['Titulo'] + ' ' + df['Descrição'] e pressionamos "Shift + Enter". Feito isso, temos essa informação de texto em uma única coluna.

Após, digitamos df['Texto'], para visualizarmos como ficou.

0Wall St. Bears Claw Back Into the Black (Reuters)
1Carlyle Looks Toward Commercial Aerospace (Reu...
2Oil and Economy Cloud Stocks' Outlook (Reuters)
3Iraq Halts Oil Exports from Main Southern Pipe...
4Oil prices soar to all-time record, posing new...
-...
119995Pakistan's Musharraf Says Won't Quit as Army C...
119996Renteria signing a top-shelf deal Red Sox gene...
119997Saban not going to Dolphins yet The Miami Dolp...
119998Today's NFL games PITTSBURGH at NY GIANTS Time...
//Dados omitidos

Além disso, precisaremos realizar um pré-processamento nos dados de índice. Vamos passar para o TensorFlow os dados na forma numérica, mas precisamos garantir que esses dados comecem do valor 0.

Como sabemos que vão até o valor 4, vamos realizar o pré-processamento deles passando o df['ClassIndex'] = df['ClassIndex']-1. Pressionamos "Shift + Enter".

df['ClassIndex'] = df['ClassIndex']-1

Separando dados de treino e teste

Feito isso, temos as classes no formato adequado. Agora, também precisaremos dividir os dados em uma parte para treinar o modelo de Deep Learning e outra para validá-lo.

Para separá-los, usaremos a biblioteca SK Learn. Lembrando que eles estão num dataframe. Então, escrevemos from sklearn.model_selection import train_test_split.

from sklearn.model_selection import train_test_split

Agora, queremos dividir os dados em treino e teste. Então, passamos X_treino, X_test, y_train, y_test = train_test_split(). Nos parênteses, passamos df['Texto'], seguido de .values, a classe que queremos identificar df['ClassIndex'], por fim .values, test_size=0.2, random_state=4256.

X_treino, X_test, y_train, y_test = train_test_split() = df['Texto'].values,df['ClassIndex'].values, test_size=0.2, random_state=4256

Após pressionar "Shift + Enter", temos os dados separados em treino e teste. O texto está na variável x e a classe na y. Queremos introduzir o texto e receber uma classe para nossa rede neural, que só entende números.

Vamos descobrir como fazer isso no vídeo seguinte! Até lá.

Lidando com texto - Codificando o texto

Precisamos transformar nossos textos em números. Isso, porque até o momento, realizamos o processo over view geral e dividimos nossos dados em treino e teste. Além disso, os guardamos nas variáveis X e Y, nossa entrada e a saída esperada da rede neural.

No entanto, na variável X, temos os dados em texto. Por isso, precisamos converter esses dados para o formato numérico, que é o formato que a rede neural compreende para processar.

Transformando textos em números

Para fazer isso, realizaremos um processo que chamamos de tokenização. Esse processo será realizado utilizando a biblioteca TensorFlow. Sendo assim, começamos fazendo a importação, então escrevemos import tensorflow as tf. Após, pressionamos "Shift + Enter".

import tensorflow as tf

Nela, usaremos uma função específica. Para importar essa função específica, precisamos definir um tamanho de vocabulário, o máximo número de palavras diferentes que temos dentro do texto. Como não sabemos o máximo número de palavras, definiremos um valor específico, por exemplo, mil palavras para o nosso texto, mil palavras que o nosso tokenizador entenderá. Então, escrevemos VOCAB_SIZE = 1000.

VOCAB_SIZE = 1000

Criando o encoder

Feito isso, criaremos um encoder, que vai realizar esse processo de tokenização. Escrevemos na nova célula encoder = tf.keras.layers.TextVectorization(). Nos parênteses, passamos max_tokens=vocab_size, que é o máximo número de palavras.

encoder = tf.keras.layers.TextVectorization()

Tendo o encoder definido, vamos utilizá-lo sobre o dataset. Então, passamos encoder.adapt(X_treino), os dados que separamos no vídeo anterior.

encoder.adapt(X_treino)

Tendo esse processo realizado, já conseguimos pegar algumas propriedades dos nossos dados, como o vocabulário. Para isso, na célula seguinte, passamos encoder.get_vocabulary()[::10].

encoder.get_vocabulary()[::10]

Assim, temos o retorno abaixo.

['',

'39s',

'it',

'was',

'two',

'company',

'than',

'million',

'corp',

'which',

'next',

'sales',

//Dados omitidos

Conseguimos visualizar algumas palavras em inglês que aparecem de forma única, além de espaço vazio. Mas, para que serve esse encoder? Temos um exemplo salvo, que é uma frase em inglês. Aplicaremos esse encoder sobre essa frase para entender o que ele está fazendo.

Exemplo = "Today's NFL games PITTSBURGH at NY GIANTS"

Após pressionar "Shift + Enter", agora temos dentro da variável Exemplo essa frase. Após, passamos encoder(Exemplo) e rodamos.

encoder(Exemplo)

Assim, temos o retorno abaixo:

<tf.Tensor: shape=(7,), dtype=int64, numpy=array([ 1, 719, 200, 1, 14, 1, 506 ])>

Ele criou um tensor e dentro dele tem um numpy=array, que é uma sequência de números. Cada um desses números, dentro desse array, está representando uma palavra dentro da nossa frase.

Nesse caso, ele pode não ter um número correspondente a cada palavra, porque pode não ter todas as palavras dentro do vocabulário, já que restringimos a mil palavras diferentes o conjunto de texto.

Porém, com isso, conseguimos ter uma ideia das propriedades das frases que estamos passando para ele.

Já temos todos os elementos necessários para passar para a rede neural. Já temos um elemento que transformará as nossas palavras em números.

Então, no próximo vídeo, começaremos a construir essa rede neural para pegar essa entrada e conseguir classificá-la em uma classe específica, os trechos de texto em classes de artigos diferentes.

Até o próximo vídeo!

Sobre o curso TensorFlow Keras: classificando e sugerindo palavras

O curso TensorFlow Keras: classificando e sugerindo palavras possui 127 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de IA para Dados em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda IA para Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas