M1 Plurital
clement.plancq@ens.psl.eu
type : forme unique d’un « mot », élément du vocabulaire d’un texte
token : séquence de caractères délimitée par des séparateurs (« mot graphique »)
plus il est facile d’utiliser Amazon et plus Amazon devient puissant et plus il est encore plus facile d’utiliser Amazon
source
22 tokens, 11 types
l’apostrophe suivie d’une voyelle est un séparateur
En TAL le mot est le résultat de la segmentation en mots, elle s’appuie sur des choix qui dépendront du type de corpus et de l’application visée.
Un token peut contenir plus d’un mot
zum (all.) -> zu + dem
du (fr.) -> de + le
Un mot peut être formé de plusieurs tokens
La Rochelle devra être reconnu comme tel par un outil de détection d’entités nommées (NER)
chemin de fer quid des mots composés ?
(voir traitement des mots composés dans le French Treebank (guide morpho-syntaxique) )
Algo de tokenisation de Spacy https://spacy.io/usage/linguistic-features#tokenization
1. Iterate over whitespace-separated substrings.
2. Check whether we have an explicitly defined rule for this substring. If we do, use it.
3. Otherwise, try to consume one prefix. If we consumed a prefix, go back to #2, so that special cases always get priority.
4. If we didn’t consume a prefix, try to consume a suffix and then go back to #2.
5. If we can’t consume a prefix or a suffix, look for a special case.
6. Next, look for a token match.
7. Look for “infixes” — stuff like hyphens etc. and split the substring into tokens on all infixes.
8. Once we can’t consume any more of the string, handle it as a single token.
La tokenisation opérée par Spacy est dite non destructive, c-a-d qu’il est possible de restituer le texte dans sa forme originale après l’opération de tokenisation.
Dans les corpus UD on trouve le texte original en commentaire
# sent_id = annodis.er_00190
# text = "Verdun, ville de lumière !"
1 " " PUNCT _ _ 2 punct _ SpaceAfter=No
2 Verdun Verdun PROPN _ Gender=Masc|Number=Sing 0 root _ SpaceAfter=No
3 , , PUNCT _ _ 2 punct _ _
4 ville ville NOUN _ Gender=Fem|Number=Sing 2 appos _ _
5 de de ADP _ _ 6 case _ _
6 lumière lumière NOUN _ Gender=Fem|Number=Sing 4 nmod _ _
7 ! ! PUNCT _ _ 2 punct _ SpaceAfter=No
8 " " PUNCT _ _ 2 punct _ _
Les derniers développements en machine learning utilisent une tokenisation au niveau des « sous-tokens » (subtoken)
Un des objectifs de cette approche est de limiter la taille du vocabulaire (V) des très gros corpus.
low -> low
lower -> low #er
lowest -> low #est
Voir ce notebook Hugging Face : https://github.com/huggingface/transformers/blob/master/notebooks/01-training-tokenizers.ipynb
La tokenisation est souvent précédée d’une étape de normalisation des caractères
import unicodedata
[c for c in unicodedata.normalize('NFC', 'Ô')]
['Ô']
[c for c in unicodedata.normalize('NFD', 'Ô')]
['O', '̂ ']
Voir https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize et https://unicode.org/reports/tr15/#Norm_Forms
La morphologie est l’étude de la formation des mots et de leurs variations. Les outils de TAL s’intéressent essentiellement à l’analyse morphologique.
On distingue deux familles de procédés morphologiques :
la flexion : forme canonique (lemme), formes fléchies
porter, portes, porteras, …
journal, journeaux
grand, grande, grands, grandes, …
la dérivation : base + affixe -> dérivé
réaliser / V + able -> réalisable / A
ir + réalisable / A -> irréalisable / A
∃ d’autres procédés de dérivation
(conversion, troncation, composition, …)
La racinisation consiste à supprimmer d’un mot les suffixes et/ou préfixes pour obtenir son radical ou sa racine.
La racine produite n’est pas une unité du lexique
Le stemming est principalement utilisé en recherche d’information (inclus dans Lucene, Elastisearch). C’est un traitement rapide qui permet d’améliorer le rappel
Voir la démo de Snowball
∃ différents algorithmes de stemming.
Ils fonctionnent à l’aide de succession de règles de désuffixation à base d’alternances C V et d’une liste de suffixes propres à chaque langue.
La longueur du suffixe peut déterminer quelle est la règle à appliquer.
Pour le français les algos incluent des règles de recodage des terminaisons de suffixe
abandonneras -> abandonn (2b) -> abandon (step5)
Trouve le lemme à partir d’une forme fléchie accompagnée ou non de sa catégorie grammaticale
Lemmatiseur avec base de données lexicales / lemmatiseur par règles
(Repris de P. Zweigenbaum)
Étant donné un mot et sa catégorie syntaxique mot + CAT
(formats : TreeTagger/fr ou Brill/INaLF)
Calcule le lemme de ce mot (et raffine la catégorie) mot + CAT:tt + lemme curieuse ADJ -> curieuse ADJ:A-fs- curieux
Fonctionne sur des mots inconnus :
schtroumpfiennes ADJ -> schtroumpfiennes ADJ:A-fp- schtroumpfien
en général, -èrent marque les verbes du 3ème groupe au passé simple : céd-èrent
quelquefois, la terminaison est plus courte et -èrent marque le présent : légifèr-ent
très rarement,terminaison ambiguë : lac-èrent et lacèr-ent
les partitions ambiguës sont lexicalisées car rares
la règle étant le désuffixage sur le suffixe le plus long, les verbes correspondant au suffixe -ent tels que légifèr- sont lexicalisés
autres cas (e.g. céd- ) : désuffixage régulier sur -èrent.
Principe : réduction à une racine unique
cèd- -> céd-
jett- -> jet-
26 lemmes ont leur racine qui se termine par tt-
guetter
pour les autres, la consonne géminée est simplifiée
jeter
(Repris de P. Zweigenbaum)
Étant donné un lemme et sa catégorie syntaxique sympathique/ADJ
Analyse la construction de ce lemme
[ [sympathie NOM] ique ADJ] (sympathique/ADJ, sympathie/NOM) “En rapport avec le(s) sympathie”
Analyse récursive, produit l’arbre de construction du mot
(Repris de P. Zweigenbaum)
ADJ/in/pre/ADJ + pensable/ADJ, VERBE/able/suf/ADJ + penser/VERBE “Non pensable”
A besoin en général de connaître la base du mot (sympathie/NOM, penser/VERBE)
déXiser V [dé [X’ N] + iser V]
Xable A [[X’ (er) V] + able A]
inX A [in[X’ A]A]
Gère l’ordre de décomposition impensable/ADJ = in + pensable/ADJ
décomposable/ADJ = décomposer/VERBE + able/ADJ
Gère les analyses ambiguës
implantable/ADJ = implanter/VERBE + able/ADJ ou bien im + plantable/ADJ
Produit une « glose »
(Prep lequel - Que l’) on peut implanter // Non
Outil créé par Fiammetta Namer