Suruh saja robot yang baca

Muhammad Riansyah Tohamba
5 min readOct 30, 2020

--

Dibantu dengan NLTK !

https://www.active-robots.com/our-blog/robots-in-education/robot-reading/

Didorong oleh kemalasan untuk membaca papers & textbooks, saya coba melakukan pencarian mengenai cara yang mudah untuk mendapatkan pengetahuan dari berbagai referensi melalui bantuan coding. Kata kunci untuk mempelajari ilmu ini adalah Natural Language Processing. Seperti yang sudah kita ketahui, tulisan pada papers & textbooks menggunakan bahasa natural yang tidak terstruktur. Jika dibandingkan dengan tabel, dengan kolom dan barisnya, kita dapat dengan mudah melakukan query pada tabel tersebut jika ingin mendapatkan informasi yang diinginkan.

Tapi bagaimana jika kita ingin mendapatkan informasi dari data yang tidak terstruktur macam artikel koran, textbooks atau papers ? Cara yang akan kita tempuh adalah dengan membaca habis artikel tersebut.

Membaca tulisan yang jumlah nya ratusan ribu kata memerlukan waktu yang tidak sedikit sehingga akan lebih baik jika ada bantuan dari software-baca.

Dugaan awal saya, beberapa robot (software) ini tidak akan mencapai pemahaman dalam membaca sebaik kita, manusia. Tapi at least, dengan adanya bantuan melalui visualisasi text serta kedekatan antar kata melalui networking dan depedency, mereka dapat membantu kita.

Siapkan datanya terlebih dahulu

Sebelum masuk ke tahapan text mining, kita siapkan dulu data text yang akan kita gali. Text yang diambil dapat berupa dokumen dengan tipe txt, docs, xls, html dan pdf.

Jika datanya berupa file PDF maka kita harus melakukan pre-processing terlebih dahulu. Ahmed memberi kita pustaka untuk melakukannya.

Setelah data textnya siap, kita sudah bisa melakukan mining-text. Berikut beberapa tulisan menarik yang saya temukan dalam pencarian saya.

Bantuan Dokumentasi NLTK

Referensi utama dari tulisan ini adalah tools NLTK berbasis python. NLTK merupakan singkatan dari Natural Language Tool Kit merupakan pustaka yang ditujukan untuk tugas NLP. Silahkan dibuka link Dokumetasi NLTK. Susunan dari pembelajarannya sangat menarik, dimana kita diberikan konteks yang lebih luas mengenai NLP.

Chapter 0

Berisi penjelasan tentang scope keilmuan dari NLP dipelajari oleh 2 bidang baik dari art & humanities maupun Computer science & Engineering.

Chapter 1

Ada beberapa data yang bisa kita gunakan sebagai input bagi pustaka ini yang bisa kita download melalui pustaka nltk. Tetapi jika kita punya file sendiri yang ingin diolah (misal file .pdf) kita dapat mengkonversinya menggunakan pustaka PDFs-TextExtract terlebih dahulu. Sehingga file pdf kita bisa menjadi file .txt. Setelah nya tentu kita bisa melakukan beberapa preprocessing file .txt dengan regex terlebih dahulu.

1. Replace \n with \s
2. Replace \s\s with \s
3. Replace <0x\w+> with \s

lalu kita bisa membuka filenya dengan kode berikut

f = open(‘document.txt’)
raw = f.read() # tipenya str

Selain itu chapter ini mengenalkan tipe data dari nltk yakni nltk.text. Karena untuk mendapatkan fungsi-fungsi yang menarik pada nltk, kita harus mengubah data kita menjadi nltk.text.

Sebelumnya saya mengalami kesulitan dalam mengkonversi tulisan dari file .txt menjadi tipe data nltk.text. Jawabannya terdapat disini.

Token vs Distinct

Penjelasan lainnya adalah tentang perbedaan token dan distinct word.

Sebelumnya diberikan contoh tentang frasa, yakni ‘to be or not to be’.

Frasa ini terdiri dari 2 to + 2 be + 1 or + 1 not.

Jika kita cermati sebenarnya cuman ada 4 kata unik. Jika kita cetak tipe dari token pada nltk sebenarnya dia adalah list.

Jadi perbedaan antara token dan distinct word sebenarnya adalah perbedaan tentang List vs Set.

Dimana kalau list adalah sekumpulan nilai yang nilai nya boleh duplikat, sedangkan kalau set merupakan sekumpulan nilai yang nilai nya tidak boleh duplikat.

Chapter 7 : Information Extraction

Sedikit Background yang diberikan di awal chapter 7 adalah mengenai pengetahuan. Filosofi nya adalah bagaimana cara mendapat pengetahuan?
Mengetahui itu apa sih? Pengetahuan merupakan hal yang ingin kita dapatkan setelah membaca tulisan, bukankah begitu?

Pengetahuan diawali oleh pertanyaan atau QUERY.

Misal Bagaimana caranya mendapatkan uang yang banyak? dan pertanyaan lain diartikel ini, hehe.

Contoh yg diberikan oleh tim NLTK adalah

“Dimana lokasi sebuah perusahaan?”

Untuk menjawab pertanyaan tersebut, bisa saja kita melakukan pencarian dengan membaca teks, misalkan dalam bentuk paragraf.

Tetapi, bukankah lebih sulit mendapatkan informasi dari membaca teks tersebut (unstructered text)?

Bandingkan dalam bentuk tabel yakni kolom(nama perusahaan, lokasi) dan baris (nama perusahaan seperti Microsoft, CT Corp, TSM, etc). Tabel berisikan relasi antar entitas, untuk contoh NLTK, relasinya adalah organisasi-in-location.

Tahapan konversi text to sql
Setelah mengetahui tujuan utama dari chapter 7 , yakni bagaimana melakukan konversi unstructered data to SQL, maka tahap pertama yang harus dilakukan adalah mendeteksi entitas.
Setelahnya baru bisa kita buat relasi antar entitas tersebut.

Sebelumnya, saya langsung lompat ke chapter 7 tentang Information Extraction. Saya pikir ada banyak chapter lagi yang bisa digali.

Chapter 8 mengenai analisis struktur kalimat (sentences). Pada chapter sebelumnya yang dibahas pengambilan makna berdasarkan kata per kata. Pada chapter ini mulai diperkenalkan bagaimana menggunakan grammar CFG pada untuk mempelajari struktur kalimat per kalimat.

Chapter 9 mengenai feature based grammar.

Chapter 10 mengenai meaning of sentences. Makna (meaning) yang digunakan pada chapter sebelumnya menggunakan relasi antara entitas alias SQL. Pada chapter 10, makna didapatkan melalui First Order Logic, dimana menggunakan aturan inferensi dan kumpulan ekspresi deklaratif.

NLTK menyediakan package semantic untuk tugas penggalian makna. Cara mengakses nya dengan kode nltk.sem.

Salah fungsi yang ditawarkan adalah extract relation untuk mendapatkan relasi dari text.

Contoh

nltk.sem.extract_rels(‘ORG’, ‘LOC’, doc,corpus=’ieer’, pattern = IN)

Kode diatas mencari relasi dengan pattern in untuk organisasi dan lokasi.

Chapter 11 mengenai filosofi dari pendekatan nlp yang digunakan saat ini yakni antara filsafat realism versus idealism dan empiricism versus rationalism. Tapi pertentangan antara filsafat tersebut tidak begitu kontras lagi dan bisa dikombinasikan.

Beberapa referensi tambahan lainnya

  1. WordCloud tidaklah cukup : Ini metode primitif yang sering saya lakukan ketika akan membaca sebuah artikel, mencari kata kunci, hehe. Memunculkan kata kunci apa yang paling sering muncul tidaklah cukup, karena kita butuh konteks mengenai kata tersebut. Caranya adalah membuat relasi antar kata dalam suatu teks dengan visualisasi. Tools yang ditawarkan pada artikel itu berbayar, tapi inspirasi penggunaan tools untuk membantu pemahaman kita, cukup baik bagi saya.
  2. Visualisasi text : untuk insight yang lebih mendalam.
  3. Tatangan NLP, terutama pada bahasa indonesia.
  4. Summarize tulisan yang panjang
  5. NLP dibantu oleh Spacy : Menggunakan pustaka Spacy untuk memberikan visualisasi terhadap depedensi antar kata. Beliau menggunakan dataset pidato yang akan dicoba untuk diambil maknanya.
  6. https://towardsdatascience.com/a-complete-exploratory-data-analysis-and-visualization-for-text-data-29fb1b96fb6a : belum saya baca hehe.

Akhir kata, pelajaran yang saya dapatkan dari studi nlp ini adalah

Kita harus mulai dengan pertanyaan jika ingin menyuruh software memahami kumpulan teks

Pertanyaan ini akan menjadi grammar dan query bagi informasi yang kita inginkan. Tanpa pertanyaan, software AI yang kita buat, tidak mengetahui informasi apakah yang kita inginkan.

Saya sudah membuat contoh kode terkait dengan artikel ini silahkan buka repo berikut.

Beberapa penjelasan dari artikel tersebut masih sedikit menandakan saya juga baru mulai baca hehe. Selanjutnya saya akan coba terus mengupdate pemahaman saya melalui blog ini, stay tune !

--

--

Muhammad Riansyah Tohamba
Muhammad Riansyah Tohamba

Written by Muhammad Riansyah Tohamba

Software Engineer | Test FIRST ! | extention of p-dadakan blogspot

No responses yet