Projeto que busca analisar os pronunciamentos de senadores e senadoras em Python com técnicas de Processamento de Linguagem Natural, Linguística de Corpus, Análise de Sentimento e por aí afora.
Essas instruções vão te ajudar a pegar uma cópia do projeto e fazer ela funcionar na sua máquina para testar.
Além do Python 3.6+, é necessário um ambiente com as seguintes bibliotecas e suas respectivas dependências:
- pandas
- nltk
- sklearn
- matplotlib
- requests
- lxml
- beautifulsoup
- unidecode
É preciso configurar um ambiente com os pré-requisitos acima.
Para que os exemplos de análise nesse repositório funcionem, é preciso salvar todos os scripts numa mesma pasta e executá-los numa determinada ordem. Os primeiros scripts vão buscar os objetos de análise na internet, são eles:
- lista_senadores: salva um xml temporário e um csv com dados básicos de cada senador(a). 152kb+ e 13kb+
- lista_urls: salva um csv com os links de cada pronunciamento que será acessado. 2,6MB+
- todos_textos: acessa os links e salva um csv com todos os pronunciamentos de maneira organizada. 400MB+
- bow_partidos: a partir do csv maior, organiza um csv menor com os textos por partido para análise com bag of words (bow). 250MB+
Depois de salvar a base de dados, as análises podem ser feitas em qualquer ordem:
-
comp_freq: a partir dos bows dos partidos, compara a frequência relativa de termos nos pronunciamentos. Exemplo: educação, saúde, segurança/todos partidos
-
graf_termo: a partir do csv geral, faz um gráfico comparativo que mostra a evolução da frequência de determinado termo pelo tempo por partidos. Exemplo: educação/PT, MDB, PSDB
-
tfidf: a partir do csv geral, vetoriza os termos de um partido por data e pontua com TF-IDF, revelando os termos mais importantes por data do partido escolhido. Exemplo: PT
-
tfidf_link: a partir do csv geral, vetoriza os termos de cada pronunciamento e pontua com TF-IDF, revelando os termos mais importantes por pronunciamento no senado. salva em csv.
-
assuntos: a partir do csv geral e do csv gerado com o tfidf_link, cria um gráfico que mostra os 3 unigramas mais importantes(1) mencionados pelo senado por semestre. a altura de cada barra determina a força daquele assunto no semestre.
(1)importância de acordo com a frequência do termo em relação a sua frequência invertida no corpus (tf-idf) Exemplo: todos os partidos, por semestre
Os scripts têm indicações de funcionamento dentro deles para maiores detalhes. Não sou especialista em Python, muito menos em programação, qualquer ajuda é bem-vinda.
O projeto ainda tá engatinhando, entre em contato para discutirmos possíveis contribuições.
Esse projeto está licenciado sob os termos do AGPL 3.0 - veja o arquivo LICENSE para mais detalhes.