title | description | prev | next | type | id |
---|---|---|---|---|---|
Chapitre 1 : Recherche de mots, phrases, noms et concepts |
Ce chapitre te présente les bases du traitement de texte avec spaCy. Tu vas découvrir les structures de données, comment utiliser les pipelines pré-entraînés, et comment les employer pour prédire des caractéristiques linguistiques dans ton texte. |
/chapter2 |
chapter |
1 |
Commençons à utiliser spaCy ! Dans cet exercice, tu vas pouvoir essayer quelques uns des 60+ langages disponibles.
- Utilise
spacy.blank
pour créer un objetnlp
français (fr
) vierge. - Crée un
doc
et affiche son texte.
- Utilise
spacy.blank
pour créer un objetnlp
anglais (en
) vierge. - Crée un
doc
et affiche son texte.
- Utilise
spacy.blank
pour créer un objetnlp
espagnol (es
) vierge. - Crée un
doc
et affiche son texte.
Quand tu passes une chaîne de caractères à un objet nlp
, spaCy commence par
découper le texte en tokens et crée un objet document. Dans cet exercice, tu vas
en apprendre davantage sur le Doc
, ainsi que sur ses vues Token
et Span
.
- Utilise
spacy.blank
pour créer l'objetnlp
français. - Traite le texte et crée un objet
Doc
affecté à une variabledoc
. - Sélectionne le premier token du
Doc
et affiche son attributtext
.
Tu peux utiliser les indices dans un Doc
comme dans une liste Python. Par
exemple, doc[4]
désigne le token à l'indice 4, qui est le cinquième token dans
le texte. N'oublie pas qu'en Python le premier indice est 0, et pas 1.
- Utilise
spacy.blank
pour créer l'objetnlp
français. - Traite le texte et crée un objet
Doc
affecté à une variabledoc
. - Crée les portions du
Doc
pour les tokens "loups gris" et "loups gris et renards roux".
La création d'une portion d'un Doc
s'effectue exactement comme pour la portion
d'une liste en Python en utilisant la notation :
. N'oublie pas que l'indice du
dernier token est exclu – par exemple, 0:4
désigne les tokens à partir de 0
jusqu'au token 4, mais sans inclure le token 4.
Dans cet exemple, tu vas utiliser les objets Doc
et Token
de spaCy, et les
attributs lexicaux pour trouver des pourcentages dans un texte. Tu vas chercher
deux tokens consécutifs : un nombre et un symbole pourcentage.
- Utilise l'attribut
like_num
pour vérifier si un token dudoc
ressemble à un nombre. - Obtiens le token suivant le token courant dans le document. L'indice du
token suivant dans le
doc
esttoken.i + 1
. - Vérifie si l'attribut
text
du token suivant est un symbole "%".
Pour obtenir le token situé à un indice, tu peux utiliser la notation indicielle
sur le doc
. Par exemple, doc[5]
est le token situé à l'indice 5.
Qu'est-ce qui n'est pas inclus dans un paquet de pipeline et que tu peux charger dans spaCy ?
Tous les pipelines sauvegardés comportent un config.cfg
qui définit la langue
à initialiser, les composants de pipeline à charger ainsi que des détails sur la
manière dont le pipeline a été entraîné et quels paramétrages ont été utilisés.
Les packages de pipelines incluent des poids binaires pour prédire les annotations linguistiques comme l'étiquetage de partie du discours, les relations de dépendance ou les entités nommées.
Les pipelines entraînés te permettent de généraliser à partir d'un jeu de données d'apprentissage. Une fois entraînés, ils utilisent les poids binaires pour effectuer des prédictions. Il n'est donc pas nécessaire de les fournir avec leurs données d'apprentissage.
Les packages de pipelines contiennent un strings.json
qui stocke les entrées
dans le vocabulaire du pipeline et la correspondance avec leurs hashs. Cela
permet à spaCy de communiquer uniquement en hashs et de chercher la chaîne
correspondante si nécessaire.
Les pipelines que nous utilisons dans ce cours sont déjà pré-installés. Pour plus d'informations sur les pipelines entraînés de spaCy et la manière de les installer sur ta machine, consulte la documentation.
- Utilise
spacy.load
pour charger le petit modèle français"fr_core_news_sm"
. - Traite le texte et affiche le texte du document.
Pour charger un pipeline, appelle spacy.load
avec la chaîne de caractères qui
le désigne. Les noms des pipelines diffèrent selon les langues et les données sur
lesquelles ils ont été entraînés - donc fais attention à utiliser le bon nom.
Tu vas maintenant pouvoir essayer un des paquets de pipelines pré-entraînés de
spaCy et le voir effectuer des prédictions. N'hésite pas à le tester avec ton
propre texte ! Pour savoir ce que signifie une étiquette ou un label, tu peux
appeler spacy.explain
dans la boucle. Par exemple : spacy.explain("PROPN")
ou spacy.explain("GPE")
.
- Traite le texte avec l'objet
nlp
et crée undoc
. - Pour chaque token, affiche le texte du token, le
.pos_
du token (étiquette de partie du discours) et le.dep_
du token (relation de dépendance).
Pour créer un doc
, appelle l'objet nlp
avec une chaîne de caractères en
argument. Rappelle-toi que tu dois utiliser les noms d'attributs avec un tiret
bas pour obtenir les valeurs de la chaîne.
- Traite le texte et crée un objet
doc
. - Itère sur les
doc.ents
et affiche le texte de l'entité et son attributlabel_
.
Pour créer un doc
, appelle l'objet nlp
avec une chaîne de caractères en
argument. Rappelle-toi que tu dois utiliser les noms d'attributs avec un tiret
bas pour obtenir les valeurs de la chaîne.
Les modèles sont statistiques et pas toujours exacts. La justesse de leurs prédictions dépend du jeu de données d'apprentissage et du texte que tu traites. Voyons cela avec un exemple.
- Traite le texte avec l'objet
nlp
. - Itère sur les entités et affiche le texte et le label de chaque entité.
- Il semble que le modèle n'a pas prédit correctement "X Pro". Crée un span manuellement pour ces tokens.
- Pour créer un
doc
, appelle l'objetnlp
sur le texte. Les entités nommées sont accessibles avec l'attributdoc.ents
. - La manière la plus facile de créer un objet
Span
est d'utiliser la notation par portion – par exempledoc[5:10]
pour le token depuis la position 5 jusqu'à la position 10. N'oublie pas que la dernière position d'indice du token n'est pas incluse.
Essayons le Matcher
de spaCy basé sur des règles. Tu vas utiliser l'exemple
de l'exercice précédent et écrire un motif pour trouver l'expression "X Pro"
dans le texte.
- Importe le
Matcher
depuisspacy.matcher
. - Initialise-le avec le
vocab
partagé de l'objetnlp
. - Crée un motif qui corresponde avec les valeurs de
"TEXT"
de deux tokens :"X"
et"Pro"
. - Utilise la méthode
matcher.add
pour ajouter le motif au matcher. - Appelle le matcher sur le
doc
et affecte le résultat à la variablematches
. - Itère sur les correspondances et obtiens les spans correspondants depuis
l'indice
start
jusqu'à l'indiceend
.
- Le vocabulaire partagé est accessible avec l'attribut
nlp.vocab
. - Un motif est une liste de dictionnaires dont les clés sont des noms
d'attributs. Par exemple,
[{"TEXT": "Hello"}]
recherchera un token dont le texte exact est "Hello". - Les valeurs
start
etend
de chaque correspondance indiquent les indices de début et de fin du span trouvé. Pour obtenir le span, tu peux créer une portion dudoc
en utilisant les valeurs fournies de début et de fin.
Dans cet exercice, tu vas t'entraîner à écrire des motifs de correspondance plus complexes qui utilisent différents attributs des tokens et des opérateurs.
- Écris un motif qui recherche uniquement les mentions de versions complètes d'iOS : "iOS 7", "iOS 11" et "iOS 10".
- Pour obtenir la correspondance d'un token avec un texte exact, tu peux
utiliser l'attribut
TEXT
. Par exemple,{"TEXT": "Apple"}
recherchera des tokens dont le texte est exactement "Apple". - Pour rechercher un token numérique, tu peux utiliser l'attribut
"IS_DIGIT"
, qui retourneraTrue
pour les tokens constitués uniquement de nombres.
- Écris un motif qui recherche uniquement des formes de "télécharger"
(tokens avec le lemme "télécharger"), suivies par un token avec l'étiquette
de partie de discours
"PROPN"
(nom propre).
- Pour spécifier un lemme, tu peux utiliser l'attribut
"LEMMA"
dans le motif du token. Par exemple,{"LEMMA": "être"}
trouvera des tokens comme "est", "était" ou "serait". - Pour trouver des noms propres, tu pourras chercher tous les tokens dont la
valeur de
"POS"
est"PROPN"
.
- Écris un motif qui recherche un nom
"NOUN"
suivi par un ou deux adjectifs ("ADJ"
), c'est-à-dire un adjectif et un adjectif optionnel.
- Pour trouver des adjectifs, recherche les tokens dont la valeur de
"POS"
est"ADJ"
. Pour des noms, recherche"NOUN"
. - Des opérateurs peuvent être ajoutés avec la clé
"OP"
key. Par exemple,"OP": "?"
pour zéro ou une correspondance.