Olá! Bem-vindos e bem-vindas a mais um curso de Spark! Meu nome é Ana Duarte e vou te acompanhar nessa jornada.
Ana Duarte é uma mulher branca de olhos e cabelos castanhos e curtos. Veste uma camiseta verde musgo e está sentada em uma cadeira preta. Ao fundo, uma parede lisa na cor verde claro.
Neste curso aprenderemos algumas formas de processar dados textuais, aplicando técnicas de NLP (Natural Language Processing, ou "Processamento de Linguagem Natural" em português) juntamente com a construção de modelo de Machine Learning ("aprendizagem automática" em português), para classificar comentários.
Juntos, construiremos um projeto contendo depoimentos sobre filmes, coletados do IMDb e classificados em positivos e negativos. Aplicaremos as técnicas de NPL a fim de tornar estes comentários mais compreensíveis para o computador.
Iniciaremos limpando e removendo os caracteres que não farão parte da análise. Em seguida, faremos a separação dos depoimentos em várias partes, aplicando o conceito de tokenização, e removeremos palavras que não acrescentam à nossa análise.
A tokenização é o processo de dividir uma frase em partes ou tokens individuais, na maioria das vezes em palavras únicas.
Feito isso, aplicaremos o conceito de bag of words, ou "sacola de palavras", que contabiliza os termos do nosso vocabulário. Por fim, ajustaremos uma árvore de decisão que criará um conjunto de regras que nos ajudarão a classificar os comentários.
Todo o processo será feito com o PySpark, então contaremos com o processamento de memória do Spark utilizando a linguagem Python.
Topa o desafio? Então nos vemos nos próximos vídeos!
Para iniciarmos nosso projeto, primeiro precisamos passar por alguns conceitos, um deles é o NLP - Natural Language Processing ou "Processamento de Linguagem Natural" em português.
O processamento de linguagem natural é a metodologia que ajuda o computado a compreender a linguagem natural utilizada por nós, seres humanos. Esta metodologia tem se desenvolvido bastante ao longo dos anos graças ao avanço computacional, aos estudos feitos por pessoas que constroem o algoritmo (geralmente tecnólogos) e às pessoas que entendem as regras da linguagem (os letrados).
Entre as principais aplicações do NLP, podemos citar a Siri e a Alexa - assistentes virtuais desenvolvidas pela Apple e pela Amazon respectivamente - que representam a interação mais comum entre humano e máquina por meio da linguagem falada.
O Google tradutor também sofre influência desta metodologia, uma vez que, cada dia mais, consegue identificar expressões e jargões típicos de cada linguagem. Outro exemplo sãos os bots de call center, que utilizam NPL para analisar as requisições dos usuários.
De forma resumida, o NLP identifica, através dos algoritmos, as regras de linguagem natural presentes nos textos. Com isso, é possível transformar os dados não estrturados a fim de que se tornem compreensíveis ao computador, permitindo, assim, associar cada texto a um significado específico.
Como as aplicações do NLP estão sempre gerando dados, inserem-se num contexto de Big Data, o que requer aplicações com recursos que consigam processá-los. Pensando nisso, nós utilizaremos a ferramenta Spark, que nos permite analisar um grande número de dados, e a linguagem Pyhton como meio de acessá-los.
Big Data é área do conhecimento que estuda como tratar, analisar e obter informações a partir de conjuntos de dados grandes demais para serem analisados por sistemas tradicionais.
Agora que compreendemos o NLP e como o Spark está inserido neste contexto, vamos entender como esses dados chegam até nós no próximo vídeo. Até lá!
Agora que entendemos melhor o objetivo da nossa análise, veremos como esses dados estão organizados.
Para que possamos dar início a esta etapa, é necessário que tenhamos instalado o PySpark e iniciado uma sessão. Caso você não tenha realizado este procedimento, veja como fazê-lo na seção "Preparando o ambiente".
Com o PySpark instalado e a sessão iniciada, é hora de baixar os dados do Kaggle . Para isso, basta acessar o link disponibilizado no notebook e clicar no botão de download, que deve aparecer no canto superior direito da aba.
Em seguida, realizaremos o carregamento desses dados, que devem ser feitos de duas maneiras: no próprio ambiente do Colab e no Google Drive.
Para carregar no Colab, clique em "Arquivos" - último ícone da barra lateral esquerda - em seguida, em "Fazer download para o armazenamento da sessão" e selecione o arquivo. Perceba que, ao carregá-lo, surgirá o seguinte aviso "Observação: os arquivos enviados serão excluídos quando o ambieente de execução for reiniciado" seguido das opções "Mais informações" e "OK"; clique em "OK".
Este aviso também deve surgir ao abrir a sessão e instalar o PySpark. Isso significa que sempre que o ambiente ficar inativo será necessário reconectá-lo, instalar o PySpark, abrir a sessão e carregar o arquivo novamente, o que nos leva à segunda maneira: o Google Drive. O procedimento desta segunda forma consta neste vídeo, basta assistir e seguir o passo a passo.
Hora de ler os dados! Para isso, basta chamar nossa base dados
e pedir que o Spark leia através do comando spark.read.csv(" ")
. Este comando deve receber como argumento o caminho da pasta onde os dados foram armazenados. Para pegar este caminho, navegue até a barra lateral e vá em "Mais opções" - 3 pontinhos - no canto da pasta onde constam os arquivos, em seguida, clique em "Copiar caminho". Você pode optar, também, pelo caminho da pasta no Google Drive. Aqui, usaremos esta última opção.
dados = spark.read.csv("/content/drive/MyDrive/Alura/imdb-reviews-pt-br.csv")
Outro parâmetro que deve ser passado ao comando spark.read.csv(" ")
é o escape
. Nossos depoimentos possuem muitas aspas e para não dar nenhum problema usaremos este método informando que estes depoimentos estão entre aspas duplas '\"'
. O próximo argumento é o inferSchema
, que deve auxiliar a deduzir os tipos de colunas, portanto deve ser igual a =True
.
dados = spark.read.csv("/content/drive/MyDrive/Alura/imdb-reviews-pt-br.csv", '\"', inferSchema=True)
Por fim, passamos o argumento responsável por informar que nossos dados possuem um cabeçalho, então header = True
. O código deve ficar assim:
dados = spark.read.csv("/content/drive/MyDrive/Alura/imdb-reviews-pt-br.csv", '\"', inferSchema=True, header = True)
Rode esta célula e vamos para a etapa de exploração desses dados.
Nesta etapa, iremos entender os tamanhos, campos e tipos dos dados, além de observar o conteúdo de cada campo e a proporção das categorias. Para o tamanho dos dados, podemos pensar em quantidade de linhas e colunas, portanto chamaremos nossa base dados
e o método .count()
. Ao rodar este código, note que deve retornar cerca de 49 mil linhas.
dados.count()
Agora rodamos a função len(dados.columns)
que nos retornará a contagem de colunas, que são 4.
Para que possamos visualizar melhor esses dados, usaremos o comando format, da própria linguagem Python, para printar o número de linhas e de colunas
print(f'Nº de Linhas:{dados.count()}', f'Nº de colunas:{len(dados.columns)}')
Ao rodar este código, teremos uma leitura melhor da estrutura dos nossos dados.
Hora de vermos quais são os tipos de dados que estão nessas colunas. Para isso, usaremos o comando dados.printSchema()
que deve nos retornar as informações de que as colunas se chamam, respectivamente, "id", "text_en", "text_pt" e "sentiment". Além disso, a primeira coluna possui dados do tipo integer (número inteiro) e as 3 restantes, do tipo string (texto).
Em seguida, veremos o conteúdo desses dados através do comando dados.limit(99).show()
informando que queremos limitar essa visualização às primeiras 99 linhas da base. Ao rodar este código, perceba que nos retorna uma espécie de tabela, onde constam as 4 colunas: "id", com os index de cada item, "text_en", com os comentários em inglês, "text_pt", com a tradução dos comentários para o português, e "sentiment", com a categoria do depoimento - negativo ou positivo.
Nesta etapa, aprenderemos a filtrar um comentário. Para isso, chamamos nossa base dados
e a função filter()
, que deve receber o argumento dados.id == 190
, informando que queremos o comentário pertencente ao index de número 190. Em seguida, utilizamos o método select()
, onde passamos o argumento "text_pt"
responsável por informar que queremos somente o comentário desta coluna, ou seja, a versão do depoimento traduzido para o português. Por fim, solicitamos a visualização com o método show()
passando o argumento truncate = False
a fim de evitar que a renderização do comentário venha truncada.
dados.filter(dados.id == 190).select("text_pt").show(truncate = False)
Ao rodar este código, perceba que ele se encaixa na categoria de comentários negativos. Então, antes do código anterior, adicionaremtos o comando print("Negativo")
para fins meramente informativos.
print("Negativo")
dados.filter(dados.id == 190).select("text_pt").show(truncate = False)
Filtraremos, agora, um comentário positivo. Sabendo que os depoimentos finais da base se encaixam nesta categoria, escolheremos um index que certamente corresponde a ela, como 12427. Sendo assim, utilizamos o código anterior, alterando somente "Negativo"
para "Positivo"
e 190
para 12427
:
print("Positivo")
dados.filter(dados.id == 12427).select("text_pt").show(truncate = False)
Rode esta célula e observe a renderização.
Nesta etapa faremos a contagem dos comentários negativos e positivos. Para isso, chamos nossa base dados
e o método .groupBy()
que deve receber a coluna 'sentiment'
- onde os comentários são categorizados - como argumento. Em seguida, chamamos o método .count()
e finalizamos com o comando de visualização .show()
.
dados.groupBy('sentiment').count().show()
Rode este código e perceba que ele irá nos retornar uma tabela informando que há cerca de 24 mil comentários em cada categoria.
Pronto! Com essa sequência de comandos, conseguimos entender melhor a estrutura desses dados. Nos próximos passos, veremos como processá-los. Te vejo lá!
O curso Spark: processamento de linguagem natural possui 118 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de Engenharia de Dados em Data Science, ou leia nossos artigos de Data Science.
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.