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 :
objectDataclass pour stocker les statistiques de nettoyage du Markdown.
- class src.smart_watch.utils.MarkdownCleaner.MarkdownCleaner(config: Any, logger: SmartWatchLogger)[source]
Bases :
objectClasse pour nettoyer et normaliser le contenu Markdown brut.
Cette classe fournit un pipeline de nettoyage configurable pour préparer le texte Markdown à un traitement ultérieur, notamment par des modèles de langage.
- _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('(\\r\\n|\\n|\\r){3,}')
- _RE_FORMATTING_LINES = re.compile('^[\\s#\\-\\"=_\\(\\[\\]\\)\\.]+$', re.MULTILINE)
- __init__(config: Any, logger: SmartWatchLogger)[source]
Initialise le MarkdownCleaner.
- Paramètres:
config (Any) – l’objet de configuration de l’application.
logger (SmartWatchLogger) – l’instance du logger à utiliser.
- _get_pending_cleaning(db_manager: DatabaseManager, execution_id: int) Sequence[Row[Tuple[ResultatsExtraction, Lieux]]][source]
Récupère les enregistrements nécessitant un nettoyage du markdown.
- Paramètres:
db_manager (DatabaseManager) – le gestionnaire de base de données.
execution_id (int) – l’ID de l’exécution à traiter.
- Renvoie:
une séquence de résultats à nettoyer.
- Type renvoyé:
Sequence[Row[Tuple[ResultatsExtraction, Lieux]]]
- process_markdown_cleaning(db_processor: DatabaseProcessor, execution_id: int) None[source]
Nettoie le markdown brut pour tous les résultats d’une exécution donnée.
- Paramètres:
db_processor (DatabaseProcessor) – le processeur de base de données.
execution_id (int) – l’ID de l’exécution.
- clean_markdown_content(text: str) str[source]
Applique un pipeline complet de nettoyage sur un contenu Markdown.
- _remove_markdown_links(text: str) str[source]
Supprime tous les types de liens Markdown, en ne conservant que le texte visible.
- _apply_char_replacements(text: str) str[source]
Applique les remplacements de caractères définis dans la configuration.
- _clean_multiple_newlines(text: str) str[source]
Remplace les séquences de 3 sauts de ligne ou plus par exactement 2.