Named entity recognition su testo trascritto

Elaborazione del linguaggio parlato in Python

Daniel Bourke

Machine Learning Engineer/YouTube Creator

Installare spaCy

# Installa spaCy
$ pip install spacy
# Scarica il modello linguistico di spaCy
$ python -m spacy download en_core_web_sm
Elaborazione del linguaggio parlato in Python

Usare spaCy

import spacy

# Carica il modello linguistico di spaCy nlp = spacy.load("en_core_web_sm")
# Crea un doc di 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)
Elaborazione del linguaggio parlato in Python

Token di spaCy

# Mostra token e posizioni
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...
Elaborazione del linguaggio parlato in Python

Frasi in spaCy

# Mostra le frasi nel 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.
Elaborazione del linguaggio parlato in Python

Entità denominate in spaCy

Alcune entità denominate predefinite di spaCy:

  • PERSON Persone, anche di fantasia.
  • ORG Aziende, agenzie, istituzioni, ecc.
  • GPE Paesi, città, stati.
  • PRODUCT Oggetti, veicoli, cibi, ecc. (Non servizi.)
  • DATE Date o periodi assoluti o relativi.
  • TIME Orari inferiori a un giorno.
  • MONEY Valori monetari, inclusa l'unità.
  • CARDINAL Numerali che non rientrano in altri tipi.
Elaborazione del linguaggio parlato in Python

Entità denominate in spaCy

# Trova le entità nel doc
for entity in doc.ents:
  print(entity.text, entity.label_)
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Elaborazione del linguaggio parlato in Python

Entità personalizzate

# Controlla la pipeline di spaCy
print(nlp.pipe_names)
['tok2vec', 'tagger', 'parser',
 'attribute_ruler', 'lemmatizer', 'ner']
Elaborazione del linguaggio parlato in Python

Modificare la pipeline

# Aggiungi entity_ruler alla pipeline, prima di ner
ruler = nlp.add_pipe("entity_ruler", before="ner")
# Aggiungi un pattern di token al ruler
ruler.add_patterns([{"label":"PRODUCT", "pattern": "smartphone"}])
# Controlla la pipeline aggiornata
nlp.pipe_names
Elaborazione del linguaggio parlato in Python

Modificare la pipeline

['tok2vec', 'tagger', 'parser', 'attribute_ruler',
 'lemmatizer', 'entity_ruler', 'ner']
Elaborazione del linguaggio parlato in Python

Testare la nuova pipeline

# Ricrea il doc con la pipeline aggiornata
doc = nlp(text)
# Prova la nuova regola sulle 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
Elaborazione del linguaggio parlato in Python

Partiamo e facciamo pratica con spaCy!

Elaborazione del linguaggio parlato in Python

Preparing Video For Download...