Para modelar a língua e possibilitar que a máquina a entenda, são necessários pré-processamentos que abstraiam e estruturem a língua, deixando apenas o que é informação relevante. Esse pré-processamento reduz o vocabulário e torna os dados menos esparsos, característica conveniente para o processamento computacional. Algumas das tarefas muito utilizadas no pré-processamento textual são:
Normalização
A normalização abrange tratativas como a tokenização, transformação de letras maiúsculas para minúsculas, remoção de caracteres especiais, remoção de tags HTML/Javascript/CSS, dentre outras. O processo de tokenização tem como objetivo separar palavras ou sentenças em unidades. A tokenização lexical marca cada palavra como um token no texto, identificando-a mesmo se tiver encostada em alguma pontuação. Um exemplo de texto tokenizado lexicalmente seria:
A tokenização sentencial identifica e marca sentenças. Um exemplo seria:
A normalização é importante por começar a estruturar o texto, já que os processamentos seguintes atuam em cima de unidades sentenciais e lexicais.
Remoção de Stopwords
Outra tarefa muito utilizada no pré-processamento de textos é a remoção de stopwords. Esse método consiste em remover palavras muito frequentes, tais como “a”, “de”, “o”, “da”, “que”, “e”, “do” entre outras, pois na maioria das vezes não são informações relevantes para a construção do modelo. Remova stopwords somente quando não forem relevantes para a tarefa. No caso da Análise de Sentimentos, não poderíamos remover a stopword “não”, pois traz uma conotação de negatividade para a sentença, indicando justamente o sentimento transmitido. Uma lista de stopwords pode facilmente ser encontrada disponível na internet.
Remoção de numerais
Outra remoção necessária é dos numerais presentes no texto. Eles não agregam informação relevante por não trazerem carga semântica. Remova também os símbolos que os acompanham, como “R$”, “$”, “US$”, “kg”, “km”, “milhões”, “bilhões” dentre outros.
Correção Ortográfica
Os corretores ortográficos (Spell Checkers) são muito usuais para tratar um dataset que contém erros de digitação, abreviações e vocabulário informal. Esses erros são prejudiciais por gerarem novos tokens, aumentando a esparsidade dos dados. Uma boa introdução à verificação ortográfica pode ser encontrada na página da Peter Norvig (http://norvig.com/spell-correct.html). O artigo apresenta uma simples implementação de um corretor ortográfico de 21 linhas em Python, combinando modelos simples de linguagem e erro para prever a palavra que um usuário pretende digitar. É necessário ter um grande córpus no idioma para o qual o corretor ortográfico será projetado, o qual precisa ser contemporâneo e de linguagem formal. Uma sugestão são córpus de gênero jornalístico e literário. Estima-se a probabilidade de uma determinada palavra ‘C’ estar no córpus, que pode ser escrita como ‘P(C)’. O modelo de erro estima a probabilidade ‘P(W|C)’ do usuário digitar a versão incorreta ‘W’ condicionalmente à intenção de digitar a palavra correta ‘C’. O corretor ortográfico retorna a palavra ‘C’ correspondente ao valor mais alto de ‘P(W|C) P(C)’ entre todas as palavras presentes no córpus.
Stemização e Lematização
O processo de stemização (do inglês, stemming) consiste em reduzir uma palavra ao seu radical. A palavra “meninas” se reduziria a “menin”, assim como “meninos” e “menininhos”. As palavras “gato”, “gata”, “gatos” e “gatas” reduziriam-se para “gat”. A lematização reduz a palavra ao seu lema, que é a forma no masculino e singular. No caso de verbos, o lema é o infinitivo. Por exemplo, as palavras “gato”, “gata”, “gatos” e “gatas” são todas formas do mesmo lema: “gato”. Igualmente, as palavras “tiver”, “tenho”, “tinha”, “tem” são formas do mesmo lema “ter”. A vantagem de aplicar a stemização ou lematização é clara: redução de vocabulário e abstração de significado.
Esses pré-processamentos são de cunho morfossintático, que atuam em cima de itens lexicais, ou seja, palavras.