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á!
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.
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
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:
- | ClassIndex | Titulo | Descrição |
---|---|---|---|
0 | 3 | Wall St. Bears Claw Back Into the Black (Reuters) | Reuters - Short-sellers, Wall Street's dwindli... |
1 | 3 | Carlyle Looks Toward Commercial Aerospace (Reu... | Reuters - Private investment firm Carlyle Grou... |
2 | 3 | Oil and Economy Cloud Stocks' Outlook (Reuters) | Reuters - Soaring crude prices plus worries\ab... |
3 | 3 | Iraq Halts Oil Exports from Main Southern Pipe... | Reuters - Authorities have halted oil export\f... |
4 | 3 | Oil 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.
0 | Wall St. Bears Claw Back Into the Black (Reuters) |
---|---|
1 | Carlyle Looks Toward Commercial Aerospace (Reu... |
2 | Oil and Economy Cloud Stocks' Outlook (Reuters) |
3 | Iraq Halts Oil Exports from Main Southern Pipe... |
4 | Oil prices soar to all-time record, posing new... |
- | ... |
119995 | Pakistan's Musharraf Says Won't Quit as Army C... |
119996 | Renteria signing a top-shelf deal Red Sox gene... |
119997 | Saban not going to Dolphins yet The Miami Dolp... |
119998 | Today'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
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á.
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.
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
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!
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.