Compreendendo como os computadores processam a Linguagem Natural Humana

Usando especificamente a Linguagem Escrita

Angelo Buso Jr
5 min readOct 18, 2021

A comunicação está diretamente ligado ao desenvolvimento de nós, seres humanos. É uma atividade essencial para a sobrevivência, convivência em sociedade, além necessário na busca das realizações pessoais e profissionais. O ato de comunicar tem a capacidade de integrar, instruir, desenvolver e relacionar-se mutuamente tanto nos contextos sociais e empresariais.

Neste sentido, a linguagem é a capacidade humana de comunicação, bem como suas manifestações, seja verbal ou não-verbal. Com tal capacidade conseguimos, transmitir de um indivíduo a outro, desde conhecimentos ciêntíficos ou não, situações vivenciadas, experiências vividas, fatos históricos, fatos fantasiosos, coisas supérfluas, acontecimentos diários, infelizmente fake-news…. enfim!!! Trocar informações faz parte da vida de qualquer pessoa.

A linguagem escrita é uma destas capacidades que usamos para nos comunicar, interagir no ambiente. E na medida que a “tecnologia” cerca nossa sociedade, trazendo em seu bojo uma série de desafios e oportunidades, aumenta nossa necessidade de usar os computadores para aprenderem sobre essa capacidade humana de linguagem escrita. Assim como a Visão Computacional ensina as máquinas como “enxergamos” o mundo com suas cores e formas, Processamento Linguagem Natural — PLN surge com suas técnicas e modelagens para instruir as máquinas a lerem, escreverem e compreenderem a língua humana. Os usos de técnicas de PLN no nosso dia-a-dia vão desde os apps de tradução automáticas , até chatbot’s.

Processamento da Linguagem Natural — PLN em sua essência, é uma das sub-áreas da inteligência artificial que combina a Linguística (ciência das línguas) e a Ciência da Computação. (a língua em que me refiro é o código de comunicação, exemplo português, libras, python, etc não o músculo do rosto do corpo humano 😁😁😁😁😁)

Um ponto que merece destaque é que, nós humanos, lidamos com naturalidade com ambiguidades, irregularidades, vagueza e variedade quando usamos a linguagem escrita ou falada para nos comunicar. Entretanto, para as máquinas, a linguagem deve ser clara, coesa, simples e sem ambiguidade. Com isso em mente podemos concluir que, com as técnicas de PLN conseguimos automatizar [por enquanto] apenas aspectos da língua e não 100% dela, sendo uma ferramenta auxiliar as tarefas humanas e não de substituição [por enquanto] !!

Vamos ao que interessa!!!! seria interessante se pudéssemos pegar de um texto qualquer, as palavras que mais aparecem. E uma vez identificada essas palavras mais frequentes, poderíamos extrair a idéia principal daquele texto, se realmente as palavras mais frequentes são de domínio do texto, dentro outros insigths. Com esse propósito e compreendendo algumas técnicas de PLN, construí um script que extrai de um arquivo em PDF todo o texto contido nele, verifica quais são as palavras mais frequentes e apresenta um nuvem de palavras (wordcloud) que seria a forma visual dessas frequência, em que a quantidade de vezes que a palavra surge no texto é proporcional ao seu tamanho nessa nuvem.

No script usei como texto o Evangelho de São Lucas, não é o objetivo deste fazer apologia religiosa, apenas escolhi um texto bíblico dado a minha fé cristã e pela importância que os textos bíblicos possuem na minha história.

O script se adequa a qualquer texto de sua preferência.

Usando a linguagem Pyhton, realizei a leitura da versão em PDF do Evangelho de São Lucas que possui:

Destas 62 páginas, extraímos seu conteúdo e após a extração, obtemos uma lista em Python de cada página com o texto. Podemos acessar cada página usando slicing em pyhton.

Antes de montar a nuvem de palavras, realizei alguns tratamentos como retirar as stopwords do texto. Mais a propósito… stopwords são palavras que possuem uma frequência alta no texto, mas não agregam informação para construir a nuvem de palavras, normalmente são artigos, preposições. Na biblioteca NLTK temos um conjunto de stopwords em português com 203 palavras em seu conjunto.

Com as stopwords no texto as 10 palavras mais frequentes seria essas:

Após esse tratamento, as 10 palavras mais frequentes no Evangelho de São Lucas, foi:

Uma das técnicas para conseguir realizar tanto a construção da nuvem de palavras, bem como identificar a frequência das mesmas, é tokenizar o texto, ou seja, reduzir um estrutura ao menor nível. Pegar o texto, separar em parágrafos, depois por sentenças. Destas últimas por frases e por fim por palavra. Ao longo desse precesso, combinado outras técnicas de PLN, conseguimos identificar as classes gramaticais das palavras, os caratectes que indicam pontuções, números. Feito esse pipeline, conseguimos gerar nossa nuvem.

No entanto, não existe ferramenta 100%… ou seja, não há perfeição nas soluções feitas pelos homens!!! Podemos notar que algumas palavras ainda aparecem no texto e conhecendo o texto que esta analisando podemos atualizar a lista de stopwords. E gerar uma nova versão da nuvem:

A medida que vamos aprofundando no conhecimento das ferramentas em que usamos, ganhamos vantagem situacional. Podemos melhorar esse visual da nuvem aplicando um fundo personalizado que representa o contexto do texto, no nosso caso, o Evangelho de São Lucas. Sendo assim temos como resultado:

Agora sim… temos um resultado a altura do texto!!!

Para auxiliar na geração dessas nuvens, usando apenas python, construi um aplicativo que gera uma wordcloud de um texto inserido. Dá um confere lá e use para textos em que você necessite ver as principais palavras!!!

Caso queiram entrar em contato: Angelo Buso!!

--

--

Angelo Buso Jr

Apaixonado pela minha família 👨‍👩‍👦🐶 , corrida de rua 🏃‍♂️ e vídeo-games 🎮 .