Jazykové funkce v spaCy

Zpracování přirozeného jazyka s knihovnou spaCy

Azadeh Mobasher

Principal Data Scientist

POS tagování

  • Kategorizace slov gramaticky podle funkce a kontextu ve větě
POS Popis Příklad
VERB Sloveso run, eat, ate, take
NOUN Podstatné jméno man, airplane, tree, flower
ADJ Přídavné jméno big, old, incompatible, conflicting
ADV Příslovce very, down, there, tomorrow
CONJ Spojka and, or, but
Zpracování přirozeného jazyka s knihovnou spaCy

POS tagování se spaCy

 

  • POS tagování potvrzuje význam slova
  • Některá slova, například watch, mohou být podstatným jménem i slovesem
  • spaCy ukládá POS tagy do příznaku pos_ v NLP pipeline
  • spacy.explain() vysvětlí daný POS tag

Komponenta POS taggeru

Zpracování přirozeného jazyka s knihovnou spaCy

POS tagování se spaCy

verb_sent = "I watch TV."

print([(token.text, token.pos_, spacy.explain(token.pos_)) for token in nlp(verb_sent)])
[('I', 'PRON', 'pronoun'), 
('watch', 'VERB', 'verb'), 
('TV', 'NOUN', 'noun'), 
('.', 'PUNCT', 'punctuation')]

noun_sent = "I left without my watch."

print([(token.text, token.pos_, spacy.explain(token.pos_)) for token in nlp(noun_sent)])
[('I', 'PRON', 'pronoun'), 
('left', 'VERB', 'verb'), 
('without', 'ADP', 'adposition'), 
('my', 'PRON', 'pronoun'),
('watch', 'NOUN', 'noun'),
('.', 'PUNCT', 'punctuation')]
Zpracování přirozeného jazyka s knihovnou spaCy

Rozpoznávání pojmenovaných entit

  • Pojmenovaná entita je slovo nebo fráze odkazující na konkrétní pojmenovanou věc
  • Rozpoznávání pojmenovaných entit (NER) je klasifikuje do předdefinovaných kategorií
Typ entity Popis
PERSON Pojmenovaná osoba nebo rodina
ORG Firmy, instituce apod.
GPE Geopolitická entita: státy, města apod.
LOC Lokace mimo GPE: pohoří apod.
DATE Absolutní nebo relativní datum či období
TIME Čas kratší než den
Zpracování přirozeného jazyka s knihovnou spaCy

NER a spaCy

 

  • spaCy extrahuje pojmenované entity pomocí komponenty pipeline NER
  • Pojmenované entity jsou dostupné přes vlastnost doc.ents
  • spaCy každou entitu označí štítkem (.label_)

Komponenta NER

Zpracování přirozeného jazyka s knihovnou spaCy

NER a spaCy

 

import spacy
nlp = spacy.load("en_core_web_sm")
text = "Albert Einstein was genius."
doc = nlp(text)

print([(ent.text, ent.start_char, ent.end_char, ent.label_) for ent in doc.ents])
>>> [('Albert Einstein', 0, 15, 'PERSON')]
Zpracování přirozeného jazyka s knihovnou spaCy

NER a spaCy

  • Typy entit jednotlivých tokenů jsou dostupné také v kontejneru Doc

 

import spacy
nlp = spacy.load("en_core_web_sm")
text = "Albert Einstein was genius."
doc = nlp(text)

print([(token.text, token.ent_type_) for token in doc])
>>> [('Albert', 'PERSON'), ('Einstein', 'PERSON'),
('was', ''), ('genius', ''), ('.', '')]
Zpracování přirozeného jazyka s knihovnou spaCy

displaCy

 

  • spaCy je vybaveno moderním vizualizérem: displaCy
  • Vizualizér entit displaCy zvýrazňuje pojmenované entity a jejich štítky
import spacy
from spacy import displacy

text = "Albert Einstein was genius."
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)

displacy.serve(doc, style="ent")

Výstup displaCy NER

Zpracování přirozeného jazyka s knihovnou spaCy

Pojďme procvičovat!

Zpracování přirozeného jazyka s knihovnou spaCy

Preparing Video For Download...