Named entity recognition op getranscribeerde tekst

Spoken Language Processing in Python

Daniel Bourke

Machine Learning Engineer/YouTube Creator

spaCy installeren

# Install spaCy
$ pip install spacy
# Download spaCy-taalmodel
$ python -m spacy download en_core_web_sm
Spoken Language Processing in Python

spaCy gebruiken

import spacy

# Laad het spaCy-taalmodel nlp = spacy.load("en_core_web_sm")
# Maak een spaCy-doc
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)
Spoken Language Processing in Python

spaCy-tokens

# Toon tokens en posities
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...
Spoken Language Processing in Python

spaCy-zinnen

# Toon zinnen in de 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.
Spoken Language Processing in Python

spaCy-naamherkenning

Enkele ingebouwde entiteitstypen in spaCy:

  • PERSON Personen, ook fictief.
  • ORG Bedrijven, overheden, instellingen, enz.
  • GPE Landen, steden, staten.
  • PRODUCT Objecten, voertuigen, etenswaren, enz. (Geen diensten.)
  • DATE Absolute of relatieve data of perioden.
  • TIME Tijden korter dan een dag.
  • MONEY Geldbedragen, incl. eenheid.
  • CARDINAL Telwoorden die niet onder een ander type vallen.
Spoken Language Processing in Python

spaCy-naamherkenning

# Vind benoemde entiteiten in de doc
for entity in doc.ents:
  print(entity.text, entity.label_)
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Spoken Language Processing in Python

Aangepaste entiteiten

# Controleer de spaCy-pijplijn
print(nlp.pipe_names)
['tok2vec', 'tagger', 'parser',
 'attribute_ruler', 'lemmatizer', 'ner']
Spoken Language Processing in Python

De pijplijn aanpassen

# Voeg entity_ruler toe aan de pijplijn, vóór ner
ruler = nlp.add_pipe("entity_ruler", before="ner")
# Voeg een tokenpatroon toe aan de ruler
ruler.add_patterns([{"label":"PRODUCT", "pattern": "smartphone"}])
# Controleer de bijgewerkte pijplijn
nlp.pipe_names
Spoken Language Processing in Python

De pijplijn aanpassen

['tok2vec', 'tagger', 'parser', 'attribute_ruler',
 'lemmatizer', 'entity_ruler', 'ner']
Spoken Language Processing in Python

De nieuwe pijplijn testen

# Maak de doc opnieuw met de bijgewerkte pijplijn
doc = nlp(text)
# Test de nieuwe entiteitsregel
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
Spoken Language Processing in Python

Laten we oefenen!

Spoken Language Processing in Python

Preparing Video For Download...