Taalkundige kenmerken

Natural Language Processing met spaCy

Azadeh Mobasher

Principal Data Scientist

POS-tagging

  • POS-tags hangen af van de context: omliggende woorden en hun tags
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)])

Voorbeeld van POS-tagging

Natural Language Processing met spaCy

Waarom is POS belangrijk?

 

  • Betere nauwkeurigheid voor veel NLP-taken

 

I will fish tomorrow.

I ate fish.

 

  • Use case: vertaalsysteem

 

verb -> pescaré

noun -> pescado
Natural Language Processing met spaCy

Waarom is POS belangrijk?

 

  • Word-sense disambiguation (WSD) bepaalt in welke betekenis een woord in een zin wordt gebruikt.
  • De juiste betekenis is cruciaal voor o.a. machinevertaling.

WSD-voorbeeld

Natural Language Processing met spaCy

Woordbetekenis-ontdubbeling (WSD)

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

Dependency parsing

  • Verkent de zinsstructuur
  • Koppelt twee tokens
  • Levert een boom op

Voorbeeld van dependency parsing

Natural Language Processing met spaCy

Dependency parsing en spaCy

 

  • Het dependency label beschrijft het type syntactische relatie tussen twee tokens

 

Dependency label Beschrijving
nsubj Nominaal subject
root Root
det Determiner
dobj Lijdend voorwerp
aux Hulpwerkwoord
Natural Language Processing met spaCy

Dependency parsing en displaCy

  • displaCy kan dependency-bomen tekenen
doc = nlp("We understand the differences.")

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

Voorbeeld van dependency parser met displaCy

Natural Language Processing met spaCy

Dependency parsing en spaCy

  • Gebruik de attribuut .dep_ voor het dependency label van een token

 

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

Laten we oefenen!

Natural Language Processing met spaCy

Preparing Video For Download...