Taalkundige features in spaCy

Natural Language Processing met spaCy

Azadeh Mobasher

Principal Data Scientist

POS-tagging

  • Woorden grammaticaal indelen op basis van functie en context in een zin
POS Beschrijving Voorbeeld
VERB Werkwoord run, eat, ate, take
NOUN Zelfstandig naamwoord man, airplane, tree, flower
ADJ Bijvoeglijk naamwoord big, old, incompatible, conflicting
ADV Bijwoord very, down, there, tomorrow
CONJ Voegwoord and, or, but
Natural Language Processing met spaCy

POS-tagging met spaCy

 

  • POS-tagging bevestigt de betekenis van een woord
  • Sommige woorden, zoals watch, kunnen zowel zelfstandig naamwoord als werkwoord zijn
  • spaCy zet POS-tags in de feature pos_ van de nlp-pijplijn
  • spacy.explain() licht een POS-tag toe

POS Tagger-component

Natural Language Processing met spaCy

POS-tagging met 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')]
Natural Language Processing met spaCy

Named-entity recognition

  • Een entiteit is een woord of zinsdeel dat naar iets specifieks met een naam verwijst
  • Named-entity recognition (NER) classificeert entiteiten in vooraf gedefinieerde categorieën
Entiteitstype Beschrijving
PERSON Benoemde persoon of familie
ORG Bedrijven, instellingen, enz.
GPE Geo-politieke entiteit, landen, steden, enz.
LOC Niet-GPE-locaties, bergketens, enz.
DATE Absolute/relatieve data of perioden
TIME Tijd kleiner dan een dag
Natural Language Processing met spaCy

NER en spaCy

 

  • spaCy-modellen halen entiteiten op via de NER-pijplijncomponent
  • Entiteiten staan in de eigenschap doc.ents
  • spaCy geeft elke entiteit ook een label (.label_)

NER-component

Natural Language Processing met spaCy

NER en 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')]
Natural Language Processing met spaCy

NER en spaCy

  • Je kunt ook het entiteitstype per token in een Doc bekijken

 

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', ''), ('.', '')]
Natural Language Processing met spaCy

displaCy

 

  • spaCy heeft een moderne visualizer: displaCy
  • De displaCy-entiteitsviewer markeert entiteiten en hun labels
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")

displaCy NER-uitvoer

Natural Language Processing met spaCy

Laten we oefenen!

Natural Language Processing met spaCy

Preparing Video For Download...