Cechy lingwistyczne w spaCy

Przetwarzanie języka naturalnego z użyciem spaCy

Azadeh Mobasher

Principal Data Scientist

Tagowanie POS

  • Kategoryzowanie słów gramatycznie na podstawie funkcji i kontekstu w zdaniu
POS Opis Przykład
VERB Czasownik run, eat, ate, take
NOUN Rzeczownik man, airplane, tree, flower
ADJ Przymiotnik big, old, incompatible, conflicting
ADV Przysłówek very, down, there, tomorrow
CONJ Spójnik and, or, but
Przetwarzanie języka naturalnego z użyciem spaCy

Tagowanie POS za pomocą spaCy

 

  • Tagowanie POS potwierdza znaczenie słowa
  • Niektóre słowa, jak watch, mogą być zarówno rzeczownikiem, jak i czasownikiem
  • spaCy zapisuje tagi POS w cesze pos_ potoku nlp
  • spacy.explain() wyjaśnia dany tag POS

Komponent taggera POS

Przetwarzanie języka naturalnego z użyciem spaCy

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

Rozpoznawanie nazwanych encji

  • Nazwana encja to słowo lub fraza odnoszące się do konkretnego, nazwanego bytu
  • Rozpoznawanie nazwanych encji (NER) klasyfikuje je do predefiniowanych kategorii
Typ encji Opis
PERSON Nazwana osoba lub rodzina
ORG Firmy, instytucje itp.
GPE Jednostka geopolityczna: kraje, miasta itp.
LOC Lokalizacje inne niż GPE, pasma górskie itp.
DATE Daty lub okresy bezwzględne lub względne
TIME Czas krótszy niż jeden dzień
Przetwarzanie języka naturalnego z użyciem spaCy

NER i spaCy

 

  • spaCy wyodrębnia nazwane encje za pomocą komponentu potoku NER
  • Nazwane encje są dostępne przez właściwość doc.ents
  • spaCy przypisuje każdej encji etykietę (.label_)

Komponent NER

Przetwarzanie języka naturalnego z użyciem spaCy

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

NER i spaCy

  • Typy encji każdego tokenu w kontenerze Doc są również dostępne

 

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

displaCy

 

  • spaCy jest wyposażone w nowoczesny wizualizator: displaCy
  • Wizualizator encji displaCy wyróżnia nazwane encje i ich etykiety
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")

Wynik NER displaCy

Przetwarzanie języka naturalnego z użyciem spaCy

Czas na ćwiczenia!

Przetwarzanie języka naturalnego z użyciem spaCy

Preparing Video For Download...