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.

Berikut component dari spaCy pipeline object.
| Proses | Component | Membuat | Deskripsi |
| tokenizer | Tokenizer | Doc | memisahkan text menjadi tokens. |
| tagger | Tagger | Doc[i].tag | Menentukan POS tags |
| parser | DependencyParser | Doc[i].head, Doc[i].dep, Doc[i].sents, Doc[i].noun_chunks, | Menentukan dependency labels |
| ner | EntityRecognizer | Doc.ents, Doc[i].ent_iob, Doc[i].ent_type | Mendeteksi dan memberikan label pada labels |
| textcat | TextCategorizer | Doc.cats | Menentukan 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
| attribute | deskripsi | contoh |
| .text | kata asli dari teks | Microsoft |
| .lemma_ | bentuk dasar dari kata | microsoft |
| .pos_ | part of speech: simple | PROPN |
| .tag_ | part of speech: detail | NNP/noun, proper singular |
| .shape_ | Bentuk dari kata | Xxxxx |
| .is_alpha | boolean untuk menentukan alphacharacter | True |
| .is_stop | boolean untuk menentukan apakah kata bagian dari stop list | False |
# 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.