Reconnaissance d'entités nommées sur du texte transcrit

Traitement du langage parlé en Python

Daniel Bourke

Machine Learning Engineer/YouTube Creator

Installer spaCy

# Installer spaCy
$ pip install spacy
# Télécharger le modèle de langue spaCy
$ python -m spacy download en_core_web_sm
Traitement du langage parlé en Python

Utiliser spaCy

import spacy

# Charger le modèle de langue spaCy nlp = spacy.load("en_core_web_sm")
# Créer un doc spaCy
text = ("I'd like to talk about a smartphone I ordered on July 31st "
        "from your Sydney store, my order number is 4093829. I spoke "
        "to one of your customer service team, Georgia, yesterday.")
doc = nlp(text)
Traitement du langage parlé en Python

Tokens spaCy

# Afficher les différents tokens et leurs positions
for token in doc:
  print(token.text, token.idx)
I 0
'd 1
like 4
to 9
talk 12
about 17
a 23
smartphone 25...
Traitement du langage parlé en Python

Phrases spaCy

# Afficher les phrases du doc
for sentence in doc.sents:
  print(sentence)
I'd like to talk about a smartphone I ordered on July 31st from your Sydney store, 
my order number is 4093829.
I spoke to one of your customer service team, Georgia, yesterday.
Traitement du langage parlé en Python

Entités nommées spaCy

Quelques entités nommées intégrées de spaCy :

  • PERSON Personnes, y compris fictives.
  • ORG Entreprises, agences, institutions, etc.
  • GPE Pays, villes, États/régions.
  • PRODUCT Objets, véhicules, aliments, etc. (Pas les services.)
  • DATE Dates ou périodes, absolues ou relatives.
  • TIME Heures inférieures à une journée.
  • MONEY Valeurs monétaires, unité incluse.
  • CARDINAL Numéraux ne relevant d'aucun autre type.
Traitement du langage parlé en Python

Entités nommées spaCy

# Rechercher les entités nommées dans le doc
for entity in doc.ents:
  print(entity.text, entity.label_)
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Traitement du langage parlé en Python

Entités nommées personnalisées

# Vérifier le pipeline spaCy
print(nlp.pipe_names)
['tok2vec', 'tagger', 'parser',
 'attribute_ruler', 'lemmatizer', 'ner']
Traitement du langage parlé en Python

Modifier le pipeline

# Ajouter entity_ruler au pipeline, avant ner
ruler = nlp.add_pipe("entity_ruler", before="ner")
# Ajouter un motif de tokens au ruler
ruler.add_patterns([{"label":"PRODUCT", "pattern": "smartphone"}])
# Vérifier le pipeline mis à jour
nlp.pipe_names
Traitement du langage parlé en Python

Modifier le pipeline

['tok2vec', 'tagger', 'parser', 'attribute_ruler',
 'lemmatizer', 'entity_ruler', 'ner']
Traitement du langage parlé en Python

Tester le nouveau pipeline

# Recréer le doc avec le pipeline mis à jour
doc = nlp(text)
# Tester la nouvelle règle d'entité
for entity in doc.ents:
  print(entity.text, entity.label_)
smartphone PRODUCT
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Traitement du langage parlé en Python

Allons-y et entraînons-nous avec spaCy !

Traitement du langage parlé en Python

Preparing Video For Download...