Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ledsouza/deep-learning-noticias
Este projeto visa construir dois modelos de Machine Learning: um para classificar notícias em diferentes categorias e outro para realizar o autocomplete de texto, prevendo a próxima palavra em uma frase. O conjunto de dados fornecido consiste em notícias de um site de notícias, já pré-processadas e armazenadas em um arquivo CSV.
https://github.com/ledsouza/deep-learning-noticias
deep-learning keras machine-learning python scikit-learn tensorflow
Last synced: 27 days ago
JSON representation
Este projeto visa construir dois modelos de Machine Learning: um para classificar notícias em diferentes categorias e outro para realizar o autocomplete de texto, prevendo a próxima palavra em uma frase. O conjunto de dados fornecido consiste em notícias de um site de notícias, já pré-processadas e armazenadas em um arquivo CSV.
- Host: GitHub
- URL: https://github.com/ledsouza/deep-learning-noticias
- Owner: ledsouza
- Created: 2024-08-13T19:18:21.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-08-27T13:28:56.000Z (2 months ago)
- Last Synced: 2024-09-27T20:20:27.824Z (about 1 month ago)
- Topics: deep-learning, keras, machine-learning, python, scikit-learn, tensorflow
- Language: HTML
- Homepage:
- Size: 67 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Classificação de Notícias e Autocomplete de Texto 📰
![Static Badge](https://img.shields.io/badge/Status-Finalizado-green)
## Descrição
Este projeto visa construir dois modelos de Machine Learning: um para classificar notícias em diferentes categorias e outro para realizar o autocomplete de texto, prevendo a próxima palavra em uma frase. O conjunto de dados fornecido consiste em notícias de um site de notícias, já pré-processadas e armazenadas em um arquivo CSV.
## Tecnologias Utilizadas
- Python
- Pandas
- Scikit-learn
- TensorFlow
- Keras## Dicionário de Dados
O arquivo CSV de dados contém as seguintes colunas:
| Coluna | Descrição | Tipo de Dado |
|---------------|-------------------------------------------------|--------------|
| ClassIndex | Índice da categoria da notícia (0-3) | Numérico |
| Título | Título da notícia | Texto |
| Descrição | Descrição da notícia | Texto |
| Texto | Título e descrição concatenados, separados por espaço | Texto |## Descrição Detalhada do Projeto
### Classificação de Notícias
- **Pré-processamento:**
- O campo `ClassIndex` foi ajustado para que os valores variem de 0 a 3, em vez de 1 a 4, para compatibilidade com o TensorFlow.
- Uma nova coluna `Texto` foi criada, combinando o título e a descrição da notícia.
- **Separação de Dados:**
- Os dados foram divididos em conjuntos de treino e teste usando `train_test_split` da biblioteca Scikit-learn, com uma proporção de 80% para treino e 20% para teste.
- **Tokenização:**
- A coluna `Texto` foi tokenizada usando `TextVectorization` do Keras, com um vocabulário de tamanho `VOCAB_SIZE`.
- **Modelagem:**
- Diversas arquiteturas de modelos de classificação foram experimentadas, incluindo:
- **Modelo 1:** Uma rede neural simples com camadas `Embedding`, `GlobalAveragePooling1D` e `Dense`.
- **Modelo 2:** Uma rede neural convolucional (CNN) com camadas `Embedding`, `Conv1D`, `MaxPooling1D`, `GlobalAveragePooling1D`, `Dropout` e `Dense`.
- **Modelo com camadas LSTM:** Uma rede neural recorrente (RNN) com camadas `Embedding`, `Bidirectional(LSTM)`, `Dense` e `Dropout`.
- Os modelos foram compilados com o otimizador `Adam`, a função de perda `sparse_categorical_crossentropy` e a métrica `accuracy`.
- **Treinamento:**
- Os modelos foram treinados com os dados de treino, utilizando o conjunto de teste para validação.
- O desempenho do modelo foi avaliado usando a acurácia e a perda nos conjuntos de treino e validação.
- **Avaliação:**
- Uma matriz de confusão foi gerada para visualizar o desempenho do modelo em cada categoria.### Autocomplete de Texto
- **Amostragem:**
- Uma amostra menor dos dados foi utilizada para acelerar o treinamento do modelo de autocomplete.
- **Tokenização:**
- O texto foi tokenizado usando `TextVectorization` do Keras.
- **Pré-processamento:**
- As sequências de entrada foram preparadas da seguinte forma:
- Remoção de zeros à direita de cada sequência.
- Adição de padding à esquerda para garantir o mesmo comprimento.
- Truncamento de sequências longas.
- Remoção de sequências repetidas.
- **Modelagem:**
- Uma rede neural recorrente (RNN) com camadas `Embedding`, `Bidirectional(LSTM)`, `Dense`, `BatchNormalization` e `Dropout` foi utilizada.
- O modelo foi compilado com a função de perda `categorical_crossentropy`, o otimizador `Adam` e a métrica `accuracy`.
- **Treinamento:**
- O modelo foi treinado com as sequências de entrada preparadas.
- **Previsão:**
- Uma função `predict_next_words` foi criada para prever as próximas palavras mais prováveis, dado um texto de entrada.