Ressources
- Pyodide : Une distribution Python qui fonctionne dans le navigateur et permet d'exécuter du code Python côté client
- Utilisation de Simplemma, disponible sur Pypi (micropip.install)
- Détection de la langue
- Lemmatisation
Packages python natifs
-
re
(Expressions régulières en Python) :- Tokénisation
- Filtrage des ponctuations, chiffres
- Normalisation du texte
-
json
(Conversion en JSON) Utilisé pour convertir les résultats en format JSON avant de les renvoyer à JavaScript
Fonctions TAL
-
Tokénisation des phrases
- Expression régulière
re.findall
pour extraire les mots valides du texte - Utilise la délimitation d'un mot
- Exclut les nombres et la ponctuation (
^[\d.,:!?;]+$
) - Pour améliorer la tokénisation en français, on ajoute l'expression régulière
tokgrm
pour gérer par exemple :- Expressions multi-mots : "pomme de terre"
- mots avec apostrophes : "aujourd'hui"
- les abréviations courantes en français (etc., p.ex, M. ...)
- Exclure les nombres
- Expression régulière
-
Détection de la langue
simplemma.langdetect
pour analyser le texte et attribuer une langue probabledef detect_language(text):
lang_scores = simplemma.langdetect(text, lang=("fr", "en", "es", "de", "it", "pt")) return lang_scores\[0\]\[0\] if lang_scores else "unk"
-
Lemmatisation :
simplemma.lemmatize(token, lang=detected_lang)
pour appliquer la lemmatisation sur chaque mot extrait (token
) en fonction de la langue détectée
lemmatized_tokens = [simplemma.lemmatize(token,lang=detected_lang) for token in tokens]
-
Calcul des fréquences : stockage du nombre d'apparitions de chaque mot lemmatisé dans un dictionnaire
freq = {}
for token in lemmatized_tokens: freq\[token\] = freq.get(token, 0) + 1
-
Filtrage des mots avec une stoplist
stoplistsByLang[lang] = set(words.lower().strip() for words in stoplists[lang])
Avec suppression des espaces et normalisation en minuscule pour prendre en compte les variations des mots