Rozpoznávání pojmenovaných entit v přepsaném textu

Zpracování mluveného jazyka v Pythonu

Daniel Bourke

Machine Learning Engineer/YouTube Creator

Instalace spaCy

# Install spaCy
$ pip install spacy
# Download spaCy language model
$ python -m spacy download en_core_web_sm
Zpracování mluveného jazyka v Pythonu

Používání 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)
Zpracování mluveného jazyka v Pythonu

Tokeny v 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...
Zpracování mluveného jazyka v Pythonu

Věty v 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.
Zpracování mluveného jazyka v Pythonu

Pojmenované entity ve spaCy

Některé vestavěné pojmenované entity spaCy:

  • PERSON Lidé, včetně fiktivních postav.
  • ORG Firmy, agentury, instituce atd.
  • GPE Státy, města, regiony.
  • PRODUCT Předměty, vozidla, potraviny atd. (ne služby)
  • DATE Absolutní nebo relativní data či období.
  • TIME Časy kratší než den.
  • MONEY Peněžní hodnoty, včetně měny.
  • CARDINAL Číslovky, které nespadají do jiné kategorie.
Zpracování mluveného jazyka v Pythonu

Pojmenované entity ve 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
Zpracování mluveného jazyka v Pythonu

Vlastní pojmenované entity

# Check spaCy pipeline
print(nlp.pipe_names)
['tok2vec', 'tagger', 'parser',
 'attribute_ruler', 'lemmatizer', 'ner']
Zpracování mluveného jazyka v Pythonu

Úprava pipeline

# 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
Zpracování mluveného jazyka v Pythonu

Úprava pipeline

['tok2vec', 'tagger', 'parser', 'attribute_ruler',
 'lemmatizer', 'entity_ruler', 'ner']
Zpracování mluveného jazyka v Pythonu

Testování nové 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
Zpracování mluveného jazyka v Pythonu

Nastartuj a procvič si spaCy!

Zpracování mluveného jazyka v Pythonu

Preparing Video For Download...