Skip to content

FelippeTeracini/Wikipedia_Wordcloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wikipedia Wordcloud

Pipeline de Engenharia de Dados utilizando TF-IDF.

Introdução e Objetivos

Uma Word Cloud é uma representação visual inovadora de dados de texto, normalmente usada para representar metadados de palavras-chave (tags) em sites ou para visualizar texto em formato livre. Tags são geralmente palavras únicas, e a importância de cada tag é mostrada com tamanho ou cor da fonte. Esse formato é útil para perceber rapidamente os termos mais importantes para determinar sua importância relativa.

O objetivo desse trabalho é gerar uma Word Cloud das palavras mais relevantes à outra palavra da Wikipedia. Isso pode ser realizado a partir de uma pipeline utilizando nossos conhecimentos de engenharia de dados. Essa pipeline ainda possui uma sub-pipeline que realiza o cálculo do TF-IDF das palavras relacionadas e com esses valores em mãos é possível gerar a WordCloud resultante.

Metodologia

Para determinar os pesos foi utilizado o método TF-IDF, que é uma estatística numérica cujo objetivo é refletir a importância de uma palavra para um documento em uma coleção ou corpus. É frequentemente usado como um fator de ponderação em pesquisas de recuperação de informações, mineração de texto e modelagem de usuários. O valor TF-IDF aumenta proporcionalmente ao número de vezes que uma palavra aparece no documento e é compensado pelo número de documentos no corpus que contém a palavra, o que ajuda a ajustar o fato de que algumas palavras aparecem com mais frequência em geral.

O valor TF-IDF de uma palavra aumenta proporcionalmente à medida que aumenta o número de ocorrências dela em um documento, no entanto, esse valor é equilibrado pela frequência da palavra no corpus. Isso auxilia a distinguir o fato de a ocorrência de algumas palavras serem geralmente mais comuns que outras.

A pipeline pode ser reduzida a seis passos:

  • Primeiramente os textos das páginas do .xml do wikipedia são obtidos e salvos em formato .parquet.
  • Em seguida é gerado um dicionário com o valor IDF de cada palavra a partir da base de textos.
  • O mesmo é relizado para os valores de TF de cada palavra.
  • Assim obtêm-se o valor TF-IDF de cada uma e as top dez palavavras de cada página são filtradas.
  • Essas dez palavras são permutadas para adquirir 90 pares.
  • Finalmente há a contagem dos pares e cria-se um dicionário que será necessário para a formação do Word Cloud.

O dicionário final é salvo no cluster através do pickle e a biblioteca react-wordcloud consegue requisitá-lo, após a conversão para um formato compatível com ela, e assim gerar a Word Cloud resultante.

Infraestrutura e Conclusões

Foi utilizado o serviço de Clusters e Buckets da AWS S3 com a seguinte composição de máquinas:

  • 1 Master - m4xLarge
  • 2 Core - m4xLarge
  • 35 Task - m4xLarge

Essa configuração foi pensada de modo que o número de Cores necessário para realizar a atividade num nível baixo, mas aceitável, seria pequeno, pois o trabalho não é muito custoso. Assim, mesmo que a AWS derrube as Tasks o projeto consegue continuar mesmo que mais lento.

Após realizados os teste com o banco completo, ficou claro que a pipeline estava lenta demais para que as queries pudessem ser feitas com eficiência. O que dificultou o debugging na medida que cada iteração do código demorava muito para ser testado. Para testar realmente o resultado do projeto foi feito um recorte da base de textos e essa tentativa obteve sucesso, provando a integridade da pipeline. Porém, como é apenas um recorte, faltam informações e algumas palavras que não são tão populares acabam ficando com muita "poluição" devido a isso.

Funcionamento

Para instalar as dependências necessárias basta rodar os seguintes comandos no terminal:

$ pip3 install wordcloud
$ pip3 install matplotlib

Para utilizar o gerador de wordcloud basta rodar o seguinte comando no terminal:

$ python3 wordcloud1.py

E em seguida digitar a palavra desejada no cmd.

Exemplo

Os arquivos "freddy.png" e "saxophonist.png" são exemplos da wordcloud retornada ao se escolher a palavra "Freddy" e "saxophonist" no programa respectivamente.

freddy.png

saxophonist.png

About

A wordcloud generator made from the wikipedia database

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages