Ce projet vise à scraper des données depuis le site Books to Scrape, les transformer et les charger dans une base de données Snowflake. Par la suite, ces données sont utilisées pour entraîner un modèle de clustering de texte afin de classer les livres selon leur contenu textuel. Le projet est complété par un backend FastAPI pour exposer les résultats via une API REST.
nlp-text-clustering-book-webscraping/
├── app/
│ ├── fastapi_backend.py # Backend avec FastAPI
│ └── model/
│ ├── text_clustering.py # Script de clustering
│ └── save/
│ ├── clustering_model.pkl # Modèle de clustering sauvegardé
│ └── vectorizer.pkl # Vectoriseur sauvegardé
├── config/
│ ├── ml_config.json # Configuration du modèle ML
│ ├── scraping_config.json # Configuration du scraping
│ └── snowflake_config.json # Configuration de Snowflake
├── data/
│ ├── books_images_metadata/ # Dossier contenant les images scrappées
│ ├── src/ # Autres fichiers source pour alimenter le modèle
│ ├── books_dataframe_cleaned.csv # Données nettoyées
│ ├── books_images_metadata.json # Métadonnées contenant les images
│ ├── clusters.csv # Résultats du clustering
│ └── features.csv # Caractéristiques vectorisées
├── scripts/
│ ├── snowflake_loader.py # Script pour charger les données dans Snowflake
│ └── web_scraping.py # Script pour le scraping
├── logs/ # Journaux d'exécution
├── venv/ # Environnement virtuel Python
├── README.md # Documentation du projet
├── roadmap_notebook.ipynb # Fichier notebook pour test et différentes actions
└── requirements.txt # Dépendances Python
- Scraper des données depuis Books to Scrape.
- Construire et charger les données dans une base de données Snowflake.
- Modéliser les données dans Snowflake.
- Préparer les données pour le clustering de texte.
- Entraîner un modèle de clustering avec KMeans.
- Développer un backend FastAPI pour exposer les résultats.
git clone /~https://github.com/your-repo/nlp-text-clustering-book-webscraping.git
cd nlp-text-clustering-book-webscraping
python -m venv venv
source venv/bin/activate # Sur Windows : venv\Scripts\activate
pip install -r requirements.txt
Mettez à jour les fichiers de configuration dans config/
:
- scraping_config.json : Configuration pour le scraping.
- ml_config.json : Hyperparamètres pour le modèle de clustering.
- snowflake_config.json : Informations de connexion Snowflake.
- Database : Les données sont collectées via le site web, notoyées, scruturées et stockées dans Snowflake.
- Clustering : Les livres sont regroupés en clusters basés sur des caractéristiques textuelles.
- Exposition API :
- Endpoint :
/clusters
→ Retourne les clusters de livres. - Endpoint :
/predict
→ Prédit le cluster d’un livre donné.
- Endpoint :
Composant | Description |
---|---|
Python | Langage principal du projet. |
BeautifulSoup | Pour le scraping des données. |
Snowflake | Stockage et modélisation des données. |
Scikit-learn | Entraînement du modèle de clustering. |
FastAPI | Développement du backend REST. |
Uvicorn | Serveur ASGI pour FastAPI. |
- Scraping : Récupération des données depuis le web.
- ETL : Chargement des données dans Snowflake avec transformation.
- Clustering : Groupement des données textuelles.
- API REST : Interface pour interagir avec les résultats.
Pour toute question, et amélioration de ce projet n'hesitez pas à me contacter, Merci !
Auteur : Vital GUINGUINNI