Fitur linguistik di spaCy

Pemrosesan Bahasa Alami dengan spaCy

Azadeh Mobasher

Principal Data Scientist

Penandaan POS

  • Mengategorikan kata secara gramatikal berdasarkan fungsi dan konteks dalam kalimat
POS Deskripsi Contoh
VERB Verba run, eat, ate, take
NOUN Nomina man, airplane, tree, flower
ADJ Adjektiva big, old, incompatible, conflicting
ADV Adverbia very, down, there, tomorrow
CONJ Konjungsi and, or, but
Pemrosesan Bahasa Alami dengan spaCy

Penandaan POS dengan spaCy

 

  • Penandaan POS membantu memastikan makna kata
  • Beberapa kata seperti watch bisa menjadi nomina atau verba
  • spaCy menyimpan tag POS di fitur pos_ pada pipeline nlp
  • spacy.explain() menjelaskan tag POS tertentu

Komponen POS Tagger

Pemrosesan Bahasa Alami dengan spaCy

Penandaan POS dengan 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')]
Pemrosesan Bahasa Alami dengan spaCy

Pengenalan entitas bernama

  • Entitas bernama adalah kata/frasa yang merujuk pada entitas spesifik dengan nama
  • Named-entity recognition (NER) mengklasifikasikan entitas bernama ke kategori yang telah ditentukan
Jenis entitas Deskripsi
PERSON Orang bernama atau keluarga
ORG Perusahaan, institusi, dll.
GPE Entitas geo-politik: negara, kota, dll.
LOC Lokasi non-GPE, pegunungan, dll.
DATE Tanggal/periode absolut atau relatif
TIME Waktu kurang dari satu hari
Pemrosesan Bahasa Alami dengan spaCy

NER dan spaCy

 

  • Model spaCy mengekstrak entitas bernama dengan komponen pipeline NER
  • Entitas bernama tersedia lewat properti doc.ents
  • spaCy juga memberi label entitas (.label_)

Komponen NER

Pemrosesan Bahasa Alami dengan spaCy

NER dan 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')]
Pemrosesan Bahasa Alami dengan spaCy

NER dan spaCy

  • Kita juga dapat mengakses tipe entitas tiap token dalam kontainer Doc

 

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', ''), ('.', '')]
Pemrosesan Bahasa Alami dengan spaCy

displaCy

 

  • spaCy dilengkapi visualizer modern: displaCy
  • Visualizer entitas displaCy menyorot entitas bernama dan labelnya
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")

Keluaran NER displaCy

Pemrosesan Bahasa Alami dengan spaCy

Ayo berlatih!

Pemrosesan Bahasa Alami dengan spaCy

Preparing Video For Download...