fbpx

Processamento de linguagem natural com python: como funciona?

7 minutos para ler

Tratar dados textuais é uma atividade comum para cientistas de dados, uma vez que esse tipo de dado é presente em formulários, redes sociais, documentos e muitos outros. Aprender técnicas de processamento de linguagem natural é interessante para conseguir extrair valor a partir desse tipo de dado.

Neste artigo, apresentaremos as principais técnicas de processamento de linguagem natural, assim como as bibliotecas mais utilizadas na área para que você possa aprender e/ou utilizar no seu problema. As aplicações são diversas, abrangindo desde tarefas de classificação como identificação do sentimento de uma frase, até aplicações mais complexas como a construção de chatbots.

Dentro desse contexto, o python é a linguagem que tem sido mais utilizada e, por isso, falaremos exclusivamente sobre as bibliotecas dessa linguagem. Outras linguagens podem ter bibliotecas equivalentes às que serão apresentadas aqui.

Como representar dados textuais?

Normalmente os textos são tratados como Strings, porém, para conseguimos utilizar esse tipo de dado em sistemas de inteligência artificial e aprendizado de máquina, é preciso representá-los de outras maneiras, em particular, como se fosse um vetor (sequência) numérica.

One-Hot Encoding

Neste caso, temos um vetor onde cada posição deve representar uma palavra, e assim podemos representar uma frase através da combinação desses vetores. É bem simples, suponha que queremos ser capazes de representar as palavras: [“code”, “dojo”, “é”, “muito”, “massa”], dessa forma, temos 5 palavras diferentes, que é o nosso vocabulário, e poderíamos representar dessa maneira:

  • Exemplos de frases com uma única palavra, escolhemos uma posição para cada palavra do nosso vocabulário.
  • “code”: [1,0,0,0,0]
  • “dojo”: [0,1,0,0,0]
  • “é”: [0,0,1,0,0]
  • “muito”: [0,0,0,1,0]
  • “massa”: [0,0,0,0,1]
  • E quando tivermos múltiplas palavras, podemos fazer da mesma forma:
  • “code dojo”: [1, 1, 0, 0, 0]
  • “code dojo é muito muito muito massa”: [1, 1, ,1 , 3, 1]

Ou seja, a partir da representação one-hot, conseguimos representar a quantidade de ocorrências de palavras.

Existem ainda outras formas de representar dados textuais, como é o caso da técnica “TF-IDF” (que é semelhante ao one-hot encoding mas realiza a ponderação das palavras de acordo com a frequência delas, dessa forma palavras que estão em quase todos os documentos [como poderia ser o caso de artigos (o, a), não carregarão tanto peso]), e também formas mais avançadas que tentam representar os textos com vetores que carregam um significado (palavras com significados parecidos ficarem próximas, significados diferentes ficarem distantes).

De qualquer forma, algo que sempre temos que aprender a lidar é o tamanho do vocabulário, se nosso vocabulário for muito grande, nosso vetor pode acabar ficando muito grande e difícil de processar depois com técnicas de aprendizado de máquina. Para evitar esse problema, devemos aprender a tratar esse dado com técnicas de processamento de linguagem natural.

Quais são as técnicas de processamento de linguagem natural?

Existe uma série de técnicas de processamento de linguagem natural que podem ser utilizadas para realizar a limpeza de textos, a seguir apresentamos algumas técnicas utilizadas:

  • remoção de stopwords: stopwords são palavras que não carregam significado (como artigos, conjunções, etc), um pré-processamento básico é removê-las do seu texto.
  • stemming e lemmatization: palavras podem ter várias flexões (como “estudando”, “estudar”, etc), essas técnicas transformam essas múltiplas palavras em um único “token”, que representa as palavras que possuem aquele radical (“stem”), que nesse caso poderia ser “estud”;
  • E outras: existem várias, mas tudo depende da sua aplicação. Em alguns casos, você pode querer remover algumas palavras que não fazem sentido, em outros você pode querer agrupar palavras (como separar a ocorrência de palavras positivas e de palavras negativas). Aqui a criatividade para resolver o seu problema é chave;

Além dessas técnicas de pré-processamento, existem outras voltadas para aplicações mais específicas, como:

  • Part-of-Speech (PoS) tagging: Técnicas que procuram pegar trechos e indicar, por exemplo, quem é o sujeito, verbo e objeto de uma frase. Isso pode ser utilizado de diversas formas, sendo um exemplo na aplicação de chatbots para identificar qual é a intenção do usuário (tipicamente o verbo indica isso: comprar, perguntar, pedir, etc).
  • Análise de Sentimento: Técnicas voltadas especificamente para identificar se uma palavra/frase/documento é positivo, negativo, subjetivo, objetivo, etc.
  • Text-to-text: Técnicas voltadas para dar respostas textuais, geralmente de maneira natural, por exemplo alguns chatbots utilizam para gerar respostas que pareçam humanas, dada alguma pergunta de usuário.

Essas técnicas todas possuem várias variações, mas entender algumas das aplicações ajuda a navegar esse mundo de processamento de linguagem natural. Uma das áreas que possui muita força no processamento de linguagem natural é o Deep Learning.

Quais são as diferentes bibliotecas utilizadas nesse processo?

Uma grande vantagem de realizar processamento de linguagem natural com o python é poder contar com bibliotecas excelentes que auxiliam na construção das aplicações. A seguir, vamos listar as principais:

SpaCy

A SpaCy ainda é nova no mercado, mas foi criada para ser de simples utilização e altamente rápida, ideal para as aplicações que realmente serão produzidas. Caso esteja iniciando um novo aplicativo, seria uma boa ideia utilizá-la.

NLTK

A NLTK é uma ótima ferramenta de pesquisa e educação, sendo utilizada por vários pesquisadores. Sua estrutura modularizada permite realizar testes simples e aprender a explorar muitos conceitos. Eles possuem, a exemplo, stemmers, tokenizers, e muito mais!

GenSim

A GenSim não é uma biblioteca utilizada diretamente para o PNL, sendo mais comum aplicá-la na modelagem de tópicos e também na detecção de similaridades.

TextBlob

Temos o TextBlob, uma biblioteca derivada do NLTK e voltada para a produção. Ela permite uma prototipagem simples e rápida para aplicativos que não exijam um alto desempenho. É a principal opção para quem está começando a entender o PNL com python.

Scikit-learn

Apesar do foco dessa biblioteca ser aprendizado de máquina, ela possui alguns módulos dedicados ao processamento de linguagem natural. Em particular, você pode realizar facilmente o processamento de strings para suas representações mais comuns, como o One-hot encoding e o TF-IDF

Keras, PyTorch, Tensorflow, Fast.ai

Essas bibliotecas são focadas em técnicas de deep learning. Não recomendamos iniciantes começarem por aqui, mas deve-se saber que são essas bibliotecas que geralmente utilizamos para construir aplicações mais complexas e que estão por trás de grande parte da recente evolução do processamento de linguagem natural.

Como desenvolver uma aplicação de processamento de linguagem natural?

Agora que você já como funciona o processamento de linguagem natural com python, separamos algumas dicas para você começar a desenvolver uma aplicação:

  • pegue algum problema que te interesse: analisar sentimento de tweets, filtrar spams, o que for!
  • comece a trabalhar nele e vá pesquisando tutoriais para aprender a utilizar as bibliotecas necessárias no seu caso;
  • não se limite a copiar e colar, leia e entenda o código, busque ajuda em caso de dificuldades;
  • aproveita a documentação das bibliotecas, em grande parte são extremamente ricas e contém exemplos de uso, dá aprender muita coisa só lendo a documentação;
  • divirta-se! Aprender é sempre bom, tire um pouco do preconceito que você pode ter dessa área “ser difícil” e vá melhorando aos pouquinhos.

Como vimos, o processamento de linguagem natural com python possui muitas técnicas para se aprender, porém, pode levar a sua carreira para um novo nível, trazendo novos horizontes e possibilidades de crescimento. Além de poder atuar como cientista de dados, hoje existem profissões dedicadas exclusivamente à processamento de texto (como “NLP Engineer”). Escolhendo com sabedoria os seus próximos passos, é possível se colocar muito bem no mercado.

Se você gostou deste texto, nos siga no Instagram para receber outros artigos e posts da área!

Posts relacionados

Deixe um comentário