Spaces:
Sleeping
Sleeping
import re | |
import nltk | |
import contractions | |
# Vérifie si le tokenizer punkt est déjà téléchargé | |
nltk.download('punkt', quiet=True) | |
nltk.download('punkt_tab') | |
def clean_scientific_text(text, max_words=2000): | |
# 1. Conversion du texte en minuscules | |
text = text.lower() | |
# 2. Suppression des balises HTML | |
text = re.sub(r'<.*?>', '', text) | |
# 3. Suppression des citations scientifiques (ex: [1], (Doe et al., 2020), etc.) | |
text = re.sub(r'\[\d+\]', '', text) # Suppression des références de type [1] | |
text = re.sub(r'\([^()]*\d{4}[^()]*\)', '', text) | |
text = re.sub(r'\b\w+ et al\., \d{4}\b', '', text) | |
text = re.sub(r'\b\d+\s*([kK]|[mM])?\b', '', text) | |
text = re.sub(r'\(.*?\d{4}.*?\)', '', text) # Suppression des références de type (Doe et al., 2020) | |
# 4. Suppression des caractères non désirés, y compris les underscores (_) | |
text = re.sub(r'[^a-zA-Z0-9\s.,]', '', text) # On garde seulement les caractères alphanumériques et ponctuation | |
text = re.sub(r'_', '', text) # Suppression des underscores | |
# 5. Suppression des espaces multiples | |
text = re.sub(r'\s+', ' ', text).strip() # Remplace les espaces multiples par un seul espace et enlève les espaces en début et fin | |
# 6. Normalisation de certains caractères spéciaux ou abréviations communes (ex: &, %, $) | |
text = text.replace('&', 'and') # Exemple de remplacement | |
# 7. Gestion des contractions | |
text = contractions.fix(text) | |
text = re.sub(r'\b(?!(a|e|i|o|u|à|è|ì|ò|ù|â|ê|î|ô|û|ä|ë|ï|ö|ü))\w\b', '', text) | |
# 7. Limitation à un nombre maximum de mots (ex: 2000 mots) | |
words = nltk.word_tokenize(text) | |
if len(words) > max_words: | |
words = words[:max_words] | |
# 8. Reconstitution du texte à partir des mots sélectionnés | |
cleaned_text = ' '.join(words) | |
return cleaned_text |