normalisation de mots français pour spacy.
x | y |
---|---|
chuuuuut!!!!! | chut! |
bateâu | bateau |
HO | ho |
PEùùùT-èTRE | peut-être |
auteur-rice-x-s | auteur·ricexs |
peut—être | peut-être |
autre[ment] | autrement |
désœuvrement | désoeuvrement |
- les caractères répétés plus de 3x (2 pour la ponctuation) sont réduits à un seul (sauf "...").
- les mots hors-lexiques sont remplacés par une version accentuée différemment, si une telle version existe.
- les mots sont mis en minuscules.
- les mots composés sont normalisés par l'agrégation de leurs composants, normalisés individuellement.
- les variantes d'écritures inclusives sont uniformisées (caractère de séparation, nombre de caractères, ordre des suffixes).
- les parenthèses et crochets sont enlevés.
- les variantes de tirets (et d'apostrophes) remplacées par des tirets (ou apostrophes) simples (droites).
pour l'utiliser comme composant d'une pipeline spacy:
import spacy
nlp = spacy.load("fr_core_news_lg")
nlp.add_pipe('presque_normalizer', first=True)
[i.norm_ for i in nlp("QUOOOIIIIII PEUUUUUT---ÉÉÉtréééééé")]
[quoi, peut-être]
it has to_disk()
and from_disk()
methods:
nlp.to_disk("./model_output")
import spacy
def aggregate_suffixes(word: str, suffixes: list, char: str) -> str:
return word + char + char.join(map(str.upper, suffixes))
config = dict(
name="normalizer",
exc={"clef": "clé", "ptetre": "peut-être"},
words_files=["./exemple/liste/de/mots/specifique.txt"],
use_default_word_list=False,
suff_sep_char="-",
fn_agg_suff=aggregate_suffixes,
)
nlp = spacy.load("fr_core_news_lg")
nlp.add_pipe("presque_normalizer", first=True, config=config)
git clone https://github.com/thjbdvlt/presque presque
cd presque
pip install .