NLP e mercado: técnicas e construção de modelos
Desenvolvendo com eficácia um pipeline de Processamento de Linguagem Natural
E-mails, documentos, relatórios, feeds de mídia social, chamadas de clientes, registros de produtos: a quantidade de dados em texto que é gerada todos os dias é exponencial. De acordo com projeções do International Data Corporation (IDC), mais de 80% dos dados serão do tipo não estruturado até 2025. Poder extrair insights desse tipo de dado traz vantagens competitivas, que vão de informações mais robustas até maior precisão nos insights.
“NLP is an art to extract some information from the text”. Por não ser um dado numérico, métodos tradicionais de modelagem e análise não são facilmente aplicáveis ao texto. É nesse cenário que surge o Natural Language Processing (NLP), ou Processamento de Linguagem Natural: uma técnica que limpa, normaliza e converte esse montante de dados textuais em números, para que possam ser processados pelo computador. Aplicando essa técnica é possível passar os dados por algoritmos ou redes neurais, viabilizando a extração de insights, análises de sentimento, predições e outros.
O mercado de processamento de textos
Em 2018, Google e Facebook disponibilizaram pública e gratuitamente modelos pré-treinados de processamento de texto. Tais modelos foram instruídos com grandes quantidades de dados (o BERT, do Google, por exemplo, foi pré-treinado com a Wikipedia inteira — 2,5 milhões de palavras), com aplicações para diferentes idiomas e desenvolvidos com arquitetura de redes neurais profundas. A performance do processamento de texto deu um salto, atingindo o que chamamos de ‘state-of-art model’: o nível mais alto que uma técnica alcançou até o momento presente.
O desenvolvimento de projetos mais complexos na área foi facilitado. Mas, para construir uma solução que processe esse tipo de dado, um bom pipeline com técnicas de NLP e uma modelagem assertiva são essenciais para a extração de insights significativos desse montante textual não estruturado. Vamos iniciar pela limpeza.
Fase 1 — Data cleaning e pré processamento
A limpeza de dados de texto inclui algumas etapas, como a remoção de ruído óbvio (pontuação, hashtags, caracteres especiais etc.), a normalização do texto removendo as ‘stopwords’ (palavras de pouco valor para a base de dados) e, quando interessante para o projeto, performar o Stemming/Lematization desses dados, que é o processo de reduzir palavras similares para um mesmo radical.
Stopwords
Pontuação, html, emojis — a limpeza inicia com a remoção do ruído mais óbvio da sua base de dados. Uma função em Python dá conta dessa etapa. Em seguida, é hora de remover as ‘stopwords’, um ruído menos evidente que também precisa ser normalizado. ‘Stopwords’ são o que chamamos de ‘palavras com pouca informação’: conectivos ‘o’, ‘de’, ‘que’ ou palavras muito comuns, como ‘para’. Quase todos os textos em português contém essas palavras, logo, elas não são realmente significativas para o nosso modelo. Para auxiliar nesta etapa, utilizamos a biblioteca Natural Language Toolkit (NLTK) que, ao passarmos como parâmetro o idioma que estamos trabalhando, identifica essas palavras de alta frequência e baixa relevância ruidosas na base de dados — e remove-as.
Stemming & Lemmatization
Stemming e Lemmatization são processos focados em reduzir as palavras à sua forma raiz: ‘choveu’, ‘chovido’ e ‘chovendo’, por exemplo, são semelhantes e, em muitos casos, possuem o mesmo significado. Estes processos reduzem essas variações à forma raiz da palavra, convertendo tudo em ‘chuva’. Essa é uma maneira de diminuir o ruído e a dimensionalidade dos dados, e pode ser interessante dependendo do seu objetivo. A diferença entre Stemming e Lemmatization está na complexidade das conversões: Lemmatization identifica a correspondência entre “chuva” e “chuvas”, assim como a correspondência entre “chuva” e “tempestade”. Já o Stemming para na correspondência de “chuva” e “chuvas” . Para idiomas morfologicamente mais complexos, indica-se Lemmatization para esse processamento. A biblioteca NLTK possui métodos que você pode importar e realizar esses processamentos.
Fase 2 — Tokens: transformando texto em vetores
Para que o modelo processe os dados textuais já limpos e normalizados, é preciso convertê-los para a forma numérica. Há algumas técnicas que realizam essa conversão, e a escolha de qual utilizar vai depender do tipo de projeto e do objetivo final. Conheça algumas abordagens:
Approach 1: frequência
Tf-idf (Term Frequency-inverse document frequency) é uma técnica que vetoriza as palavras com base na importância que elas compartilham. Como funciona: se uma palavra aparecer com frequência em um documento, esse termo provavelmente é importante nesse arquivo. Mas, se essa palavra aparecer com frequência em muitos documentos, então provavelmente é um termo de menor importância em um escopo geral. O Tf-idf estima justamente o trade-off entre essas duas abordagens, atribuindo números aos dados textuais com base na frequência que uma palavra aparece. Quando utilizar: é uma abordagem interessante quando o conhecimento de quais termos são mais relevantes que outros for útil para o projeto. As bibliotecas Scikit Learn e Gensim disponibilizam o método pronto para ser importado.
Approach 2: embedding
Word embedding é uma técnica em que as palavras são representadas por vetores. Baseado em semelhança semântica, pontua as palavras com base no quão similares no significado elas são, mesmo que não sejam correspondências exatas na escrita. Dessa forma, palavras com significado semelhante têm distâncias similares no espaço vetorial. Quando utilizar: essa abordagem é interessante se você quiser preservar a relação semântica na tokenização: é útil, por exemplo, se você precisar que ‘grãos’ se relacionem com ‘feijão’.
Word2Vec
O Word2vec é um algoritmo desenvolvido pelo Google para treinamento de word embedding. Ele se baseia na hipótese distributiva: palavras que, muitas vezes, têm as mesmas palavras vizinhas, tendem a ser semanticamente semelhantes. Isso permite que a relação semântica e vetorial entre ‘homem-mulher’, por exemplo, seja parecida com a de ‘rei-rainha’.
Os modelos Word2vec são redes neurais com uma camada de entrada, uma camada de projeção e uma camada de saída. São treinados para reconstruir contextos linguísticos de palavras focando, além da semelhança radical, na relação de sentido entre os termos. No final, cada palavra única na base de dados recebe um vetor correspondente no espaço. O uso do deep learning no processamento de texto inaugurou uma nova fase para a NLP, aumentando a complexidade das aplicações — e também as possibilidades.
BERT
BERT (Bidirectional Encoder Representations from Transformers) é uma solução desenvolvida pela Google AI Language. A principal inovação técnica do BERT é a aplicação do treinamento bidirecional, que contrasta com os modelos anteriores, fazendo a leitura dos textos na tradicional esquerda-para-a-direita. Os resultados do artigo mostram que um modelo de linguagem que é treinado bidirecionalmente pode ter um senso mais profundo de contexto e fluxo de linguagem do que modelos de linguagem de direção única. A partir do BERT surgiram muitas derivações de NLP que se aproximam do estado da arte dentro da área, como o Roberta do Facebook — que, como o próprio nome já diz, deriva do BERT em si. O Processamento de Linguagem Natural é uma das especializações da Ciência de Dados que mais teve avanços e lançamentos nos últimos tempos, mostrando-se definitivamente uma área promissora para pesquisa e aplicações!
Que tal uma aplicação prática? Confira o projeto que fiz para Detecção de Fake News a partir de um desafio do Kaggle.
Fontes:
Text Preprocessing for NLP (Natural Language Processing),Beginners to Master, Analytics Vidhya.
Transfer Learning in NLP, Towards data Science.
How to Rank Text Content by Semantic Similarity, Towards data Science.
Overview of Text Similarity Metrics in Python, Towards Data Science.
Similaridade entre títulos de produtos com Word2Vec, LuizaLabs.
What Is Unstructured Data And Why Is It So Important To Businesses? , Forbes.
80 Percent of Your Data Will Be Unstructured in Five Years, IDC quoted by Solutions Reviews.
Transfer Learning for NLP: Fine-Tuning BERT for Text Classification, Analytics Vidhya.
Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing, Google AI Blog.
Efficient Estimation of Word Representations in Vector Space, Cornell University.
Word Embeddings for NLP, Towards Data Science.