Capítulo 3 R e o Processamento de Linguagem Natural

O processamento de linguagem natural (NLP) é um subcampo da ciência da computação relacionado às interações entre computadores e a linguagem humana. O R dispõe de uma série de pacotes dedicados a essa área e apresenta grande potencial ao conectar o processamento de linguagem natural a todo seu arcabouço de pacotes estatísticos2.

3.1 Encoding - Codificação de caracteres

Um repertório de caracteres é representado por algum tipo de sistema de codificação ( Wiki ). Exemplo comum de sistema de codificação é o código Morse que codifica as letras do alfabeto latino e os numerais como sequências de pulsos elétricos de longa e curta duração. Outro exemplo é o sistema de codificação UTF-8, capaz de codificar todos os 1.112.064 pontos de código válidos em Unicode usando até 8 bits.

O R fornece funções para lidar com diferentes sistemas de codificação. Isso é útil se você lida com arquivos de texto que foram criados com outro sistema operacional e especialmente se o idioma não for o inglês e tiver muitos acentos e caracteres específicos. Por exemplo, o esquema de codificação padrão no Linux é UTF-8, enquanto o esquema de codificação padrão no Windows é Latin1.

A função Encoding() retorna a codificação de uma sequência de caracteres. Por sua vez, a função iconv() é usado para converter a codificação. Vejamos um exemplo de identificação do encoding de uma sequência de caracteres:

chr <- "olê, olê, olê, olá, Lula, Lula"
Encoding(chr) <- "UTF-8"
Encoding(chr)
## [1] "UTF-8"

Utilizando o resultado do código do bloco acima, vamos agora converter o sistema de codificação para Latin1:

chr <- iconv(chr, from = "UTF-8", to = "latin1")
Encoding(chr)
## [1] "latin1"

Para conhecer a lista de sistemas de codificação de seu computador, use a função iconvlist().

3.2 Encoding para remover acentos

Conhecer o sistema de codificação e como utilizá-lo é útil se você lida com arquivos de texto criados com outro sistema operacional e/ou em idiomas que utilizam acentos e caracteres específicos. A depender da análise que deseja fazer, pode ser do seu interesse remover os acentos de uma sequência de caracteres. Nesse caso, vejamos um exemplo com o uso do pacote stringi:

library(stringi)
chr <- "olê, olê, olê, olá, Lula, Lula"
stri_trans_general(chr, "Latin-ASCII")
## [1] "ole, ole, ole, ola, Lula, Lula"

No exemplo acima, removemos os acentos da sequência de caracteres utilizando o American Standard Code for Information Interchange - ASCII.

Se desejar uma solução caseira, o pacote txt4cs, que acompanha o livro, possui a função remove_accent(). Abaixo a sua aplicação:

library(txt4cs)
chr <- "olê, olê, olê, olá, Lula, Lula"
remove_accent(chr)