Penyiapan perangkat

Instalasi Python, spaCy, NLTK, scikit-learn, dan Gensim beserta uji coba pipeline pertama.

Daftar isi

Topik ini menyiapkan perangkat kerja untuk seluruh jalur NLP klasik, yaitu Python beserta spaCy, NLTK, scikit-learn, dan Gensim. Instalasi dilakukan melalui pip, model pertama spaCy diunduh secara terpisah, dan seluruh perangkat diuji dengan satu skrip yang menjalankan pipeline pertama. Setelah skrip tersebut berjalan dengan keluaran yang sesuai, lingkungan kerja siap digunakan untuk seluruh latihan pada jalur ini.

Lima perangkat yang dipasang#

Python menjadi fondasinya. Jalur ini menargetkan Python 3.10 atau yang lebih baru, sehingga periksa versinya terlebih dahulu sebelum memasang pustaka lainnya. Empat pustaka di atas Python membawa peran yang saling melengkapi dan masing-masing cukup dipasang satu kali untuk seluruh jalur.

  • spaCy menjalankan pipeline NLP siap pakai untuk production, mulai dari tokenisasi, pelabelan kelas kata, sampai pengenalan entitas bernama.
  • NLTK menyediakan korpus, tokenizer, dan alat-alat klasik yang cocok untuk membongkar cara kerja setiap teknik dari dasarnya.
  • scikit-learn menyediakan vectorizer, model klasifikasi, dan mesin evaluasi untuk pekerjaan klasifikasi teks.
  • Gensim menyediakan pelatihan embedding kata dan pemodelan topik pada korpus sendiri.

Pembagian peran ini mengikuti pembagian kerja antarkurikulum, yaitu spaCy untuk pipeline terpadu, NLTK untuk pembelajaran berbasis korpus, scikit-learn untuk mesin klasifikasi, dan Gensim untuk representasi vektor. Pada praktiknya, satu proyek umumnya membutuhkan lebih dari satu pustaka sekaligus, misalnya scikit-learn untuk model dan spaCy untuk praproses. Memasang keempatnya sejak awal menghindari jeda pemasangan di tengah latihan.

Instalasi melalui pip#

pip adalah pengelola package resmi Python yang mengunduh dan memasang paket dari repositori PyPI. Kedua perintah berikut membutuhkan koneksi jaringan, sehingga blok kodenya ditandai tidak-dijalankan dan tidak dibekali blok keluaran. Jalankan perintah pertama untuk memasang empat pustaka, kemudian perintah kedua untuk mengunduh model bahasa Inggris berukuran kecil milik spaCy.

bash
# tidak-dijalankan
# pasang empat pustaka utama dalam satu perintah
pip install spacy nltk scikit-learn gensim
# unduh model bahasa Inggris berukuran kecil milik spaCy
python -m spacy download en_core_web_sm

Perintah pip install memasang empat pustaka sekaligus beserta seluruh dependensinya. Perintah python -m spacy download en_core_web_sm diperlukan karena paket spaCy yang dipasang melalui pip tidak menyertakan model bahasa, sehingga model harus diunduh secara terpisah. Model en_core_web_sm adalah model bahasa Inggris berukuran kecil yang memuat tokenizer, tagger kelas kata, dan pengenal entitas bernama dalam satu pipeline.

Instalasi sebaiknya dilakukan di dalam lingkungan virtual (virtual environment), misalnya yang dibuat dengan perintah python3 -m venv .venv. Lingkungan virtual mengisolasi versi pustaka antarproyek, sehingga pembaruan di satu proyek tidak merusak proyek lainnya. Aktifkan lingkungannya sebelum menjalankan pip agar paket terpasang di lokasi yang terisolasi.

Uji coba pipeline pertama#

Skrip berikut menguji seluruh perangkat dalam satu langkah. Bagian pertama keluarannya mencetak versi setiap perangkat, sedangkan bagian akhirnya menjalankan pipeline pertama spaCy pada satu kalimat. Simpan berkasnya sebagai uji-perangkat.py, jalankan dengan perintah python3 uji-perangkat.py, lalu bandingkan keluarannya dengan blok Keluaran di bawahnya. Perintah pemanggilannya hanya satu baris, sehingga pengujian dapat diulang kapan saja setelah pustaka diperbarui.

Kalimat ujinya berbahasa Inggris karena model en_core_web_sm dilatih pada teks bahasa Inggris. Kalimat tersebut memuat satu nama orang, satu penanda waktu, dan satu bilangan, sehingga tiga jenis keluaran pipeline dapat diamati sekaligus. Seluruh pemanggilan di dalam skrip berjalan tanpa jaringan karena model sudah tersimpan lokal setelah diunduh. Nama berkasnya bebas ditentukan, tetapi nama uji-perangkat.py memudahkan penemuan kembali.

Di balik pemanggilan nlp("...") yang singkat, spaCy menjalankan beberapa komponen secara berurutan. Tokenizer memotong kalimat menjadi token, tagger memberi label kelas kata pada setiap token, dan pengenal entitas bernama mengelompokkan token tertentu menjadi entitas. Urutan ini memetakan alur dasar NLP klasik, yaitu teks disiapkan sebelum dilabeli.

python uji-perangkat.py
import sys

import gensim
import nltk
import sklearn
import spacy

print("== Versi pustaka ==")
print("Python", sys.version.split()[0])
print("spaCy", spacy.__version__)
print("NLTK", nltk.__version__)
print("scikit-learn", sklearn.__version__)
print("Gensim", gensim.__version__)

nlp = spacy.load("en_core_web_sm")
doc = nlp("Ali visited the city library on Monday and borrowed ten books.")

print("== Token dan kelas kata ==")
for token in doc:
    print(token.text, token.pos_)

print("== Entitas bernama ==")
for ent in doc.ents:
    print(ent.text, ent.label_)
text Keluaran
== Versi pustaka ==
Python 3.12.16
spaCy 3.8.11
NLTK 3.9.2
scikit-learn 1.5.2
Gensim 4.4.0
== Token dan kelas kata ==
Ali PROPN
visited VERB
the DET
city NOUN
library NOUN
on ADP
Monday PROPN
and CCONJ
borrowed VERB
ten NUM
books NOUN
. PUNCT
== Entitas bernama ==
Ali PERSON
Monday DATE
ten CARDINAL

Membaca keluaran pipeline#

Keluaran skrip terbagi menjadi tiga kelompok. Kelompok pertama menegaskan versi Python dan empat pustaka, dan kelompok ini menjadi cara tercepat menemukan ketidakcocokan versi ketika sebuah perintah gagal. Kelompok kedua memuat token beserta kelas katanya, sedangkan kelompok ketiga memuat entitas bernama yang ditemukan di dalam kalimat.

Baris-baris import di awal skrip memuat pustaka yang dibutuhkan. Pemanggilan spacy.load("en_core_web_sm") memuat model ke dalam variabel nlp, kemudian pemanggilan nlp("Ali visited...") menjalankan seluruh komponen pipeline di atas kalimat dan mengembalikan objek Doc. Perulangan pertama mencetak token.text dan token.pos_, yaitu teks token beserta label kelas katanya, sedangkan perulangan kedua mencetak ent.text dan ent.label_ untuk setiap entitas.

Baca dua kelompok terakhir sebagai berikut. Token Ali berlabel PROPN, singkatan proper noun untuk kata benda nama, sedangkan token visited berlabel VERB untuk kata kerja. Entitas Ali berlabel PERSON, Monday berlabel DATE, dan ten berlabel CARDINAL, yaitu penanda orang, tanggal, dan bilangan. Label lain yang lazim dijumpai antara lain NOUN untuk kata benda, ADJ untuk kata sifat, dan GPE untuk negara atau kota. Lima baris versi, dua belas baris token, dan tiga baris entitas itulah bukti bahwa seluruh perangkat bekerja.

Angka versi pada setiap mesin tidak harus sama persis dengan blok Keluaran, karena versi pustaka mengikuti tanggal instalasi. Yang menjadi patokan adalah keempat pustaka dapat dimuat tanpa error dan pipeline spaCy menemukan tiga entitas pada kalimat uji. Apabila keduanya terpenuhi, perangkat dapat dinyatakan siap untuk seluruh latihan pada jalur ini.

Berkas uji ini juga berguna untuk pemeriksaan ulang. Jalankan kembali berkasnya setiap kali pustaka baru dipasang atau diperbarui, karena perubahan versi dapat mengubah perilaku pipeline. Apabila keluaran pada latihan lain berbeda dari yang diharapkan, catatan versi di dalam keluaran skrip ini menjadi petunjuk pertama yang ditelusuri.

Kesalahan umum#

Tiga kesalahan berikut paling sering muncul saat penyiapan perangkat. Semuanya terdeteksi cepat karena pesan errornya jelas terbaca di layar. Masing-masing disertai penyebab dan perbaikannya.

  • Error OSError: [E050] saat memuat model. Pesan ini muncul ketika spacy.load() tidak menemukan model en_core_web_sm. Penyebabnya adalah unduhan model yang dilewati, karena paket spaCy yang dipasang melalui pip memang tidak menyertakan model. Perbaikannya, jalankan python -m spacy download en_core_web_sm lalu jalankan ulang skripnya.
  • Instalasi pip gagal di awal. Pesan tentang versi Python biasanya muncul ketika Python yang terpasang lebih tua dari prasyarat pustaka. Periksa versinya dengan perintah python3 --version dan gunakan Python 3.10 atau yang lebih baru sesuai lingkungan jalur ini. Apabila pengunduhan paket terputus karena jaringan, ulangi perintah pip setelah koneksi pulih.
  • Pustaka bentrok antarproyek. Pustaka yang dipasang langsung ke Python sistem saling menimpa antarproyek, sehingga proyek lama dapat rusak setelah proyek baru diperbarui. Perbaikannya, pasang pustaka di dalam lingkungan virtual yang terpisah untuk setiap proyek. Buat lingkungannya sekali di awal proyek, lalu pasang seluruh pustaka jalur ini di dalamnya.

Ringkasan#

  • Instalasi berjalan dua langkah, yaitu pip install spacy nltk scikit-learn gensim untuk pustaka dan python -m spacy download en_core_web_sm untuk model bahasa.
  • Lingkungan virtual mengisolasi versi pustaka antarproyek dan menjadi tempat instalasi yang dianjurkan.
  • Skrip uji-perangkat.py mencetak versi lima perangkat lalu menjalankan pipeline pertama spaCy, yaitu tokenisasi, pelabelan kelas kata, dan pengenalan entitas bernama.
  • Keluaran Ali PERSON, Monday DATE, dan ten CARDINAL menjadi penanda bahwa pipeline berjalan dengan benar.

Referensi#