Caratteristiche linguistiche

Natural Language Processing con spaCy

Azadeh Mobasher

Principal Data Scientist

POS tagging

  • I tag POS dipendono dal contesto, dalle parole vicine e dai loro tag
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)])

Esempio di POS tagging

Natural Language Processing con spaCy

Qual è l'importanza dei POS?

 

  • Maggiore accuratezza per molti compiti di NLP

 

I will fish tomorrow.

I ate fish.

 

  • Caso d'uso in traduzione automatica

 

verb -> pescaré

noun -> pescado
Natural Language Processing con spaCy

Qual è l'importanza dei POS?

 

  • La disambiguazione del senso delle parole (WSD) è il problema di decidere con quale senso una parola è usata in una frase.
  • Stabilire il senso può essere cruciale nella traduzione automatica, ecc.

Esempio di WSD

Natural Language Processing con spaCy

Disambiguazione del senso delle parole

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 con spaCy

Dependency parsing

  • Esplora la sintassi della frase
  • Collegamenti tra due token
  • Risultato in un albero

Esempio di dependency parsing

Natural Language Processing con spaCy

Dependency parsing e spaCy

 

  • L'etichetta di dipendenza descrive il tipo di relazione sintattica tra due token

 

Dependency label Descrizione
nsubj Soggetto nominale
root Radice
det Determinante
dobj Oggetto diretto
aux Ausiliare
Natural Language Processing con spaCy

Dependency parsing e displaCy

  • displaCy può disegnare alberi di dipendenze
doc = nlp("We understand the differences.")

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

Esempio di parser delle dipendenze con displaCy

Natural Language Processing con spaCy

Dependency parsing e spaCy

  • Attributo .dep_ per accedere all'etichetta di dipendenza di un 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 con spaCy

Esercitiamoci!

Natural Language Processing con spaCy

Preparing Video For Download...