spaCy: NLP Kelas Industri di Python
spaCy adalah pustaka open-source untuk pemrosesan bahasa alami (NLP) yang dirancang untuk penggunaan produksi. Jika large language model unggul dalam menghasilkan teks bebas, spaCy berfokus pada analisis teks yang cepat, deterministik, dan terstruktur: tokenisasi, penandaan kelas kata, dependency parsing, dan pengenalan entitas bernama. Tutorial ini membahas spaCy mulai dari instalasi hingga melatih model kustom, dengan satu contoh teks bisnis yang konsisten sepanjang pembahasan.
Apa Itu spaCy dan Posisinya
spaCy adalah pustaka Python yang mengubah teks mentah menjadi data linguistik terstruktur. Pustaka ini menyertakan model statistik terlatih untuk banyak bahasa dan menyediakan model objek yang rapi (Doc, Token, Span) untuk mengolah hasilnya. Pustaka ini ditulis dengan mempertimbangkan kinerja, sehingga mampu memproses teks dalam jumlah besar secara cepat di CPU.
spaCy vs. Large Language Model
LLM dan spaCy menyelesaikan masalah yang berbeda, dan dalam praktiknya keduanya sering digabungkan.
- Deterministik: spaCy menghasilkan keluaran yang sama untuk masukan yang sama setiap kali. Hal ini penting untuk pipeline yang memberi makan sistem hilir atau yang harus dapat diaudit.
- Kecepatan dan biaya: spaCy berjalan di CPU biasa dan memproses ribuan dokumen per detik untuk banyak tugas. Tidak ada biaya API per token.
- Struktur: spaCy mengembalikan anotasi bertipe pada level span (entitas, token, dependensi), bukan teks bebas yang harus diurai kembali.
- Privasi: teks tidak perlu keluar dari infrastruktur Anda.
Pola yang umum adalah menggunakan spaCy untuk ekstraksi dan perutean bervolume tinggi, lalu menyisakan LLM untuk sebagian kecil kasus yang benar-benar memerlukan penalaran terbuka. spaCy juga dapat mengintegrasikan prompt LLM sebagai komponen pipeline melalui paket spacy-llm bila Anda ingin keduanya dalam satu alur kerja.
Instalasi dan Mengunduh Model
Pasang spaCy dengan pip. Disarankan menggunakan virtual environment agar versi model tetap terkunci pada proyek Anda.
python -m venv .venv
source .venv/bin/activate # di Windows: .venv\Scripts\activate
pip install spacy
Model didistribusikan terpisah dari pustaka. Unduh model bahasa Inggris berukuran kecil untuk memulai:
python -m spacy download encorewebsm
Model bahasa Inggris mengikuti konvensi penamaan: en (bahasa), core (pipeline serbaguna), web (dilatih pada teks web), dan sufiks ukuran:
encorewebsm— kecil, cepat, tanpa word vector.encorewebmd— sedang, menyertakan word vector.encoreweblg— besar, lebih banyak vector.encorewebtrf— berbasis transformer, akurasi tertinggi, butuh komputasi lebih besar.
Anda dapat memeriksa apa yang terpasang dan memvalidasi kompatibilitasnya:
python -m spacy info
python -m spacy validate
Pipeline nlp dan Objek Inti
Memuat model memberi Anda objek nlp. Memanggilnya pada sebuah string akan menjalankan seluruh pipeline dan mengembalikan sebuah Doc.
import spacy
nlp = spacy.load("encorewebsm")
text = "Acme Corp acquired Globex Ltd for $4.5 billion in March 2023."
doc = nlp(text)
print(type(doc)) #
print(len(doc)) # jumlah token
print([token.text for token in doc])
Sebuah Doc adalah urutan objek Token. Potongan token yang berurutan adalah sebuah Span. Tiga objek inilah yang menjadi fondasi untuk segala hal lainnya.
# Token: satu kata, tanda baca, atau simbol
first = doc[0]
print(first.text, first.idx) # "Acme" 0
Span: potongan dari Doc
span = doc[0:2]
print(span.text) # "Acme Corp"
Kalimat juga merupakan Span
for sent in doc.sents:
print(sent.text)
Memeriksa Pipeline
Objek nlp memuat daftar komponen yang terurut. Anda dapat memeriksanya dan memodifikasinya.
print(nlp.pipenames)
['tok2vec', 'tagger', 'parser', 'attribute
ruler', 'lemmatizer', 'ner']