|
|
TODO expliciter la place du python dans le code.
|
|
|
|
|
|
## Ressources
|
|
|
|
|
|
* [Pyodide](https://pyodide.org/en/stable/) : Une distribution Python qui fonctionne dans le navigateur et permet d'exécuter du code Python côté client
|
|
|
* Utilisation de [Simplemma](https://pypi.org/project/simplemma/), disponible sur Pypi (micropip.install)
|
|
|
- Détection de la langue
|
|
|
- Lemmatisation
|
|
|
|
|
|
## Packages python natifs
|
|
|
|
|
|
* `re` (Expressions régulières en Python) :
|
|
|
- Tokénisation des phrases
|
|
|
* Utilise une expression régulière **`re.findall`** pour extraire les mots du texte
|
|
|
- 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
|
|
|
|
|
|
* **Détection de la langue**
|
|
|
|
|
|
**`simplemma.langdetect`** pour analyser le texte et attribuer une langue probable
|
|
|
|
|
|
>>>
|
|
|
def 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 |
|
|
\ No newline at end of file |