Skip to main content

8. NLP (Natural-Language-Processing).html

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
(<env_mu>)D:\direktorimu>pip install jupyterlab

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
# Menginisialisasi POS Tagger
pos_tagger = nltk.pos_tag
# Teks yang akan di-POS tagging
teks =
"I love playing soccer with my friends."
# Tokenisasi teks menjadi kata-kata
kata_kata = nltk.word_tokenize(teks)
# Melakukan POS tagging pada kata-kata
pos_tags = pos_tagger(kata_kata)
# Menampilkan hasil POS tagging
for kata, pos in pos_tags:
print(kata,
":", pos)

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
love : VBP
playing : VBG
soccer : NN
with : IN
my : PRP$
friends : NNS

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

Last modified: Monday, 7 August 2023, 10:11 AM