O Processamento de Linguagem Natural (Natural Language Processsing, NLP; ou PLN na abreviação em português) é um campo dentro da ciência da computação responsável por utilizar inteligência artificial para facilitar a interação entre humanos e máquinas com o uso de linguagem natural. Por linguagem natural entende-se aquilo que usamos no dia a dia para nos comunicarmos.
O grande desafio do Processamento de Linguagem Natural (NLP) é transformar textos e falas em conjuntos de dados capazes de serem lidos para o desenvolvimento de análises e uso de algortimos de machine learning. Textos e falas são fontes de dados não estruturados, que precisam ser tratados com técnicas de text mining. Acompanhe neste artigo os principais conceitos e aplicações que envolvem esta área tão abrangente.
Casos de uso e onde é possível aplicar o Processamento de Linguagem Natural?
Algumas das principais áreas de aplicação do processamento de linguagem natural têm sido:
- Sistemas de respostas a perguntas de usuários: chatbots que permitem que o usuário digite o texto de forma aberta, por exemplo. Veja a BIA (Bradesco Inteligência Artificial) do banco Bradesco;
- Traduções feitas por máquinas: é o caso clássico do Google Tradutor e outros aplicativos de tradução;
- Reconhecimento de voz: aqui entram os assitentes virtuais, como o Google Assistente, a Siri, a Cortana, entre diversos outros;
- Classificação de documentos: é possível categorizar documentos quando não se conhece as classes possíveis via algortimos de aprendizado de máquina não supervisionado;
- Reconhecimento de textos em imagens: como identificar números de placas de veículos e enviar multas de excesso de velocidade de forma automática, por exemplo;
- Análises de sentimento em textos: método muito comum em pesquisas que contém campos abertos, como pesquisas de clima organizacional, mas também serve para diversas aplicações, como entender se os comentários de uma determinada hashtag em uma rede social são mais positivos ou mais negativos.
Como já foi possível perceber, há uma variada gama de possibilidades para aplicar técnicas de procesamento de linguagem natural. Como citado, as aplicações possíveis vão desde sistemas que interagem diretamente com o usuário (Google Assistente, Cortana, Warren – fintech brasileira para investimentos financeiros, BIA do Bradesco, etc) até projetos bastante específicos de Analytics para os mais variados contextos (como analisar o sentimento em atas de reuniões ou em hashtags de redes sociais; ou ainda analisar o sentimento dos colaboradores em perguntas abertas feitas em pesquisas de clima organizacional, por exemplo).
Um ponto importante a ser frisado é que seja na análise diretamente de um texto, de um áudio contendo falas, ou de imagens contendo palavras, o procedimento genérico para realizar análises trata primeiro em obter um texto (convertendo a fala em escrita ou imagens em palavras, por exemplo), realizar pré-processamentos neste texto ou conjunto de palavras e somente então aplicar técnicas de análise. Por este motivo daremos sequência neste artigo com um foco em conceitos genéricos e em técnicas de análise de textos (text analytics).
Tratamentos de textos para análises no Processamento de Linguagem Natural
Dado que textos são a matéria prima para o Processamento de Linguagem Natural, são apresentados aqui alguns conceitos essenciais no processsamento de linguagem natural. A maior parte deste conceitos são originados da área de Recuperação de Informação (Information Retrieval).
Corpus
Corpus é o conjunto de documentos. Cada documento é um pedaço de texto, independente do tamanho. Uma única frase ou um texto completo pode representar um documento. Na prática um documento pode ser um comentário em uma rede social, uma ata de reunião ou artigo de blog, por exemplo.
Tokens
Tokens são termos individuais, como palavras. Um token é uma sequência de caracteres entre dois espaços, ou entre um espaço e sinais de pontuação. Um token pode ser também um número (seja ele real ou inteiro), ou ainda números separados por sinais de pontuação ou por caracteres, como ocorre em indicações de horas.
Bag of words
Trata de unificar todas as palavras pertencentes a um texto em um vetor. Neste momento inicial do Processamento de Linguagem Natural a gramática, a ordem das palavras, a estrutura do texto e a pontuação são ignorados, sendo que tudo é unificado da forma como está originalmente escrito.
Esta abordagem trata de abordar cada documento como um conjunto de palavras individuais. É uma abordagem que considera cada palavra como uma palavra-chave em potencial. Uma das formas de colocar em prática o bag of woards é tratar cada token (palavra) como uma variável binária, indicando para cada documento se há a presença daquela palavra no documento (=1) ou se não há (=0).
Frequência dos termos (contagem de palavras)
Após mapear a presença de todas as palavras de cada documento o próximo passo é contá-las. Nesta etapa é calculada a frequência que cada palavra aparece no texto. Porém, um dos principais pontos de atenção neste momento é que ao contar todas as palavras da forma que elas aparecem no texto (sem realizar nenhum tratamento) faz com que muito ruído seja levantado. Para isso são executados procedimentos de limpeza nas palavras, como a normalização, a stemização e a eliminação de stop words. Veja detalhes na sequência.
Normalização
O processo de normalização no Processamento de Linguagem Natural trata de colocar todas as palavras em caixa baixa, retirando os acentos ou cedilha. Isto faz com que os algoritmos de análise não tratem palavras iguais como sendo diferentes apenas por apresentarem a letra inicial como maiúscula, ou um erro de acentuação, por exemplo.
Stemização
O termo stemização vem do inglês stemming, e representa o processo de reduzir palavras flexionadas ou derivadas a sua base. Neste processo a tarefa é transformar palavras próximas em uma só, como ficar apenas com o radical dos verbos ou transformar todos os substantivos para o singular.
Um exemplo da aplicação da técnica de stemização é reduzir as palavras “estudar, estudou, estudo e estudando” ao termo “estud”, que representa a base de todas as variações citadas.
Stop words
As “palavras de parada” (stop words) são palavras que não adicionam sentido ao texto, pois são usadas para coesão e dar contexto, mas não fazem sentido específico quando olhadas individualmente.
Portanto, o processo necessário em análises que usam Processamento de Linguagem Natural é eliminar as palavras vazias (stop words), que são extremamente comuns no idioma, mas que servem apenas para fazer a ligação entre frases ou palavras. As stop words não trazem um significado adicional para o texto.
Como transformar um texto em um conjunto de dados?
Cada forma de uso, aplicação, software ou algoritmo pode solicitar o input dos dados em um formato específico para dar sequência às análies. No entanto, os formatos mais usados são:
- Cada linha representa um documento e há duas colunas, sendo que uma especifica o nome do documento (ou um identificador, ID) e a segunda especifica as palavras que apareceram no documento, separadas por ponto e vírgula;
- Cada linha representa um documento, sendo que cada coluna (variável) equivale a uma variável binária indicando se a palavra está ou não presente naquele documento.
Na primeira estrutura de dados (agora já estruturados) podem ser aplicados algoritmos de associação, por exemplo, onde o objetivo é encontrar as combinações de palavras mais prováveis.
Já na segunda estrutura é possível agregar novas características aos documentos e aplicar modelos de machine learning usuais.
Processamento de Linguagem Natural: considerações finais
Uma das principais transformações que tem ocorrido nos últimos anos é a geração em massa de dados não estruturados, especialmente no formato de texto. As redes sociais possuem papel relevante neste processo, mas dados a serem utilizados no Processamento de Linguagem Natural vão muito além de comentários em redes sociais. Podem ser, por exemplo, gravações de falas em áudio ou vídeo, ou palavras que aparecem em imagens.
Neste sentido, este artigo mostrou que um dos pontos principais do Processamento de Linguagem Natural é aplicar procedimentos de tratamento em textos para então transformá-los em um conjunto de dados possível de ser analisado. As aplicações são diversas, como por exemplo, alguns usos comuns do Processamento de Linguagem Natural estão na análise de sentimento, na aplicação de aprendizagem não supervisionada (especialmente algoritmos de clustering) para corrigir erros de digitação, em traduções, na classificação de documentos, entre outros.
Referências
Silge, J., & Robinson, D. (2017). Text mining with R: A tidy approach. O’Reilly Media, Inc. Ler.
Provost, F., & Fawcett, T. (2013). Data Science for Business: What you need to know about data mining and data-analytic thinking. O’Reilly Media, Inc. Ver.
Pustejovsky, J., & Stubbs, A. (2012). Natural Language Annotation for Machine Learning: A guide to corpus-building for applications. O’Reilly Media, Inc. Ver