DC-UFRPE/Bacharelado em Ciência da Computação/Mineração de texto/Processamento de linguagem natural

Fonte: Wikiversidade

O Processamento de Linguagem Natural (PLN) é a subárea da Inteligência Artificial (IA) que estuda a capacidade e as limitações de uma máquina em entender a linguagem dos seres humanos. O objetivo do PLN é fornecer aos computadores a capacidade de entender e compor textos. “Entender” um texto significa reconhecer o contexto, fazer análise sintática, semântica, léxica e morfológica, criar resumos, extrair informação, interpretar os sentidos, analisar sentimentos e até aprender conceitos com os textos processados.

Mesmo com o avanço no relacionamento homem-máquina, a comunicação via linguagem natural continua sendo um desafio: como criar programas capazes de interpretar mensagens codificadas em linguagem natural e decifrá-las para a linguagem de máquina? Com o passar dos anos, houveram muitas pesquisas e desenvolvimentos nos mais diversos ramos do processamento de linguagem natural, destacando-se a tradução automática, considerada pela maioria como o marco inicial na utilização dos computadores para o estudo das línguas naturais.

De modo geral, no PLN, buscam-se soluções para questões computacionais que requerem o tratamento computacional de uma ou mais línguas naturais, quer sejam escritas ou faladas. Mais precisamente, o PLN dedica-se a propor e desenvolver sistemas computacionais que têm a língua natural escrita como objeto primário. Para tanto, linguistas e cientistas da computação, buscam fundamentos em várias disciplinas: Filosofia da Linguagem, Psicologia, Lógica, Inteligência Artificial, Matemática, Ciência da Computação, Linguística Computacional e Linguística.

Para modelar a língua e possibilitar que a máquina a entenda, são necessários pré-processamentos que abstraem e estruturam 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.

Tarefas utilizadas no pré-processamento textual[editar | editar código-fonte]

  • 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.

  • Remoção de Stopwords

Uma das tarefas muito utilizadas 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, que 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.