Caracteristici lingvistice în spaCy

Procesarea limbajului natural cu spaCy

Azadeh Mobasher

Principal Data Scientist

Etichetarea POS

  • Categorizarea cuvintelor din punct de vedere gramatical, pe baza funcției și contextului în propoziție
POS Descriere Exemplu
VERB Verb run, eat, ate, take
NOUN Substantiv man, airplane, tree, flower
ADJ Adjectiv big, old, incompatible, conflicting
ADV Adverb very, down, there, tomorrow
CONJ Conjuncție and, or, but
Procesarea limbajului natural cu spaCy

Etichetarea POS cu spaCy

 

  • Etichetarea POS confirmă sensul unui cuvânt
  • Unele cuvinte, precum watch, pot fi atât substantiv, cât și verb
  • spaCy stochează etichetele POS în caracteristica pos_ a pipeline-ului nlp
  • spacy.explain() explică o etichetă POS dată

Componenta POS Tagger

Procesarea limbajului natural cu spaCy

Etichetarea POS cu 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')]
Procesarea limbajului natural cu spaCy

Recunoașterea entităților denumite

  • O entitate denumită este un cuvânt sau o sintagmă care se referă la o entitate specifică cu un nume
  • Recunoașterea entităților denumite (NER) clasifică entitățile în categorii predefinite
Tip entitate Descriere
PERSON Persoană sau familie
ORG Companii, instituții etc.
GPE Entitate geopolitică: țări, orașe etc.
LOC Locații non-GPE, lanțuri muntoase etc.
DATE Date sau perioade absolute ori relative
TIME Interval de timp mai mic de o zi
Procesarea limbajului natural cu spaCy

NER și spaCy

 

  • Modelele spaCy extrag entități denumite prin componenta de pipeline NER
  • Entitățile denumite sunt disponibile prin proprietatea doc.ents
  • spaCy etichetează fiecare entitate cu un tip (.label_)

Componenta NER

Procesarea limbajului natural cu spaCy

NER și 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')]
Procesarea limbajului natural cu spaCy

NER și spaCy

  • Putem accesa tipul de entitate al fiecărui token dintr-un container 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', ''), ('.', '')]
Procesarea limbajului natural cu spaCy

displaCy

 

  • spaCy include un vizualizator modern: displaCy
  • Vizualizatorul de entități displaCy evidențiază entitățile denumite și etichetele lor
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")

Rezultat displaCy NER

Procesarea limbajului natural cu spaCy

Să exersăm!

Procesarea limbajului natural cu spaCy

Preparing Video For Download...