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 stocke les étiquettes POS dans la caractéristique pos_ du pipeline nlp
  • spacy.explain() explique une étiquette POS donnée

Composant d'étiquetage POS

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 un groupe de mots qui renvoie à une entité précise portant un 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 non GPE : chaînes de montagnes, etc.
DATE Dates ou périodes absolues ou 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 NER du pipeline
  • Les entités nommées sont accessibles par la propriété doc.ents
  • spaCy ajoute aussi à chaque entité son étiquette (.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 au type d'entité 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 est doté d'un visualiseur moderne : displaCy
  • Le visualiseur d'entités displaCy met en évidence les entités nommées et leurs étiquettes
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...