spaCy lemmatization menjadi pilihan dibandingkan dengan stemming. Kita tidak akan membahas stemming karena tidak digunakan dalam spaCy. Stemming umum digunakan dalam library NLTK.
Berbeda dengan stemming, lemmatization bukan sekedar pengurangan kata, namun mempertimbangkan kosakata bahasa untuk menerapkan analisis morfologis pada kata-kata.
Lemma ‘was’ adalah ‘be’ dan lemma dari ‘mice’ adalah ‘mouse’. Lebih lanjut, lemma ‘meeting’ mungkin ‘meet’ atau ‘meeting’ tergantung pada penggunaannya dalam kalimat.
Contoh Lemmatization
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(u"I saw eighteen mice today!")
for token in doc:
print(f'{token.text:{12}} {token.pos_:{6}} {token.lemma_}')
I PRON -PRON-
saw VERB see
eighteen NUM eighteen
mice NOUN mouse
today NOUN today
! PUNCT !
spaCy melakukan proses lemmatization dengan baik. Dapat kita lihat dari output diatas,
- saw menjadi see
- eighteen tetap eighteen, spaCy dapat ‘melihat’ sebagai angka
- mice menjadi mouse
doc1 = nlp(u"I am meeting him tomorrow at the meeting.")
for token in doc1:
print(f'{token.text:{12}} {token.pos_:{6}} {token.lemma_}')
I PRON -PRON-
am VERB be
meeting VERB meet
him PRON -PRON-
tomorrow NOUN tomorrow
at ADP at
the DET the
meeting NOUN meeting
. PUNCT .
Pada contoh diatas, spaCy mampu membedakan konteks kalimat.
- meeting menjadi meet.
- meeting tetap meeting (karena konteks pada kalimat adalah pertemuan, bukan betemu). Hal ini ditentukan berdasarkan Part of speech, dimana meeting disini adalah NOUN.