Cechy językowe

Przetwarzanie języka naturalnego z użyciem spaCy

Azadeh Mobasher

Principal Data Scientist

Tagowanie POS

  • Tagi POS zależą od kontekstu, sąsiednich słów i ich tagów
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)])

Przykład tagowania POS

Przetwarzanie języka naturalnego z użyciem spaCy

Jakie jest znaczenie POS?

 

  • Lepsza dokładność w wielu zadaniach NLP

 

I will fish tomorrow.

I ate fish.

 

  • Przykład zastosowania w systemach tłumaczenia

 

verb -> pescaré

noun -> pescado
Przetwarzanie języka naturalnego z użyciem spaCy

Jakie jest znaczenie POS?

 

  • Dezambiguacja znaczeń słów (WSD) polega na określeniu, w jakim znaczeniu słowo jest użyte w zdaniu.
  • Ustalenie znaczenia słowa jest kluczowe m.in. w tłumaczeniu maszynowym.

Przykład WSD

Przetwarzanie języka naturalnego z użyciem spaCy

Dezambiguacja znaczeń słów

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')]
Przetwarzanie języka naturalnego z użyciem spaCy

Parsowanie zależności

  • Analizuje składnię zdania
  • Łączy dwa tokeny
  • Wynik to drzewo

Przykład parsowania zależności

Przetwarzanie języka naturalnego z użyciem spaCy

Parsowanie zależności i spaCy

 

  • Etykieta zależności opisuje typ relacji składniowej między dwoma tokenami

 

Etykieta zależności Opis
nsubj Podmiot nominalny
root Korzeń
det Określnik
dobj Dopełnienie bliższe
aux Czasownik posiłkowy
Przetwarzanie języka naturalnego z użyciem spaCy

Parsowanie zależności i displaCy

  • displaCy może rysować drzewa zależności
doc = nlp("We understand the differences.")

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

Przykład parsera zależności w displaCy

Przetwarzanie języka naturalnego z użyciem spaCy

Parsowanie zależności i spaCy

  • Atrybut .dep_ umożliwia dostęp do etykiety zależności tokenu

 

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')]
Przetwarzanie języka naturalnego z użyciem spaCy

Czas na ćwiczenia!

Przetwarzanie języka naturalnego z użyciem spaCy

Preparing Video For Download...