Recunoașterea entităților numite în text transcris

Procesarea limbajului vorbit în Python

Daniel Bourke

Machine Learning Engineer/YouTube Creator

Instalarea spaCy

# Install spaCy
$ pip install spacy
# Download spaCy language model
$ python -m spacy download en_core_web_sm
Procesarea limbajului vorbit în Python

Utilizarea spaCy

import spacy

# Load spaCy language model nlp = spacy.load("en_core_web_sm")
# Create a 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)
Procesarea limbajului vorbit în Python

Token-uri spaCy

# Show different tokens and 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...
Procesarea limbajului vorbit în Python

Propoziții spaCy

# Show sentences in 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.
Procesarea limbajului vorbit în Python

Entități numite spaCy

Câteva dintre entitățile numite predefinite în spaCy:

  • PERSON Persoane, inclusiv fictive.
  • ORG Companii, agenții, instituții etc.
  • GPE Țări, orașe, state.
  • PRODUCT Obiecte, vehicule, alimente etc. (Nu și servicii.)
  • DATE Date sau perioade absolute sau relative.
  • TIME Momente mai mici de o zi.
  • MONEY Valori monetare, inclusiv unitatea.
  • CARDINAL Numerale care nu se încadrează în alt tip.
Procesarea limbajului vorbit în Python

Entități numite spaCy

# Find named entities in doc
for entity in doc.ents:
  print(entity.text, entity.label_)
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Procesarea limbajului vorbit în Python

Entități numite personalizate

# Check spaCy pipeline
print(nlp.pipe_names)
['tok2vec', 'tagger', 'parser',
 'attribute_ruler', 'lemmatizer', 'ner']
Procesarea limbajului vorbit în Python

Modificarea pipeline-ului

# Add entity_ruler to the pipeline, before ner
ruler = nlp.add_pipe("entity_ruler", before="ner")
# Add token pattern to ruler
ruler.add_patterns([{"label":"PRODUCT", "pattern": "smartphone"}])
# Check updated pipeline
nlp.pipe_names
Procesarea limbajului vorbit în Python

Modificarea pipeline-ului

['tok2vec', 'tagger', 'parser', 'attribute_ruler',
 'lemmatizer', 'entity_ruler', 'ner']
Procesarea limbajului vorbit în Python

Testarea noului pipeline

# Recreate the doc with the updated pipeline
doc = nlp(text)
# Test new entity rule
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
Procesarea limbajului vorbit în Python

Hai să exersăm cu spaCy!

Procesarea limbajului vorbit în Python

Preparing Video For Download...