Skip to content

aasouzaconsult/Luppar-News-Rec

Repository files navigation

Luppar News-Rec

Luppar News-Rec: Um Recomendador Inteligente de Notícias

O Luppar News-Rec é um Sistema Recomendador de Notícias (SRN) composto por algoritmos clássicos de classificação que trabalham em conjunto com representações de documentos para solucionar o problema de classificação de notícias de forma a trazer os documentos(notícias) que atendam a necessidade do usuário. A metodologia que segue esse trabalho divide os esforços da implementação do SRN em três etapas: Subsistema de Captura, Pré-Processamento e Armazenamento, Subsistema de Classificação de Notícias e Subsistema de Aquisição de Perfil de Assinantes e Distribuição.

Softwares

Trabalho

LupparNews-Rec.pdf (será distribuida em breve)



Recursos do Luppar News-Rec

News Recommender System using Word Embeddings for study and research.

Disponível em: http://luppar.com/recommender

Coleções de documentos

  • Z5News (Coleção em Inglês com 5 tópicos)
    • sportsNews, politicsNews, technologyNews, PersonalFinance e brazil-news
  • Z5NewsBrasil (Coleção em Portugues com 5 tópicos)
    • esporteNews, politicaNews, tecnologiaNews, financaPessoal e educacaonews
  • Z12News (Coleção em Inglês com 12 tópicos)
    • sportsnews, politicsNews, technologyNews, PersonalFinance, brazil-news, aerospace-defense, autos, commoditiesNews, fundsNews, foreignexchangeNews, healthnews e environmentnews

Disponíveis em: /data

  • Z5News -> Arquivos de Treinamento com 42.532 notícias do site reuters.
    • reuters_X_Z5_pp.ipy (Notícias - pré-processadas)
    • reuters_y_Z5_pp.ipy (Tópicos)
    • reuters_z_Z5_pp.ipy (Notícias - completas)
  • Z5NewsBrasil -> Arquivos de Treinamento com 24.177 notícias do site g1 news.
    • g1_X_Z5BR_pp.ipy (Notícias - pré-processadas)
    • g1_y_Z5BR_pp.ipy (Tópicos)
    • g1_z_Z5BR_pp.ipy (Notícias - completas)
  • Z12News -> Arquivos de Treinamento com 41.849 notícias do site reuters.
    • reuters_X_Z12_pp.ipy (Notícias - pré-processadas)
    • reuters_y_Z12_pp.ipy (Tópicos)
    • reuters_z_Z12_pp.ipy (Notícias - completas)

  • Z5News -> Arquivos de Teste com notícias dos sites: reuters e inshorts.
    • reuters_X_Z5_pp_Test_1d.ipy (Notícias de teste - pré-processadas)
    • reuters_y_Z5_pp_Test_1d.ipy (Tópicos)
    • reuters_z_Z5_pp_Test_1d.ipy (Notícias de teste - completas)
  • Z5NewsBrasil -> Arquivos de Teste com notícias do site: uol notícias (agregador).
    • g1_X_Z5BR_pp_Test_1d.ipy (Notícias de teste - pré-processadas)
    • g1_y_Z5BR_pp_Test_1d.ipy (Tópicos)
    • g1_z_Z5BR_pp_Test_1d.ipy (Notícias de teste - completas)
  • Z12News -> Arquivos de Teste com notícias dos sites: reuters e inshorts.
    • reuters_X_Z12_pp_Test_1d.ipy (Notícias de teste - pré-processadas)
    • reuters_y_Z12_pp_Test_1d.ipy (Tópicos)
    • reuters_z_Z12_pp_Test_1d.ipy (Notícias de teste - completas)

Representações de Documentos

  • FastText + E2V-IDF (Representação Embedding: FastText combinada com a abordagem E2V-IDF (ponderada por IDF))
  • Word2Vec + E2V-IDF (Representação Embedding: Word2Vec combinada com a abordagem E2V-IDF (ponderada por IDF))
  • BoW (Representação Bag-of-Words - saco de palavras)

Classificadores de Texto

  • SVM (RBF) (Classificador SVM - Support Vector Machine com Kernel: RBF - Radial Basis Function)
  • Random Forest (RF) (Classificador Random Forest - Floresta Aleatória)

Receba notícias por E-mail (Crie seu perfil de Assinante)

Informe seu e-mail caso deseje receber notícias diariamente (1x) via e-mail.

  • Para salvar seu perfil de assinante:
    • informe seu e-mail, escolha os tópicos de sua preferência e clique no botão: Recomendar.

Métricas

Informe Sim caso deseje que as métricas da combinação escolhida sejam expostas na tela.

Botões

  • Recomendar (Recomenda notícias, já armazenadas no Luppar News-Rec, conforme as seleções realizadas)
  • Baixar e Recomendar (Baixa as últimas notícias, faz o pré-processamento, Classifica as novas notícias com base no modelo treinado para a combinação escolhida e recomenda as notícias com base nos tópicos selecionados)
    • Subsistema 1 - Baixar (web crawler), Pré-Processar (Remoção de Pontuação, Numeração, StopWords, aplicado Stemming) e armazenamento das notícias;
    • Subsistema 2 - Classificar de forma automática em tópicos, fazendo uso de Machine learning, as notícias armazenadas na etapa anterior (Subsistema 1), utilizando combinações entre representação de documentos e classificadores de texto;
    • Subsistema 3 - Recomenda as notícias classificadas em tópicos na etapa anterior (Subsistema 2) com base nas preferências dos usuários (utilizando abordagem baseado em conteúdo (subscrição em itens)).

Observações

  • Vetores embeddings para coleções Z5News e Z12News (Se encontram na pasta: \data\emb)
  • Modelos gerados para coleções - Combinação Representação + Classificadores (Se encontram na pasta: \model)
  • Página (Se encontram na pasta: \templates)
  • Implementação (Se encontram na pasta: \recommender)
  • Predições geradas para coleções - utilizado para Emuladores (Se encontram na pasta: \data\pred)

Melhores combinações (DICA)

  • Para a coleção Z5News
    • Representação: FastText + E2V-IDF + Classificador: SVM (RBF);
  • Para a coleção Z5NewsBrasil
    • Representação: BoW + Classificador: Random Forest (RF);
  • Para a coleção Z12News
    • Representação: Word2Vec + E2V-IDF + Classificador: SVM (RBF).


Montagem do ambiente (Linux):

Pré-Requisitos

  • GCC
$ sudo apt-get install gcc
  • PYTHON (Instalar python > 3.6 e Pip3)
$ sudo apt install python3
$ sudo apt install python3-pip
  • PostgreSQL (Instalar)
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
  • PostgreSQL (Criar SCHEMA - no banco postgres)
CREATE SCHEMA luppar;
  • Git (Instalar)
$ sudo apt install git

Baixar repositório:

$ cd
$ https://github.com/aasouzaconsult/Luppar-News-Rec.git
$ cd Luppar-News-Rec
$ pip3 install -r requirements.txt
$ cp env .env
$ vim .env

Adicionar no arquivo .env as seguintes configurações:

DEBUG=True
SECRET_KEY=s3cr3t
DATABASE_SCHEME=luppar
DATABASE_NAME=postgres
DATABASE_URL=localhost
DATABASE_USER=postgres
DATABASE_PASS=admin
DATABASE_PORT=5432

Execute no terminal:

$ python3 manage.py migrate
$ python3 manage.py createsuperuser --username=admin --email=admin@example.com
$ python3 manage.py runserver

Caminho padrão do servidor: http://localhost:8000/recommender



Dúvidas ou Sugestões:

Via E-mail