O objetivo deste trabalho foi de aplicar o conhecimento adquirido na disciplina de Aprendizado de Máquina, mais especificamente, na área de PLN (Processamento de Linguagem Natural). Para isso, foi utilizado notícias de três empresas na bolsa de valores pelo site Yahoo Fincance para realizar a análise de sentimento, e então, comparar os valores da bolsa antes e depois das suas respectivas notícias, buscando uma correlação entre o impacto do sentimento trazido na notícia e as negociações daquela mesma empresa.
As empresas escolhidas foram:
Para extração de dados foi utilizado o método de Web Scraping com a biblioteca Beautiful Soup e a utilização da biblioteca Selenium, para o scraping de dados renderizados por JavaScript. Os dados foram armazenados em um arquivo .csv, utilizando a biblioteca Pandas, o que facilitou tanto o armazenamento, quanto a utilização e leitura desses dados. A tabela contém as seguintes colunas:
Link | Title | Content | Date | Polarity | Subjectivity |
---|
Para a análise de sentimento foi utilizado o método de Análise de Sentimento com a biblioteca TextBlob, que tem a propriedade sentiment retornando Sentiment(polarity, subjectivity). Onde polarity é um valor entre [-1, 1] indicando a positividade ou negatividade do texto, e subjectivity é um valor entre [0, 1] indicando o quão objetivo ou subjetivo é o texto.
No terminal
pip install -r requirements.txt
para instalar as dependências do projeto.
python main.py codigo_da_empresa
para extrair os dados do site do Yahoo Finance.
Exemplo
python main.py VALE3.SA
Utilizando a biblioteca Matplotlib e a yfinance foi possível gerar o seguinte gráfico de cada empresa, em período de tempo referente ao das notícias publicadas e pesquisadas anteriormente:
E também foi possível gerar o gráfico da polaridade e subjetividade das notícias em período de tempo:
Com ambos os gráficos, foi possível observar que a polaridade e subjetividade das notícias, podendo assim formular uma hipótese de que a polaridade e subjetividade das notícias influenciam no valor da bolsa de valores.