NLP (Natural Language
Processing)
Pendahuluan
Hai stupenss selamat! datang di dunia Natural Language Processing (NLP), sebuah bidang yang menghubungkan antara bahasa manusia dan komputer. Dalam era digital yang semakin maju, kemampuan untuk memahami, memproses, dan berinteraksi dengan bahasa manusia menjadi semakin penting.
Materi ini akan membawa Anda mempelajari konsep-konsep dasar dalam NLP dan bagaimana teknologi NLP dapat digunakan untuk memahami dan memanfaatkan data bahasa manusia. kita akan belajar konsep dasar NLP seperti tokenisasi, stemming, dan klasifikasi teks hingga tahap implementasi teknik teknik pada NLP.
Apa itu NLP
Jika kamu pernah menggunakan perintah suara menggunakan aplikasi seperti Siri atau Google Assistant, kamu bisa bertanya dengan kata-kata biasa, seperti "Cuaca hari ini bagaimana?" atau "Bisakah kamu menemukan restoran terdekat?". Kemudian, komputer menggunakan teknologi NLP untuk menganalisis kata-kata yang kamu ucapkan, memahami maksudmu, dan memberikan jawaban atau informasi yang relevan.
Tapi, NLP itu lebih dari sekadar memahami kata-kata. Ia juga melibatkan pemrosesan dan analisis teks dalam bahasa manusia. Misalnya, kamu mungkin ingin mengklasifikasikan ulasan pengguna tentang sebuah produk menjadi positif atau negatif. Dengan menggunakan NLP, kamu dapat mengembangkan algoritma atau model yang dapat mempelajari pola-pola dalam teks dan mengidentifikasi apakah suatu ulasan itu positif atau negatif.
Jadi, kesimpulannya, NLP adalah teknologi yang memungkinkan komputer untuk memahami bahasa manusia dan berinteraksi dengannya. Dengan NLP, kamu dapat mengembangkan aplikasi seperti asisten suara, terjemahan otomatis, analisis teks, dan banyak lagi. Semakin maju teknologi NLP, semakin dekat kita dengan menciptakan sistem yang bisa berkomunikasi dengan kita menggunakan bahasa manusia secara alami.
NLP pipeline
Serangkaian langkah atau proses yang diterapkan pada teks untuk mengolahnya secara berurutan. Pipeline ini terdiri dari beberapa tahap yang dirancang untuk mencapai tujuan tertentu dalam pemrosesan bahasa alami. Berikut ini adalah contoh umum dari NLP pipeline:
1. Pra-pemrosesan (Preprocessing):
Tokenisasi: Memisahkan teks menjadi unit-unit yang lebih kecil seperti kata kata atau frasa.
Case Folding: Mengubah huruf menjadi huruf kecil atau huruf besar.
Pembersihan: Menghapus karakter-karakter yang tidak relevan seperti tanda baca, karakter khusus, dan URL.
Stopword Removal: Menghapus kata-kata umum yang tidak memberikan banyak informasi.
Lematisasi atau Stemming: Mengubah kata-kata menjadi bentuk dasar (lemma) atau memotong akhiran kata.
2. Analisis Sintaksis (Syntactic Analysis):
POS Tagging: Memberikan label atau klasifikasi pada setiap kata dalam teks berdasarkan jenis atau peran gramatikalnya.
Parsing: Menganalisis struktur sintaksis dalam teks untuk memahami hubungan antara kata-kata.
3. Ekstraksi Informasi (Information Extraction):
Named Entity Recognition (NER): Mengidentifikasi dan mengekstraksi entitas bernama seperti nama orang, tempat, tanggal, organisasi, dan lainnya dalam teks.
Relasi Ekstraksi: Mencari dan mengekstraksi hubungan atau relasi antara entitas dalam teks.
4. Analisis Semantik (Semantic Analysis):
Word Sense Disambiguation (WSD): Menentukan makna yang tepat dari kata yang ambigu dalam konteks tertentu.
Analisis Sentimen: Menentukan sentimen atau sikap emosional dalam teks, apakah positif, negatif, atau netral.
Klasifikasi Teks: Mengklasifikasikan teks ke dalam kategori atau label yang sesuai.
5. Pembelajaran Mesin (Machine Learning):
Pembuatan Model: Melatih model NLP menggunakan algoritma pembelajaran mesin untuk tugas-tugas seperti klasifikasi, pengenalan entitas, dan penerjemahan mesin.
Bidang bidang NLP
1. Pemahaman Bahasa Alami (Natural Language Understanding): Memahami dan menganalisis teks untuk mengidentifikasi entitas, niat, dan sentimen.
2. Penerjemahan Mesin (Machine Translation): Menerjemahkan teks dari satu bahasa ke bahasa lain secara otomatis.
3. Pencarian Informasi (Information Retrieval): Mencari dan mengambil informasi yang relevan dari teks atau dokumen.
4. Analisis Sentimen (Sentiment Analysis): Mengidentifikasi sentimen atau sikap emosional dalam teks, seperti positif, negatif, atau netral.
5. Analisis Opini dan Ulasan (Opinion and Review Analysis): Menganalisis ulasan pengguna atau pendapat publik tentang suatu produk, layanan, atau topik tertentu.
6. Klasifikasi Teks (Text Classification): Mengklasifikasikan teks ke dalam kategori atau label yang sesuai berdasarkan kontennya.
7. Ekstraksi Informasi (Information Extraction): Mengidentifikasi dan mengekstraksi informasi tertentu, seperti entitas bernama, tanggal, atau fakta penting dari teks.
8. Pemrosesan Bahasa Alami dalam Chatbot dan Asisten Virtual: Membangun sistem interaktif yang dapat berkomunikasi dengan pengguna melalui teks.
9. Pengenalan Suara dan Transkripsi (Speech Recognition and Transcription): Mengubah ucapan menjadi teks tertulis.
10. Generasi Bahasa Alami (Natural Language Generation): Menghasilkan teks yang alami dan manusiawi, seperti ringkasan atau narasi berdasarkan data atau informasi yang ada.
Part of Speech
Part of Speech (POS) adalah komponen penting dalam pemrosesan bahasa alami (NLP) yang digunakan untuk mengidentifikasi peran gramatikal kata-kata dalam sebuah kalimat. Setiap kata dalam bahasa memiliki kategori atau jenis tertentu yang menunjukkan perannya dalam kalimat.
Dalam POS tagging, setiap kata akan diberi label berdasarkan jenis kata tersebut. Berikut beberapa label dan contohnya :
POS Tagging |
Keterangan |
Contoh Kata |
Noun |
Kata benda |
cat, book |
Verb |
Kata kerja |
run, eat |
Adjective |
Kata sifat |
beautiful, tall |
Adverb |
Kata keterangan |
quickly, slowly |
Preposition |
Kata depan |
in, on |
Conjunction |
Konjungsi |
and, but |
Pronoun |
Kata ganti |
I, you, he |
POS Tagging adalah proses memberikan label kategori pada kata-kata dalam sebuah kalimat berdasarkan peran gramatikalnya. Beberapa jenis POS yang umum digunakan meliputi:
1. Noun: Merupakan kata benda yang mengacu pada orang, tempat, benda, atau konsep.
Contoh: cat (kucing), book (buku)
2. Verb: Merupakan kata kerja yang menunjukkan tindakan, keadaan, atau kejadian.
Contoh: run (lari), eat (makan)
3. Adjective: Merupakan kata sifat yang memberikan deskripsi atau klasifikasi pada kata benda atau kata ganti.
Contoh: beautiful (cantik), tall (tinggi)
4. Adverb: Merupakan kata keterangan yang memberikan informasi tambahan tentang kata kerja, kata sifat, atau kata keterangan lainnya.
Contoh: quickly (cepat), slowly (lambat)
5. Preposition: Merupakan kata depan yang menunjukkan hubungan antara kata kata dalam kalimat.
Contoh: in (di dalam), on (di atas)
6. Conjunction: Merupakan konjungsi yang menghubungkan kata-kata, frasa, atau klausa dalam kalimat.
Contoh: and (dan), but (tapi)
7. Pronoun: Merupakan kata ganti yang digunakan untuk menggantikan kata benda atau orang dalam kalimat.
Contoh: I (saya), you (kamu), he (dia)
Mengapa ini penting? Pengenalan POS membantu dalam memahami struktur kalimat, menyediakan informasi gramatikal, dan memfasilitasi pemahaman makna yang lebih baik. Dalam pemrosesan bahasa, pemodelan POS sangat berguna untuk tugas seperti parsing sintaksis, analisis sentimen, penerjemahan mesin, dan banyak lagi. Contoh sederhana penggunaan POS adalah ketika mengidentifikasi kata kerja dalam sebuah kalimat. Dengan menandai kata-kata yang menjadi kata kerja, kita dapat memahami peran dan tindakan yang diwakili oleh kata tersebut.
Jadi, kesimpulannya, POS pada NLP adalah proses pemberian label atau klasifikasi pada kata-kata dalam kalimat berdasarkan jenis atau peran gramatikalnya. Hal ini membantu dalam pemahaman dan analisis bahasa manusia oleh komputer.
NLTK
NLTK (Natural Language Toolkit) adalah sebuah perpustakaan (library) populer dalam bahasa pemrograman Python yang dikembangkan untuk mendukung penelitian dan pengembangan dalam bidang Pemrosesan Bahasa Alami (Natural Language Processing - NLP). NLTK menyediakan beragam alat dan sumber daya yang mempermudah pengolahan, analisis, dan pemodelan teks.
Berikut adalah beberapa fitur utama dan komponen NLTK:
1. Tokenisasi: NLTK menyediakan alat untuk membagi teks menjadi unit-unit terpisah, seperti kata atau kalimat. Tokenisasi penting dalam NLP karena menjadi langkah awal dalam pemrosesan teks.
2. POS Tagging: NLTK mendukung POS tagging dengan menyediakan model dan algoritma yang memungkinkan pengguna untuk memberi label kata-kata dalam teks sesuai dengan jenis atau peran gramatikalnya.
3. Stemming dan Lemmatization: NLTK menyediakan alat untuk melakukan stemming (memotong akhiran kata) dan lemmatization (mengubah kata ke bentuk dasarnya) guna membantu dalam normalisasi kata-kata dalam teks.
4. Klasifikasi Teks: NLTK menyediakan algoritma dan metode untuk melakukan klasifikasi teks, seperti Naive Bayes, Decision Trees, dan Maximum Entropy, yang dapat digunakan untuk mengklasifikasikan teks ke dalam kategori atau label yang diinginkan.
5. Corpus dan Sumber Daya Teks: NLTK menyediakan berbagai korpus dan sumber daya teks yang dapat digunakan untuk penelitian dan pengembangan, termasuk korpus teks seperti Gutenberg, Brown, dan Reuters, serta kamus dan koleksi kata-kata.
NLTK menjadi pilihan yang populer di kalangan peneliti, pengembang, dan praktisi NLP karena menyediakan beragam alat yang kuat dan fleksibel, serta memiliki dokumentasi yang lengkap dan komunitas yang aktif. Dengan menggunakan NLTK, pengguna dapat dengan mudah mengimplementasikan berbagai teknik dan algoritma NLP dalam aplikasi mereka.
Instalasi NLTK
Padakali ini kita akan menggunakan NLTK sebagai library untuk mengimplementasikan teknik teknik NLTK, karena NLTK ini dibuat pada python, maka kita akan menginstalnya dengan perintah pip
1. Sebelum melakukan instalasi NLTK kita buat virtual environment terlebih dahulu, dengan perintah :
D:\direktorimu>python -m venv <env_mu> |
2. Setelah membuat virtual environment jangan lupa untuk mengaktifkannya dengan cara
D:\direktorimu><env_mu>\Scripts\activate |
3. Setelah mengaktifkan virtual environment selanjutnya kamu install library NLTK kedalam library kamu, kita juga akan menginstall jupyter notebook untuk running program.
(<env_mu>)D:\direktorimu>pip
install -u nltk |
4. Setelah berhasil menginstall NLTK dan Jupyter Notebook selanjutnya kita akan coba memanggil library NLTK menggunakan cmd.
Menjalankan nltk pada cmd
5. Setelah mengimport nltk dan menjalankan nltk.download() nanti akan memunculkan jendela baru NLTK downloader, setelah itu kita langsung saja download, ini agak membutuhkan waktu lumayan lama.
NLP (Natural Language Processing) 7
Mendownload collections pada nltk
6. Kita akan mencoba salah satu fitur NLTK yaitu corpus, corpus adalah kumpulan teks yang digunakan dalam penelitian atau pengembangan dalam bidang Pemrosesan Bahasa Alami (NLP). Dengan menggunakan korpus-korpus ini, pengguna NLTK dapat mempelajari pola bahasa, mengembangkan model statistik, dan menguji performa algoritma NLP dalam berbagai tugas.
from nltk.corpus import names |
Pada fungsi ini kita akan mengambil corpus names yang berisi nama nama yang terdiri dari sekitar 7944 kata, kamu dapat melihatnya dengan perintah print(len(names.words()))
7. Kita akan coba print beberapa kata dalam names dengan perintah print(names.words()[:10])
Output program
Tokenisasi
Tokenisasi adalah proses membagi teks menjadi unit-unit terpisah yang disebut "token." Token bisa berupa kata, frasa, atau simbol tertentu. Tujuan dari tokenisasi adalah untuk mempermudah pemrosesan dan analisis teks. Dalam tokenisasi, teks dibagi menjadi unit-unit yang lebih kecil sehingga dapat dihitung, diindeks, atau dijalani oleh algoritma NLP. Balam proses tokenisasi, terkadang karakter-karakter tertentu dapat dihilangkan dari teks. Beberapa karakter yang sering dihilangkan selama tokenisasi adalah tanda baca seperti tanda koma, titik, tanda tanya, dan tanda seru. Selain itu, karakter spesial seperti tanda kutip dan tanda kurung juga dapat dihapus.
Bentuk Tokenisasi
Stemming & Lemmatization
Stemming adalah proses menghilangkan atau memotong akhiran kata untuk menghasilkan bentuk dasar atau kata dasar (stem) dari suatu kata. Tujuan dari stemming adalah untuk mengurangi variasi kata yang memiliki akar yang sama agar dapat dianggap sebagai satu kata yang memiliki makna yang sama. Contoh : Berlari → Lari ; Haloooo → Halo
Kita coba buat implementasi untuk streaming menggunakan method yang disediakan nltk yaitu PorterStemmer mari kita buka jupyter notebook dengan perintah di cmd
jupyter notebook |
NLP (Natural Language Processing) 9
Membuka jupyter notebook
Setelah menjalankan perintah itu maka otomatis akan terbuka pada browser halaman jupyter notebook setelah itu kita klik new, lalu tambahkan notebook baru Python 3 (ipykernel)
Menambah file notebook
Setelah itu kita akan memanggil method PorterStemmer dengan cara sebagai berikut
from nltk.stem.porter import PorterStemmer |
setelah itu kita bisa masukan kedalam objek agar mudah dalam penulisannya, jadi kita hanya perlu memanggil objek yang kita buat di ikuti dengan methodnya saja.
ps = PorterStemmer() |
kemudian kita coba untuk melakukan steaming dengan cara memanggil objek yang sudah dibuat tadi lalu diikuti dengan methodnya yaitu stem()
ps.stem("learning") |
Mencoba Steaming
kita coba untuk kata learning maka hasil yang muncul ada learn, sesuai dengan kata dasar dari learning yaitu learn.
Kesalahan output
Perlu diingat ada beberapa kata yang outputnya tidak sesuai, seperti contoh di atas, namun ada metode lain yang dapat digunakan Lemmatization, caranya kita panggil dulu methodnya yaitu
from nltk.stem import WordNetLemmatizer |
setelah itu bungkus dalam sebuah objek untuk mempermudah pemanggilan
lem = WordNetLemmatizer() |
lalu kita uji lagi dengan kata machines
lem.lemmatize("machines") |
Output Lemmatization
pada dasarnya kedua method tersebut memiliki fungsi sama yaitu mengubah kata ke bentuk dasarnya, tapi ada beberapa perbedaan yaitu
|
Stemming |
Lemmatisasi |
Tujuan |
Menghasilkan bentuk dasar kata dengan memotong akhiran |
Menghasilkan bentuk dasar yang valid dan sesuai secara gramatikal dengan mempertimbangkan konteks dan makna kata |
Hasil |
Bentuk dasar mungkin bukan kata yang valid secara gramatikal atau memiliki variasi dengan makna yang berbeda |
Bentuk dasar adalah kata yang valid secara gramatikal dan memiliki makna yang sesuai |
Akurasi |
Kurang akurat karena hanya melakukan pemotongan akhiran kata |
Lebih akurat karena mempertimbangkan konteks dan makna kata |
Konteks |
Tidak mempertimbangkan konteks kata dalam teks |
Mempertimbangkan konteks dan makna kata dalam teks |
Bahasa |
Dapat diterapkan pada berbagai bahasa, tetapi hasilnya tidak selalu optimal |
Memerlukan sumber daya bahasa khusus dan dukungan untuk lematisasi dapat bervariasi untuk setiap bahasa |
POS tagging
POS tagging adalah proses memberikan label atau klasifikasi pada setiap kata dalam teks berdasarkan jenis atau peran gramatikalnya. Ini membantu memahami struktur kalimat dan konteks kata-kata dalam teks. Dengan POS tagging, kita dapat membedakan kata-kata menjadi kata benda, kata kerja, kata sifat, kata keterangan, dan sebagainya. Ini penting dalam pemrosesan bahasa alami dan digunakan dalam berbagai tugas NLP seperti analisis sintaksis dan penerjemahan mesin. fungsi pada NLTK: nltk.pos_tag
import nltk |
Dalam contoh di atas, kita mengimport modul nltk dan menggunakan pos_tag sebagai fungsi POS tagging dari NLTK. Kemudian, kita menginisialisasi teks yang akan di-POS tagging dan melakukan tokenisasi teks menjadi kata-kata menggunakan word_tokenize dari NLTK. Setelah itu, kita melakukan POS tagging pada kata-kata menggunakan pos_tagger . Akhirnya, hasil POS tagging ditampilkan dengan mencetak kata dan POS tag-nya.
I :
PRP |
Output tersebut menampilkan kata-kata dari teks beserta POS tag-nya. Misalnya, "I" memiliki POS tag PRP yang merupakan kata ganti orang pertama tunggal, "love" memiliki POS tag VBP yang merupakan kata kerja bentuk dasar, dan seterusnya.
NLP (Natural Language Processing) 13 |
Quiz
1. Tokenisasi dalam pemrosesan bahasa alami adalah proses untuk:
a. Mengubah teks menjadi vektor.
b. Mengidentifikasi entitas bernama dalam teks.
c. Memisahkan teks menjadi unit-unit yang lebih kecil.
d. Mengklasifikasikan teks ke dalam kategori yang sesuai.
2. POS tagging adalah:
a. Proses untuk memahami struktur sintaksis dalam teks.
b. Proses untuk mengidentifikasi entitas bernama dalam teks.
c. Proses untuk memberikan label pada setiap kata dalam teks berdasarkan jenis gramatikalnya.
d. Proses untuk menerjemahkan teks dari satu bahasa ke bahasa lain.
3. Stemming adalah:
a. Proses untuk mengubah kata-kata menjadi bentuk dasar.
b. Proses untuk mengidentifikasi sentimen dalam teks.
c. Proses untuk memisahkan teks menjadi unit-unit yang lebih kecil.
d. Proses untuk mengklasifikasikan teks ke dalam kategori yang sesuai.
4. Penerjemahan mesin adalah:
a. Proses untuk mengubah teks menjadi vektor.
b. Proses untuk menerjemahkan teks dari satu bahasa ke bahasa lain.
c. Proses untuk memisahkan teks menjadi unit-unit yang lebih kecil.
d. Proses untuk mengidentifikasi sentimen dalam teks.
5. Analisis sentimen adalah:
a. Proses untuk mengubah kata-kata menjadi bentuk dasar.
b. Proses untuk mengidentifikasi sentimen dalam teks.
c. Proses untuk memahami struktur sintaksis dalam teks.
d. Proses untuk menerjemahkan teks dari satu bahasa ke bahasa lain.
6. Teknik yang digunakan untuk mengidentifikasi entitas bernama dalam teks adalah:
a. Tokenisasi.
b. POS tagging.
c. Stemming.
d. Named Entity Recognition (NER).
7. Word embeddings adalah:
a. Representasi vektor kata dalam teks.
b. Proses untuk mengidentifikasi sentimen dalam teks.
c. Proses untuk mengubah kata-kata menjadi bentuk dasar.
d. Proses untuk memisahkan teks menjadi unit-unit yang lebih kecil.
8. Pemrosesan bahasa alami (NLP) banyak digunakan dalam aplikasi:
a. Analisis sentimen dan klasifikasi teks.
b. Pengenalan wajah dan identifikasi citra.
c. Pendeteksian kecurangan dan penipuan.
d. Pembuatan visualisasi data dan grafik.
9. Parsing adalah:
a. Proses untuk mengubah teks menjadi vektor.
b. Proses untuk menerjemahkan teks dari satu bahasa ke bahasa lain.
c. Proses untuk memahami struktur sintaksis dalam teks.
d. Proses untuk mengidentifikasi sentimen dalam teks.
10. Klasifikasi teks adalah:
a. Proses untuk mengubah kata-kata menjadi bentuk dasar.
b. Proses untuk mengklasifikasikan teks ke dalam kategori yang sesuai.
c. Proses untuk memisahkan teks menjadi unit-unit yang lebih kecil.
d. Proses untuk mengidentifikasi entitas bernama dalam teks.
11. Generasi bahasa alami adalah:
a. Proses untuk mengubah teks menjadi vektor.
b. Proses untuk menghasilkan teks yang alami dan manusiawi.
c. Proses untuk memahami struktur sintaksis dalam teks.
d. Proses untuk menerjemahkan teks dari satu bahasa ke bahasa lain.
12. Apa manfaat utama dari pemrosesan bahasa alami (NLP)?
a. Membangun sistem chatbot dan asisten virtual.
b. Mengidentifikasi sentimen dalam teks.
c. Menerjemahkan teks dari satu bahasa ke bahasa lain.
d. Menganalisis struktur sintaksis dalam teks.
13. Apa tujuan utama dari POS tagging?
a. Mengidentifikasi sentimen dalam teks.
b. Memisahkan teks menjadi unit-unit yang lebih kecil.
c. Memberikan label pada setiap kata dalam teks berdasarkan jenis gramatikalnya.
d. Menerjemahkan teks dari satu bahasa ke bahasa lain.
14. Apa perbedaan antara stemming dan lemmatisasi?
a. Stemming mengubah kata menjadi bentuk dasar, sedangkan lemmatisasi memotong akhiran kata.
b. Stemming memotong akhiran kata, sedangkan lemmatisasi mengubah kata menjadi bentuk dasar.
c. Stemming dan lemmatisasi adalah istilah yang sama dan memiliki arti yang serupa.
d. Stemming dan lemmatisasi tidak ada perbedaan, keduanya mengubah kata menjadi bentuk dasar.
15. Apa fungsi utama dari tokenisasi dalam NLP?
a. Mengidentifikasi sentimen dalam teks.
b. Memisahkan teks menjadi unit-unit yang lebih kecil.
c. Memberikan label pada setiap kata dalam teks berdasarkan jenis gramatikalnya.
d. Menerjemahkan teks dari satu bahasa ke bahasa lain.
Referensi
https://suneelpatel18.medium.com/nlp-pos-part-of-speech-tagging-chunking f72178cc7385
https://glints.com/id/lowongan/natural-language-processing-adalah/#apa-itu-natural language-processing
https://towardsdatascience.com/leveraging-on-nlp-to-gain-insights-in-social-media news-broadcasting-ca89752ef638
https://odsc.medium.com/an-introduction-to-natural-language-processing-nlp 8e476d9f5f59
https://ksnugroho.medium.com/dasar-text-preprocessing-dengan-python a4fa52608ffe
https://towardsdatascience.com/basic-concepts-of-natural-language-processing-nlp models-and-python-implementation-88a589ce1fc0