Språkliga särdrag

Naturlig språkbehandling med spaCy

Azadeh Mobasher

Principal Data Scientist

POS-taggning

  • POS-taggar beror på kontexten, omgivande ord och deras taggar
import spacy
nlp = spacy.load("en_core_web_sm")
text = "My cat will fish for a fish tomorrrow in a fishy way."
print([(token.text, token.pos_, spacy.explain(token.pos_)) 
        for token in nlp(text)])

Exempel på POS-taggning

Naturlig språkbehandling med spaCy

Varför är POS viktigt?

 

  • Bättre precision i många NLP-uppgifter

 

I will fish tomorrow.

I ate fish.

 

  • Användningsfall för översättningssystem

 

verb -> pescaré

noun -> pescado
Naturlig språkbehandling med spaCy

Varför är POS viktigt?

 

  • Ordbetydelsedisambiguering (WSD) handlar om att avgöra i vilken betydelse ett ord används i en mening.
  • Att fastställa ordets betydelse kan vara avgörande vid maskinöversättning m.m.

Exempel på WSD

Naturlig språkbehandling med spaCy

Ordbetydelsedisambiguering

import spacy
nlp = spacy.load("en_core_web_sm")

verb_text = "I will fish tomorrow."
noun_text = "I ate fish."


print([(token.text, token.pos_) for token in nlp(verb_text) if "fish" in token.text], "\n") print([(token.text, token.pos_) for token in nlp(noun_text) if "fish" in token.text])
[('fish', 'VERB', 'verb')] 
[('fish', 'NOUN', 'noun')]
Naturlig språkbehandling med spaCy

Beroendeparsning

  • Utforskar meningens syntax
  • Länkar mellan två token
  • Resulterar i ett träd

Exempel på beroendeparsning

Naturlig språkbehandling med spaCy

Beroendeparsning och spaCy

 

  • Beroendelabel beskriver typen av syntaktisk relation mellan två token

 

Beroendelabel Beskrivning
nsubj Nominalt subjekt
root Rot
det Determinator
dobj Direkt objekt
aux Hjälpverb
Naturlig språkbehandling med spaCy

Beroendeparsning och displaCy

  • displaCy kan rita beroendeträd
doc = nlp("We understand the differences.")

spacy.displacy.serve(doc, style="dep")

Exempel på beroendeparsning med displaCy

Naturlig språkbehandling med spaCy

Beroendeparsning och spaCy

  • Attributet .dep_ ger åtkomst till ett tokens beroendelabel

 

doc = nlp("We understand the differences.")
print([(token.text, token.dep_, spacy.explain(token.dep_)) for token in doc])
[('We', 'nsubj', 'nominal subject'), ('understand', 'ROOT', 'root'),
('the', 'det', 'determiner'), ('differences', 'dobj', 'direct object'),
('.', 'punct', 'punctuation')]
Naturlig språkbehandling med spaCy

Nu kör vi en övning!

Naturlig språkbehandling med spaCy

Preparing Video For Download...