Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Corretor Ortográfico em Python: aplicando técnicas de NLP

Corretor Ortográfico em Python: aplicando técnicas de NLP

Explorando um projeto de NLP - Introdução

Boas vindas a mais um curso de Processamento de Linguagem Natural aqui na Plataforma Alura! Sou o instrutor Thiago Santos.

Em nossas aulas, construiremos um corretor ortográfico em português utilizando Python e aplicando técnicas de NLP.

Além disso, discutiremos diversos assuntos como a comunicação entre máquina e humano por exemplo, e verificaremos que não é feita de maneira direta, ou seja, há um intermediário que é justamente o Processamento de Linguagem Natural ou a sigla em inglês NLP.

Esta técnica tem diversas aplicações como os Assistentes Pessoais por exemplo; o Google Assistant, o Siri da Apple, Alexa e etc.

Também faremos a Análise de Sentimento; no caso da opinião de uma pessoa sobre um filme, conseguiremos avaliá-la como positiva ou negativa, os tradutores, e até o buscador do Google utiliza bastante estes recursos, bem como o corretor ortográfico que construiremos.

Para entendermos melhor sua utilidade, imaginemos a seguinte situação: temos uma palavra digitada equivocadamente, como “lgica” por exemplo. Precisaremos passá-la pelos algoritmos de NLP, o qual gerará e retornará a palavra correta, que neste caso é “lógica”.

Para criarmos o corretor, precisaremos de uma base de treinamento com um compilado de todos os artigos da Alura que temos. Porém, também avaliaremos se esta é adequada de fato.

Portanto, discutiremos as métricas que podem nos ajudar a descobrir se a base de dados é boa o suficiente para treinarmos o nosso modelo. Para isso, separaremos o corpus cheio de palavras de nosso texto em pequenas unidades chamados tokens.

Utilizaremos o nltk para realizar o processo de separação do texto em pequenas strings conhecido como tokenização. Em seguida, separaremos apenas as palavras desse tokens, formando uma lista.

Com isso, teremos uma quantidade e verificaremos quantos termos nosso algoritmo aprenderá de fato. Também normalizaremos o nosso texto, pois ainda possui palavras maiúsculas e minúsculas.

Em seguida, iniciaremos a construção do nosso corretor; iniciaremos inserindo letras, e sem querer digitamos uma letra a menos, então precisaremos inserir uma letra a mais.

Depois que construirmos esse algoritmo capaz de gerar as palavras com uma letra a mais, avaliaremos o nosso resultado.

Precisaremos de uma base de teste, que em nosso caso é a palavras.txt, a qual contém a palavra digitada equivocadamente e a correta.

Feita a avaliação, chegaremos à conclusão de que apenas nosso algoritmo com uma letra a mais não está com o resultado muito bom, pois está corrigindo apenas 1% das palavras. Logo, precisaremos tornar o nosso algoritmo mais abrangente.

Para isso, implementaremos diversos outros algoritmos, como por exemplo deletando_caracteres(), troca_letra(), inverte_letra(), e assim sucessivamente até chegarmos em um resultado satisfatório de aproximadamente 77% de acerto.

Depois, testaremos um gerador_turbinado() e veremos sua performance. Tiraremos conclusões e compararemos os dois corretores, mesmo que este seja aparentemente muito mais robusto.

Ao final, realizaremos alguns testes para digitarmos uma palavra equivocadamente e verificarmos a saída.

Vamos lá!

Explorando um projeto de NLP - Explorando o problema

Neste passo, entenderemos melhor o problema a ser resolvido no curso.

No navegador aberto, digitaremos “alura.com.br” para abrir a página principal da Alura, pois estamos interessados em um tema específico.

Imaginemos que estamos iniciando a nossa carreira e queremos pesquisar por cursos de lógica. Na parte superior da página, encontraremos alguns links e uma pequena lupa que representa a pesquisa. Clicando neste ícone, abriremos a barra de busca.

Então escreveremos “lógica” no campo de texto, afinal queremos descobrir todos os conteúdos deste tema que a Plataforma Alura oferece.

Após buscarmos, seremos direcionados para outra página onde encontraremos todos os resultados deste assunto, exatamente como precisávamos.

Imaginemos o caso de voltarmos para a barra de busca nesta mesma página, e sem querer digitarmos “lgica” ao invés de "lógica".

Com esta consulta, o site retornará a mensagem: “Nenhum resultado encontrado para ‘lgica’. Tente outra busca!”.

Como só deixamos de inserir apenas a letra "O" na palavra, seria interessante que uma sugestão de correção aparecesse para prosseguirmos com a pesquisa correta, como “você não quis dizer ‘lógica’?” por exemplo.

Já o buscador do Google faz exatamente isso; se digitarmos “lgica” na barra de busca da página principal de "google.com" e apertarmos a tecla "Enter" para pesquisarmos a palavra digitada erroneamente, receberemos uma mensagem indicando o erro de digitação e apresentando a palavra correta.

Para entendermos os mecanismos que realizam essa correção ortográfica, começaremos abordando a ciência do Processamento de Linguagem Natural.

A comunicação entre humano e máquina deverá ser de forma natural, e não via código, bytes e etc. Ou seja, queremos escrever ou dizer algo e receber uma resposta deste mesmo tipo.

Porém, isso não é feito de maneira direta, pois há um intermediário que ajudará a máquina a nos entender, e nos auxiliará a compreendê-la também.

Este intermediário é chamado de NLP, ou Processamento de Linguagem Natural em português. Esta ciência une linguística, computação e inteligência artificial, e é responsável por uma série de aplicações no nosso dia a dia, como os assistentes de voz Siri da Apple e o Alexa da Amazon.

Também lida com Análise de Sentimento, como em uma opinião sobre um filme ou uma review por exemplo, indicando se é positiva ou negativa. Já nos tradutores, teremos o conhecido Google Translation.

Poderemos encontrar estas técnicas em diversos buscadores como o Google, e nos chamados corretores ortográficos, a exemplo dos presentes em celulares que oferecem sugestões de correções ou previsões da palavra a ser escrita.

Portanto, o NLP é a ciência que envolve o entendimento entre a linguagem falada e a linguagem de máquina, dando o suporte para os corretores ortográficos.

Para entendermos como funciona, voltaremos à busca da palavra "lógica", porém digitamos "lgica" maneira equivocada. Ao realizarmos a pesquisa, mandaremos o termo errado e teremos um intermediário - que neste caso serão os modelos de Processamento de Linguagem Natural - que nos devolverá a mensagem “Você digitou ‘lgica’, porém você quis dizer ‘lógica’”.

Com isso, realizará a correção da palavra “lógica”.

Cientes disso, poderemos avançar para a construção de fato.

Explorando um projeto de NLP - Importando um corpus textual

Iniciaremos a construção do corretor ortográfico.

O primeiro passo será abrir o ambiente de desenvolvimento, e neste caso utilizaremos o notebook do Google Colab acessível neste link.

Se tivermos uma conta no Gmail já logada no browser, abriremos automaticamente uma janela com várias opções mostrando os notebooks já existentes. Ao final da lista, teremos o link "New Python 3 Notebook" que abrirá um novo documento .ipynb e o salvará no drive.

Clicaremos sobre o nome padrão automático e renomearemos esse notebook como Corretor.ipynb. Com isso, teremos o ambiente para desenvolver nosso modelo capaz de realizar a correção ortográfica.

Sempre quando queremos aprender novos conhecimentos, buscamos mais informações sobre o assunto em livros, vídeos, cursos, palestras, aulas e etc. Para que nosso modelo corrija as palavras, precisaremos primeiro ensiná-lo a escrever através de um vocabulário que cresce conforme aprende.

Logo, iremos precisar de uma base de dados.

Porém, como estamos trabalhando com o buscador do site da Alura, seria interessante também que essa base de conhecimento tivesse termos mais técnicos da área.

A base de dados que utilizaremos neste curso será construída com os próprios artigos do Blog da Alura, pois ensinaremos o nosso corretor a realizar correções específicas para o mundo técnico de desenvolvimento, como Java, programação orientada a objeto, Data Science e etc.

Nesta página de Artigos de Tecnologia e Negócios da Plataforma Alura teremos várias opções com diversos artigos. Como exemplo, abriremos o artigo sobre criação de formulários com Flutter.

Este é um artigo do instrutor Alex Felipe ensinando a criar um formulário utilizando Flutter, o qual possui um volume grande de texto que realmente nos interessa, além de alguns trechos de código e imagens.

Portanto, teremos um arquivo cheio de informações textuais do blog. Precisaremos importar esses dados para começarmos a analisar e trabalhar no nosso corretor. Para isso, os enviaremos para a máquina do Google.

No Google Colab, expandiremos o painel lateral clicando no ícone ">", e encontraremos diversas opções na barra superior. Dentre estas, clicaremos em "Files" e aguardaremos o processo de montagem da máquina.

Após isso, encontraremos os diretórios criados automaticamente e três opções de ações: "Upload", "Refresh" e "Mount Drive". Clicando sobre a primeira destas, poderemos enviar os dados para as máquinas do Google.

Aba lateral expandida no Google Colab contendo lista de diretórios. Opção "Files" selecionada e botão de "Upload" em destaque

No passo "Preparando o Ambiente", encontraremos o link para download do arquivo da base de dados chamada artigos.txt disponibilizada para este curso.

Com o documento já baixado e salvo no computador, o selecionaremos e faremos seu upload. Desta forma, acessaremos essa database a partir do meu notebook.

Quando trabalhamos em NLP, a nossa base de dados é conhecida como corpus. Ou seja, é um corpo composto por com diversos textos, e cada um corresponde a um artigo do nosso blog, chamado de documento.

Logo, o corpus é um conjunto de documentos em Processamento Linguagem Natural, e no nosso caso, é composto pelos artigos do blog que formam a base de dados artigos.txt. Em seguida, a leremos no notebook.

Para lermos um arquivo textual em Python, usaremos o comando open(). Dentro dos parênteses, passaremos dois parâmetros; o primeiro será o nome do arquivo artigos.txt entre aspas, e o segundo será o que queremos fazer com este último, ou seja, queremos fazer a leitura.

Então passaremos o "r" de read como segundo parâmetro para lermos o arquivo. Ao executarmos, esperaremos um retorno de um texto como string.

open("artigos.txt", "r")

Porém, essa linha de código retorna TextIOWrapper que não é o que esperávamos, pois ainda queremos uma string.

Para abrirmos o texto, utilizaremos o comando with antes de open(). Após essa função, escreveremos as e diremos que representaremos f: de file, ou "arquivo" em português.

with open("artigos.txt", "r") as f:

Essa linha de código é bem parecida com um texto escrito em inglês mesmo.

Em seguida, passaremos o que queremos fazer com o artigos.txt aberto depois dos dois pontos, ou seja, queremos fazer a leitura.

Na linha seguinte, escreveremos f com .read() para lermos o arquivo. Também deveremos armazená-lo em uma nova variável chamada artigos. A imprimiremos com print() recebendo artigos[]. Como nosso corpus é bastante grande, visualizaremos apenas os quinhentos primeiros caracteres inserindo :500 dentro dos colchetes.

with open("artigos.txt", "r") as f:
    artigos = f.read()

print(artigos[:500])

Como retorno, teremos um arquivo de texto e um tratamento que facilitará nosso trabalho.

A primeira palavra é "imagem" e representa a figura presente na página original de artigos. Onde havia trechos de código, substituímos pela palavra “Java”. Desta forma, ficaremos apenas com termos em português para criarmos o nosso corretor.

A seguir, descobriremos se esse arquivo é de fato um corpus interessante para essa construção; se há um número suficiente de palavras, ou se as repete muitas vezes.

Sobre o curso Corretor Ortográfico em Python: aplicando técnicas de NLP

O curso Corretor Ortográfico em Python: aplicando técnicas de NLP possui 211 minutos de vídeos, em um total de 65 atividades. Gostou? Conheça nossos outros cursos de Machine Learning 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:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas