Técnicas de extração de informação com text mining

Quantificar o assunto discutido em um texto é uma questão central na mineração de textos. Dentre as possibilidades, a análise estatística pode ser utilizada para investigar a relevância de determinados termos. Apesar de soar muito difícil, este tipo de análise possui implementação e cálculos simples. Neste artigo mostramos um exemplo com as atas do COPOM usando o Python.

Análise de frequência de termos

Uma medida de quão importante é uma palavra ou token em um texto é a frequência do mesmo, ou seja, o número de vezes em que o mesmo aparece no documento. Em mineração de texto, esse tipo de análise se chama term-frequency (TF) e nos ajuda a revelar os termos mais usados em um documento, possibilitando rankeamento e visualizações de dados.

    \[\text{tf}_{t,d}=\frac{\text{Nº de vezes que o token }\textit{t}\text{ aparece no documento }\textit{d}}{\text{Nº total de tokens no documento }\textit{d}}\]

Para exemplificar o cálculo, vamos coletar e pré-processar os dados da ata 264 do COPOM, obtendo os tokens:Para obter o código e o tutorial deste exercício faça parte do Clube AM e receba toda semana os códigos em R/Python, vídeos, tutoriais e suporte completo para dúvidas.

['a',
 'atualização',
 'da',
 'conjuntura',
 'econômica',
 'e',
 'do',
 'cenário',
 'do',
 'copom']

Em seguida, calculamos a frequência de cada token, o total de tokens e a estatística TF. Quais são as palavras mais comumente utilizadas pelos diretores do COPOM na ata em questão?

n total tf doc
de 227 2756 0.082366 264
a 98 2756 0.035559 264
e 90 2756 0.032656 264
o 84 2756 0.030479 264
da 72 2756 0.026125 264
... ... ... ... ...
contribuem 1 2756 0.000363 264
suavizar 1 2756 0.000363 264
fomentar 1 2756 0.000363 264
perseguir 1 2756 0.000363 264
conselho 1 2756 0.000363 264

827 rows × 4 columns

Na tabela acima, o índice das linhas armazena os tokens, a coluna n é o total de vezes que o token aparece no texto e a coluna total é o número total de tokens no mesmo texto. Como é esperado, as chamadas stop words são as mais utilizadas no texto, como “de”, “a”, “e”, “que”, etc.

Podemos visualizar isso facilmente através de um gráfico com as 10 palavras mais frequentes:

Podemos analisar a distribuição da coluna n/total, o número de vezes que uma palavra aparece dividido pelo número total de palavras, ou seja, a definição de frequência dos termos pela estatística TF. O gráfico abaixo mostra esta distribuição:

O gráfico possui uma cauda bastante longa para a direita, que é a estatística TF das palavras que aparecem relativamente pouco no texto, enquanto que à esquerda, concentram-se a estatística TF das palavras mais comuns no texto (em geral, stop words).

Lei de Zipf

Esse formato de distribuição visto no gráfico acima é costumeiro na linguagem. É tão comum que a relação entre a frequência que uma palavra é utilizada e sua posição no ranking já foi objeto de estudo por um linguista americano, dando origem ao que se chama de Lei de Zipf.

A lei de Zipf diz que a frequência em que uma palavra aparece em um texto é inversamente proporcional ao seu ranking. O ranking é apenas uma sequência numérica indicando a ordem das palavras, após ordenar os termos pela frequência.

A lei de Zipf costuma ser analisada através de um gráfico com o ranking no eixo X e a estatística TF no eixo Y, em escala logarítmica, o que vai gerar uma relação negativa.

Apesar da relação ser negativa, ela não é constante quando comparada a uma aproximação perfeita (linha azul) da lei. Mesmo assim, os desvios não são exagerados.

Análise do inverso da frequência do documento

Na mineração de textos, a análise do inverso da frequência do documento, inverse document frequency (IDF) no inglês, é uma medida de quão importante uma palavra é para um documento/texto em um conjunto de documentos. Esta estatística diminui o peso de palavras muito frequentes e aumenta o peso de palavras não muito utilizadas.

A estatística IDF pode ser, então, combinada com a estatística TF, multiplicando uma pela outra, para ajustar a frequência de uma palavra pelo quão raramente ela é utilizada.

    \[\text{idf}_{t,c}=\ln \left ( \frac{\text{Nº total de documentos no conjunto }\textit{c}}{\text{Nº de documentos contendo o token }\textit{t}} \right )\]

A ideia desta estatística é encontrar palavras importantes para o conteúdo do texto diminuindo o peso de palavras muito frequentes e aumentando o peso de palavras pouco frequentes. Um conjunto de documentos, nos nossos exemplos, seria um conjunto de atas do COPOM.

Para exemplificar, adicionamos a ata 263 do COPOM e um nova coluna em nossa tabela com o cálculo da estatística IDF:

token n total tf doc idf
0 a 98 2756 0.035559 264 0.0
1 a 92 2635 0.034915 263 0.0
2 aa 1 2756 0.000363 264 0.0
3 aa 1 2635 0.000380 263 0.0
4 abertomarcelo 1 2756 0.000363 264 0.0
... ... ... ... ... ... ...
1685 9 2635 0.003416 263 0.0
1686 1 2756 0.000363 264 0.0
1687 1 2635 0.000380 263 0.0
1688 1 2756 0.000363 264 0.0
1689 1 2635 0.000380 263 0.0

1690 rows × 6 columns

Note que a estatística IDF é igual a zero para palavras muito frequentes, ou seja, nesse caso o logarítmo natural de 2/2 é zero.

Por sua vez, podemos multiplicar as estatísticas TF e IDF para obter a estatística TF-IDF, o que nos diz a frequência de uma palavra ajustada por quão raramente ela aparece:

token n total tf doc idf tf_idf
14 acompanhamento 5 2756 0.001814 264 0.693147 0.001258
429 debate 4 2635 0.001518 263 0.693147 0.001052
793 grande 4 2635 0.001518 263 0.693147 0.001052
508 diferentes 4 2635 0.001518 263 0.693147 0.001052
509 diligente 4 2756 0.001451 264 0.693147 0.001006
... ... ... ... ... ... ... ...
628 esmorecimento 1 2635 0.000380 263 0.000000 0.000000
627 esmorecimento 1 2756 0.000363 264 0.000000 0.000000
626 esforço 1 2635 0.000380 263 0.000000 0.000000
625 esforço 1 2756 0.000363 264 0.000000 0.000000
1689 1 2635 0.000380 263 0.000000 0.000000

1690 rows × 7 columns

A estatística TF-IDF será muito próxima de zero para palavras que aparecem em vários documentos em um conjunto de documentos e será maior para palavras que aparecem poucas vezes nos documentos. Pela tabela podemos verificar propriamente as verdadeiras preocupações dos diretores do COPOM nas reuniões (termos como “alimentos”, “persistência”, “rio [grande do sul]”, etc).

Por fim, vamos gerar uma visualização destas estatísticas TF-IDF de maior valor para ambas as atas:

Conclusão

Como quantificar sobre o que se trata um texto? Que tipo de informação podemos obter a partir destes dados? Como identificar a relevância das palavras? Neste artigo exploramos técnicas estatísticas de frequência de tokens para extrair informação de dados textuais.

Quer aprender mais?

Quer o código desse e de mais de 500 exercícios de análise de dados com ideias validadas por nossos especialistas em problemas reais de análise de dados do seu dia a dia? Além de acesso a vídeos, materiais extras e todo o suporte necessário para você reproduzir esses exercícios? Então, fale com a gente no Whatsapp e veja como fazer parte da nossa Comunidade clicando aqui.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Coletando dados regionais do CAGED no Python

Os dados regionais do CAGED permitem analisar o mercado de trabalho de forma detalhada, em termos de setores, educação, rendimento e características pessoais dos trabalhadores brasileiros. Neste exercício mostramos como acessar estas informações online via Python.

Coletando dados de Setores Censitários do Censo 2022 no Python

Dados sobre a demografia e o território são primordiais para definir e implementar políticas públicas, áreas de atuação comercial e/ou estratégias de marketing. Sendo assim, saber usar os dados do Censo 2022 pode trazer vantagens competitivas. Neste exercício mostramos como obter os dados da Malha de Setores Censitários no formato vetorial (GeoJson) usando o Python.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.