Markdown Cleaner
Le module MarkdownCleaner
nettoie et normalise le contenu Markdown obtenu après la conversion de pages web HTML. Il prépare ainsi le texte pour une analyse efficace par les modèles de langage.
Fonctionnalités
Élimine tous les types de liens Markdown et les images autonomes, ne conservant que le texte pertinent.
Supprime les lignes qui ne contiennent que des caractères de mise en forme (comme —, ###, * * *).
Applique un ensemble de remplacements de caractères définis dans la configuration pour corriger les erreurs de formatage courantes (espaces multiples, etc.).
Élimine les lignes vides consécutives et les lignes de contenu identiques qui se suivent.
Usage
La classe MarkdownCleaner
est utilisé dans le pipeline principal de main.py
. La fonction process_markdown_cleaning
récupère les textes bruts depuis la colonne markdown_brut
de la table resultats_extraction
(cf bdd), les nettoie, et enregistre la version nettoyée dans la colonne markdown_nettoye
de la même table.
Modules
- class src.smart_watch.utils.MarkdownCleaner.CleaningStats(texts_processed: int = 0, texts_successful: int = 0, chars_replaced: int = 0)[source]
Bases :
object
Dataclass pour stocker les statistiques de nettoyage à chaque étape.
- Attributs :
texts_processed (int) : Nombre total de textes traités. texts_successful (int) : Nombre de textes nettoyés avec succès. chars_replaced (int) : Nombre total de caractères remplacés lors du nettoyage.
- class src.smart_watch.utils.MarkdownCleaner.MarkdownCleaner(config: Any, logger: Any)[source]
Bases :
object
Une classe pour nettoyer et normaliser le contenu Markdown.
Cette classe fournit un pipeline pour nettoyer du texte Markdown brut, le rendant plus adapté au traitement par des modèles de langage.
- Paramètres:
- _RE_MARKDOWN_LINKS = re.compile('\\[([^\\]]*)\\]\\([^)]*(?: \\"[^\\"]*\\")?\\)')
- _RE_AUTO_LINKS = re.compile('<(https?://[^>]+)>')
- _RE_IMAGE_LINKS = re.compile('\\[!\\[[^\\]]*\\]\\([^)]*\\)\\]\\([^)]*(?: \\"[^\\"]*\\")?\\)')
- _RE_STANDALONE_IMAGES = re.compile('!\\[[^\\]]*\\]\\([^)]*\\)')
- _RE_MULTI_NEWLINES = re.compile('\\n{3,}')
- _RE_FORMATTING_LINES = re.compile('^[\\s#\\-\\"=_\\(\\[\\]\\)\\.]+$', re.MULTILINE)
- __init__(config: Any, logger: Any)[source]
Initializes the MarkdownCleaner.
- Paramètres:
config (Any) – The application’s configuration object.
logger (Any) – The logger for this instance.
- _get_pending_cleaning(db_manager: DatabaseManager, execution_id: int) Sequence[Row[Tuple[ResultatsExtraction, Lieux]]] [source]
Récupère les enregistrements de la base de données nécessitant un nettoyage du markdown.
- Paramètres:
db_manager (DatabaseManager) – L’instance du gestionnaire de base de données.
execution_id (int) – L’identifiant de l’exécution en cours.
- Renvoie:
Une séquence de rows, chacune contenant un objet ResultatsExtraction et un objet Lieux.
- Type renvoyé:
Sequence[Row[Tuple[ResultatsExtraction, Lieux]]]
- process_markdown_cleaning(db_processor: DatabaseProcessor, execution_id: int)[source]
Nettoie le markdown brut de tous les résultats d’une exécution.
- Paramètres:
db_processor (DatabaseProcessor) – Processeur de base de données
execution_id (int) – ID de l’exécution
- clean_markdown_content(text: str) str [source]
Nettoie le contenu markdown en appliquant des remplacements et en supprimant les liens.
- _remove_markdown_links(text: str) str [source]
Supprime les liens markdown, en conservant uniquement le texte.
Gère les formats : - [texte](url) - [texte](url « titre ») - [](url « titre ») - liens avec images -  - images seules
- _apply_char_replacements(text: str) str [source]
Applique les remplacements de caractères indiqués la configuration.
- _clean_multiple_newlines(text: str) str [source]
Remplace 3 sauts de ligne ou plus par exactement 2.