Instalasi dan Dasar spaCy

Pada lesson Instalasi dan Dasar spaCy akan membahas cara instalasi dan object pipeline dari spacy.

spaCy adalah open source library NLP. spaCy sangat efektif untuk menangani masalah NLP dengan cara yang efisien. spacy hanya akan mengiplementasikan 1 method paling efektif yang ada saat ini. Ini berarti kita tidak ada pilihan untuk menggunakan algoritma lain.

Instalasi

  • Buka command prompt dengan administrator previlege (Run as administrator).
  • Pindah direktori ke c:\>
  • Untuk instalasi pilih salah satu cara:
    • conda install -c conda-forge spacy
    • atau pip install -U spacy
  • Download model language library, dalam hal ini adalah en (english), pastikan memiliki administrator previllege. Gunakan perintah: python -m spacy download en

Model language library yang sudah disupport adalah English, German, France, Spanish, Portuguese, Italian, Dutch dan Greek. Bahasa Indonesia belum disupport, oleh karena itu, bahasa inggris akan digunakan dalam course ini.

Load Library dan Model Language Library

Untuk menggunakan spaCy, kita perlu load library spacy dan model language library kedalam program. Model language ini akan membuat proses NLP menjadi sangat cepat.

import spacy
nlp = spacy.load("en_core_web_sm")

doc = nlp(u'Microsoft is looking at buying U.K. startup for $2 million')

Pipeline Object spaCy

Ketika nlp(‘text’) dipanggil, ,spaCy akan melakukan tokenisasi terhadap text untuk menghasilkan object Doc. Kemudian, object Doc akan diproses lagi dengan beberapa tahap. Tahap default dari spaCy adalah tagger, a parser and an entity recognizer.

Kita bisa membuat sendiri tahapan tersebut, namun perlu diperhatikan ada beberapa tahapan yang tergantung terhadap komponen lainnya.

Contoh, tagger dan parser tidak saling tergantung, urutannya bisa diubah. Namun untuk lemmatizer memerlukan tagger, jadi lemmatizer harus dilakukan setelah tahap tagger dilakukan.

Spacy Pipeline Object

Berikut component dari spaCy pipeline object.

ProsesComponentMembuatDeskripsi
tokenizerTokenizerDocmemisahkan text menjadi tokens.
taggerTaggerDoc[i].tagMenentukan POS tags
parserDependencyParserDoc[i].head,
Doc[i].dep,
Doc[i].sents,
Doc[i].noun_chunks,
Menentukan dependency labels
nerEntityRecognizerDoc.ents,
Doc[i].ent_iob,
Doc[i].ent_type
Mendeteksi dan memberikan label pada labels
textcatTextCategorizerDoc.catsMenentukan document labels

Tokenization

Tokenization adalah proses yang pertama kali dilakukan oleh spaCy. Tokenization akan memisahkan text menjadi kumpulan token yang berisi kata dan tanda baca.

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp(u'Microsoft is looking at buying U.K. startup for $2 million')

for token in doc:
    print(token.text)
'Microsoft'
'is'
'looking'
'at'
'buying'
'U.K.'
'startup'
'for'
'$'
'2'
'million'

Tagger

Tagger adalah tahap spaCy menentukan Part of Speech. Part of speech adalah pengkategorian kata sesuai dengan fungsi sintaksisnya.

Contoh, dalam Bahasa Inggris, bagian utama dari pembicaraan adalah kata benda, kata ganti, kata sifat, determiner, kata kerja, kata keterangan, preposisi, kata sambung, dan kata seru.

Untuk list part of speech lengkap bisa lihat di https://spacy.io/api/annotation#pos-tagging

for token in doc:
    print(f"{token.text:{15}} {token.pos_:{8}}")
Microsoft       PROPN
is              VERB
looking         VERB
at              ADP
buying          VERB
U.K.            PROPN
startup         NOUN
for             ADP
$               SYM
2               NUM
million         NUM

Parser

Adalah tahap parsing sintaks dependency. spaCy akan menentukan label sintaks dependency dari masing-masing token. Untuk tabel syntac dependecies bisa lihat di https://spacy.io/api/annotation#dependency-parsing

for token in doc:
    print(f"{token.text:{15}} {token.dep_:{10}}")
Microsoft       nsubj
is              aux
looking         ROOT
at              prep
buying          pcomp
U.K.            compound
startup         dobj
for             prep
$               quantmod
2               compound
million         pobj

Dengan satu baris perintah, kita sudah

  • Tokenization, yaitu memisahkan text menjadi token untuk diproses lebih lanjut. Tokenization yang dilakukan juga pintar, karena bisa melihat U.K. adalah satu kesatuan.
  • Memberikan tagging, hingga kita bisa mengenali bahwa Microsoft sebagai Propernoun.
  • Serta melakukan parsing untuk menentukan syntac dependency.

Hal diatas bisa dilakukan karena spaCy memiliki model language library yang kita load pada awal program.

Attribute Lainnya

attributedeskripsicontoh
.textkata asli dari teksMicrosoft
.lemma_bentuk dasar dari katamicrosoft
.pos_part of speech: simplePROPN
.tag_part of speech: detailNNP/noun, proper singular
.shape_Bentuk dari kataXxxxx
.is_alphaboolean untuk menentukan alphacharacterTrue
.is_stopboolean untuk menentukan apakah kata bagian dari stop listFalse
# contoh lemma

print(doc[4].text)
# buying

print(doc[4].lemma_)
# buy


# contoh shape pada U.K.

print(doc[5].text+' : '+doc[5].shape_)
# U.K. : X.X.
Sharing is caring: