Språkliga särdrag i spaCy

Naturlig språkbehandling med spaCy

Azadeh Mobasher

Principal Data Scientist

POS-taggning

  • Kategoriserar ord grammatiskt utifrån funktion och kontext i en mening
POS Beskrivning Exempel
VERB Verb run, eat, ate, take
NOUN Substantiv man, airplane, tree, flower
ADJ Adjektiv big, old, incompatible, conflicting
ADV Adverb very, down, there, tomorrow
CONJ Konjunktion and, or, but
Naturlig språkbehandling med spaCy

POS-taggning med spaCy

 

  • POS-taggning bekräftar ett ords betydelse
  • Vissa ord, som watch, kan vara både substantiv och verb
  • spaCy sparar POS-taggar i särdragsegenskapen pos_ i nlp-pipelinen
  • spacy.explain() förklarar en given POS-tagg

POS-taggningskomponent

Naturlig språkbehandling med spaCy

POS-taggning med 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')]
Naturlig språkbehandling med spaCy

Igenkänning av namngivna entiteter

  • En namngiven entitet är ett ord eller en fras som refererar till en specifik namngiven företeelse
  • Igenkänning av namngivna entiteter (NER) klassificerar dem i fördefinierade kategorier
Entitetstyp Beskrivning
PERSON Namngiven person eller familj
ORG Företag, institutioner m.m.
GPE Geopolitisk entitet – länder, städer m.m.
LOC Icke-GPE-platser, bergskedjor m.m.
DATE Absoluta eller relativa datum eller perioder
TIME Tidsangivelse kortare än ett dygn
Naturlig språkbehandling med spaCy

NER och spaCy

 

  • spaCy-modeller extraherar namngivna entiteter via pipeline-komponenten NER
  • Namngivna entiteter är tillgängliga via egenskapen doc.ents
  • spaCy taggar även varje entitet med dess entitetsetikett (.label_)

NER-komponent

Naturlig språkbehandling med spaCy

NER och 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')]
Naturlig språkbehandling med spaCy

NER och spaCy

  • Det går även att komma åt entitetstypen för varje token i en Doc-behållare

 

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', ''), ('.', '')]
Naturlig språkbehandling med spaCy

displaCy

 

  • spaCy har ett modernt visualiseringsverktyg: displaCy
  • Entitetsvisualiseraren i displaCy markerar namngivna entiteter och deras etiketter
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-utdata

Naturlig språkbehandling med spaCy

Nu kör vi en övning!

Naturlig språkbehandling med spaCy

Preparing Video For Download...