Résumé du Projet doc2struct
Aperçu
doc2struct est un outil CLI Python qui transforme les documents en ensembles de données structurées en utilisant des embeddings sémantiques et des techniques de clustering. Il traite les documents et crée des sorties organisées, prêtes pour l’apprentissage automatique, adaptées à l’apprentissage par curriculum, l’étiquetage actif et l’analyse de données.
Caractéristiques Principales
- Support Multi-format : Traite les fichiers TXT, PDF et DOCX
- Segmentation Sémantique : Divise intelligemment les documents en fragments sémantiquement significatifs
- Clustering Basé sur Pivots : Utilise l’échantillonnage par point le plus éloigné pour identifier les fragments représentatifs clés
- Organisation par Bandes : Regroupe le contenu par distance aux pivots pour un apprentissage structuré
- Analyse de Nouveauté et Redondance : Évalue les fragments en fonction de leur unicité et de la densité d’information
Architecture
Composants Principaux
-
Analyseurs de Documents (
src/doc2struct/main.py:31-59)read_docx_to_paragraphs(): Extrait les paragraphes des documents Wordread_pdf_to_paragraphs(): Extrait le texte des fichiers PDFread_txt_to_paragraphs(): Traite les fichiers texte brut
-
Traitement du Texte (
src/doc2struct/main.py:61-90)split_into_sentences(): Segmentation légère des phrasesmake_chunks(): Crée des fragments de texte superposés avec une taille configurable
-
Analyse Sémantique (
src/doc2struct/main.py:92-163)- Utilise sentence-transformers pour les embeddings de texte
- FAISS pour la recherche de similarité efficace
- K-plus proches voisins pour l’analyse de redondance
-
Clustering et Organisation (
src/doc2struct/main.py:103-152)- Échantillonnage glouton par point le plus éloigné pour la sélection de pivots
- Attribution de bandes basée sur la distance en utilisant les quantiles
- Score d’énergie combinant la nouveauté et la redondance
Configuration
- Modèle :
sentence-transformers/all-MiniLM-L6-v2(rapide, léger) - Taille des Fragments : 350 caractères avec 60 caractères de chevauchement
- Pivots : Jusqu’à 12 fragments représentatifs clés
- Bandes : 4 groupes basés sur la distance par pivot (quantiles 0,25, 0,5, 0,75)
- KNN : 16 voisins pour l’analyse de redondance
Fichiers de Sortie
L’outil génère un ensemble de données structurées dans un dossier dédié :
structured_dataset.jsonl: Données complètes des fragments avec métadonnéespivots.json: Fragments représentatifs cléstrain.csv: Paires simples (texte, étiquette) pour l’entraînement MLdataset_card.md: Documentation complèteband_sizes.png: Visualisation de la distribution des données
Cas d’Usage
- Apprentissage par Curriculum : Entraînement progressif du contenu central au contenu périphérique
- Apprentissage Actif : Étiquetage efficace en se concentrant sur les fragments pivots
- Déduplication de Données : Filtrage du contenu redondant
- Extraction de Contenu : Priorisation des informations de haute valeur et nouvelles
Installation et Utilisation
uv pip install -e .
doc2struct --file-path=<chemin_vers_le_document>
Dépendances Techniques
- Core : fire, pandas, numpy
- NLP : sentence-transformers, faiss-cpu
- Traitement de Documents : pypdf, python-docx
- Visualisation : matplotlib
Structure du Projet
doc2struct/
├── src/doc2struct/
│ ├── __init__.py # Initialisation du package
│ ├── main.py # Pipeline de traitement principal
│ └── py.typed # Marqueur d'indications de type
├── pyproject.toml # Configuration du projet
└── README.md # Documentation de base
Cet outil représente une approche sophistiquée de la structuration de documents, combinant les techniques NLP modernes avec les flux de travail pratiques d’apprentissage automatique pour l’organisation et l’analyse efficaces des données.