As bases de dados utilizadas foram SIRENE-news e Fake.br-Corpus.
Com o script get_data.py
os dados são agregados em um dataframe no pandas, com classificações true
ou false
e um arquivo csv é criado.
Um modelo é criado e descrito nesse notebook. É utilizado uma vetorização Tf–idf nos textos das notícias e um modelo LightGBM. Os hiperparâmetros são tunados utilizando o scikit-optimize utilizando a função desse tutorial (muito bom!) do Mario Filho.
Os modelos de vetorização e de machinelearning foram salvos em arquivos .pkl
utilizando a biblioteca Joblib.
Uma API foi criada utilizando Flask no Heroku. A API recebe um request em Json no formato {url: url_da_noticia}
e retorna um Json no formato:
{results:
{resultado: (true/fake)
, probabilidade: (float)
}
O resultado
indica se a notícia foi considerada verdadeira ou falsa para o modelo e probabilidade
é a probabilidade de que a notícia seja falsa.
A api pode ser acessada no endereço https://detector-fake-news.herokuapp.com/, que retorna resultados através de requests de aplicativos.
Foi criada uma página que recebe uma URL de notícia e envia à API, recebendo seu resultado e enviando apresentando de forma mais amigável utilizando JavaScript.