Caractéristiques linguistiques dans spaCy

Traitement du langage naturel avec spaCy

Azadeh Mobasher

Principal Data Scientist

Étiquetage POS

  • Catégoriser les mots grammaticalement selon leur fonction et le contexte dans la phrase
POS Description Exemple
VERB Verbe run, eat, ate, take
NOUN Nom man, airplane, tree, flower
ADJ Adjectif big, old, incompatible, conflicting
ADV Adverbe very, down, there, tomorrow
CONJ Conjonction and, or, but
Traitement du langage naturel avec spaCy

Étiquetage POS avec spaCy

 

  • L'étiquetage POS précise le sens d'un mot
  • Certains mots comme watch peuvent être à la fois nom et verbe
  • spaCy fournit les étiquettes POS via la fonctionnalité pos_ du pipeline nlp
  • spacy.explain() explique une étiquette POS donnée

Composant POS Tagger

Traitement du langage naturel avec spaCy

Étiquetage POS avec spaCy

verb_sent = "I watch TV."

print([(token.text, token.pos_, spacy.explain(token.pos_)) for token in nlp(verb_sent)])
[('I', 'PRON', 'pronoun'), 
('watch', 'VERB', 'verb'), 
('TV', 'NOUN', 'noun'), 
('.', 'PUNCT', 'punctuation')]

noun_sent = "I left without my watch."

print([(token.text, token.pos_, spacy.explain(token.pos_)) for token in nlp(noun_sent)])
[('I', 'PRON', 'pronoun'), 
('left', 'VERB', 'verb'), 
('without', 'ADP', 'adposition'), 
('my', 'PRON', 'pronoun'),
('watch', 'NOUN', 'noun'),
('.', 'PUNCT', 'punctuation')]
Traitement du langage naturel avec spaCy

Reconnaissance d'entités nommées

  • Une entité nommée est un mot ou groupe de mots désignant une entité précise par son nom
  • La reconnaissance d'entités nommées (NER) classe ces entités dans des catégories prédéfinies
Type d'entité Description
PERSON Personne nommée ou famille
ORG Entreprises, institutions, etc.
GPE Entité géopolitique : pays, villes, etc.
LOC Lieux hors GPE : chaînes de montagnes, etc.
DATE Dates ou périodes absolues/relatives
TIME Temps inférieur à une journée
Traitement du langage naturel avec spaCy

NER et spaCy

 

  • Les modèles spaCy extraient les entités nommées via le composant de pipeline NER
  • Les entités nommées sont accessibles via la propriété doc.ents
  • spaCy attribue aussi à chaque entité son libellé (.label_)

Composant NER

Traitement du langage naturel avec spaCy

NER et spaCy

 

import spacy
nlp = spacy.load("en_core_web_sm")
text = "Albert Einstein was genius."
doc = nlp(text)

print([(ent.text, ent.start_char, ent.end_char, ent.label_) for ent in doc.ents])
>>> [('Albert Einstein', 0, 15, 'PERSON')]
Traitement du langage naturel avec spaCy

NER et spaCy

  • On peut aussi accéder aux types d'entités de chaque jeton dans un conteneur Doc

 

import spacy
nlp = spacy.load("en_core_web_sm")
text = "Albert Einstein was genius."
doc = nlp(text)

print([(token.text, token.ent_type_) for token in doc])
>>> [('Albert', 'PERSON'), ('Einstein', 'PERSON'),
('was', ''), ('genius', ''), ('.', '')]
Traitement du langage naturel avec spaCy

displaCy

 

  • spaCy propose un visualiseur moderne : displaCy
  • Le visualiseur d'entités displaCy met en évidence les entités nommées et leurs libellés
import spacy
from spacy import displacy

text = "Albert Einstein was genius."
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)

displacy.serve(doc, style="ent")

Sortie NER de displaCy

Traitement du langage naturel avec spaCy

Passons à la pratique !

Traitement du langage naturel avec spaCy

Preparing Video For Download...