Sumber Belajar Pemrosesan Teks dan Perolehan Informasi

Saat ini informasi sangat mudah didapat karena era Big Data dengan konsep 5V-nya (Velocity, Veracity, Volume, Value, dan Variability). Walaupun bagi praktisi Big Data ada konsep “data yang buruk lebih baik daripada tidak ada data” tetapi bagi pelajar dan mahasiswa, dibutuhkan sumber-sumber yang memang dibutuhkannya. Banyak ebook-ebook berkualitas baik banyak dijumpai di internet baik lewat situs sharing ataupun via media sosial seperti Whatsapp. Namun toh, para mahasiswa kurang begitu berminat membacanya (bahkan saya pun agak malas ..). Tapi ya, kalo bisa sih dibaca sampai habis.

Untuk pemrosesan teks, text mining, atau perolehan informasi salah satu buku andalannya adalah terbitan MIT press (C. Manning) dengan teori-teori dasarnya. Ada juga buku karangan Banch tentang Text Mining dengan praktek aplikasinya dengan Matlab. Kebanyakan karena saking “dasanya” jadi sulit untuk diterapkan langsung seperti bagaimana implementasinya di search engine seperti Google atau Bing.

Berbicara mengenai search engine, bagi mahasiswa atau saya juga, yang ingin belajar cepat sekelebat karena limit waktu yang terbatas, Google dkk menjadi andalan utama setelah situs-situs diskusi di internet. Modal dasar yang harus dimiliki tentu saja kemampuan berbahasa Inggris. Walaupun ada translate google, tetap harus bisa bahasa Inggris jika tidak ingin repot bolak-balik buka kamus.

Ada proyek-proyek online yang beredar di internet, salah satunya adalah situs ini yang menyediakan contoh sample data yang akan diolah.

Bagaimana cara mengolahnya? Silahkan download buku Text Mining with Matlab karya Banch, atau datang ke situs-situs diskusi, misalnya tentang pembuatan model bahkan membuat mesin yang bisa membuat sebuah kalimat dengan beberapa kata kunci.

Saya sempat mencobanya. Pertama-tama dengan Matlab 2008. Ternyata dengan versi tersebut banyak masalah yang dijumpai karena sudah tertinggal jauh. Silahkan gunakan yang terkini. Beberapa fungsi m-file perlu diunduh agar bisa berfungsi, dan lumayan bisa dipakai untuk mengutak-atik teks. Mungkin pembaca punya alternatif lain yang lebih baik, silahkan ber-komentar. Yuk, belajar text mining.

Mengambil File Microsoft Word dan Indexing Pada Matlab

[inf.retrievalt.komputer|lab.software|pert.9]

Salah satu langkah perolehan informasi yang penting adalah pembuatan indeks. Indeks merupakan salah satu kunci untuk pencarian informasi. Untuk menghasilkan pengindeks yang baik perlu menggunakan teknik-teknik yang ada pada pemrosesan teks. Postingan kali ini bermaksud mengetahui cara pembuatan indeks dengan file yang diambil dari microsoft word.

Mengambil File Ms Word

Banyak informasi yang memberikan cara bagaimana mengambil file word agar bisa diproses lebih lanjut pada Matlab. Biasanya file yang langsung bisa digunakan adalah file berekstensi txt, namun karena banyaknya file berformat DOC atau DOCX maka perlu mengetahui cara pengambilan file bertipe itu agar bisa diolah lebih lanjut pada Matlab. Agar lebih nyaman, ada baiknya membuat Graphic User Interface (GUI) agar lebih mudah digunakan atau disimpan agar mudah digunakan nantinya.

Masuk ke callback Ambil File dan isikan kode berikut menggunakan uigetfile yang mengeluarkan form ambil file. Akhiri dengan membuat variabel agar bisa digunakan nantinya lewat mekanisme handles.

  • [a,b]=uigetfile(‘*.docx’)
  • handles.a=a;
  • handles.b=b;
  • guidata(hObject,handles)

Sementara pada callback Pra-Proses diisi dengan kode-kode berikut dimulai dari mengambil data dari word:

  • word = actxserver(‘Word.Application’);
  • file=strcat(handles.b,handles.a)
  • wdoc = word.Documents.Open(file);
  • sometext = wdoc.Content.Text;

Variabel “file” merupakan string yang diambil dari instruksi “uigetfile” pada pushbutton sebelumnya yang kemudian disimpan dalam variabel sometext. (Lihat penjelasannya di buku Text Mining dengan Matlab karya Bachs).

  • temp = sometext
  • temp = lower(temp)
  • temp = regexprep(temp,'</verse>’,’ S ‘)
  • temp = regexprep(temp,'<.*?”‘,”)
  • temp= regexprep(temp,’ ‘,”’,”’)
  • temp = regexprep(temp,’\W’,’ ‘)
  • temp = strtrim(regexprep(temp,’\s*’,’ ‘))
  • temp=regexprep(temp,’ ‘,”’,”’)
  • eval([‘wordsofverses={”’,temp,”’};’]);
  • limits = [0,find(strcmp(wordsofverses,’S’))]
  • for k=1:length(limits)-1
  • verses(k).vocab = unique(wordsofverses(limits(k)+1:limits(k+1)-1));
  • end;

Variabel “temp” berisi hasil pemrosesan yang dimulai dari lower untuk mengecilkan seluruh huruf hingga mengkonversi string word tersebut menjadi cell dalam variabel wordsofverses. Hasilnya kira-kira sebagai berikut. Semoga bermanfaat.

Fixing: “Warning: Single line Edit Controls can not have multi-line text”

[inf.retrieval|t.komputer|lab.soft|pert.8]

This problem appears when someone tries to send the result to edit text. The warning is shown in command window and the edit text in GUI is also disappeared. First we should understand that Matlab has two kinds of text format: string and cell. The cell cannot be presented, except you transpose it. But the edit text will show the text in column based. Only the string/char format can be presented in row based (see the picture below showing the string and cell).

Some text processing methods need conversion from string to cell. Therefore, the manipulation should be done in order to show the text in edit text. The algorithm are as follow:

  • Input: cell
  • Output: string in row
  • Use function char to convert cell into character
  • Transpose the characters
  • Use function sprintf to print the characters in row based

This simple method can be solve the warning above. As an impormation, some text manipulation need conversion from cell to char and vice versa, e.g. regexp (regular expression function). I hope this information is useful. This is an output when I stemmed to remove preffix (‘ber’) except when the root-word below 4 characters (e.g. “dua” from “berdua”)

Stemming Pada Matlab

[per.informasi|t.komputer|lab.soft|pert.5]

Jika pada pertemuan sebelumnya telah berhasil memisahkan kata-kata dalam suatu kalimat agar bisa menghitung jumlah katanya maka pada pertemuan kali ini akan mencoba memisahkan kata dari imbuhan (awalan dan akhiran) agar diperoleh kata dasarnya yang dikenal dengan istilah stemming/lematization. Proses ini sangat penting dalam perancangan mesin pencari (searching). Imbuhan merupakan ciri khas bahasa Indonesia yang memang berbeda sekali dengan bahasa Inggris. Coba rancang GUI berikut untuk melakukan proses stemming.

Imbuhan ada banyak misalnya me, meng, ber, per, -an, dan lain-lain. Untuk memisahkannya kita perlu memproses pencarian berdasarkan spasi dan titik (untuk akhiran). Jika tanpa spasi akan terjadi kesalahan karena sistem akan mereplace seluruh yang diduga awalan/akhiran walau terletak di tengah-tengah kata yang tentu saja salah.

  • % menghilangkan “-an”
  • y=regexprep(y,‘an+\s’,‘ ‘) % sebelum spasi
  • y=regexprep(y,‘an+\.’,‘.’) % sebelum titik
  • set(handles.edit1,‘String’,y)

Kode di atas bermaksud menghilangkan akhiran –an. Jika diinput kata “akhiran.” Akan dihasilkan kata dasarnya “akhir”. Ada dua deteksi yaitu sebelum spasi dan sebelum titik.

Logika sederhananya adalah mengganti “-an” tersebut dengan “blank”. Fungsi yang digunakan adalah regexprep yang mencari dan me-replace suatu string. Pertemuan berikutnya akan menggunakan proses perhitungan karakter tertentu, misalnya “makan”, tidak bisa jadi “mak” karena kurang dari 4 karakter. Selain itu perlu proses N-gram (dua, tiga, dst). Selamat mencoba, semoga UTS dapat dikerjakan dengan baik.

Menghitung Jumlah Kalimat dengan Regular Expression

[perolehan.inf|t.kom|lab.soft|per.4]

Jumlah kalimat dihitung berdasarkan jumlah stop indicator, dalam hal ini berupa simbol titik. Tentu saja ada beberapa kondisi khusus, misalnya ketika merepresentasikan sebuah bilangan, maka titik tidak dianggap sebagai stop condition. Termasuk juga untuk penunjukan bab atau referensi dalam tanda kurung.

Lanjutkan proyek sederhana perhitungan jumlah kata yang telah dibahas pada pertemuan yang lalu. Tambahkan sebuah tombol pushbutton dan edit text, masing-masing untuk perintah eksekusi dan mengeluarkan/mepresentasikan hasil eksekusi.

Fungsi Find

Silahkan ketik “help find” pada command window untuk mempelajari aturan penulisannya. Dengan melakukan kode di bawah ini pada fungsi Jumlah Kalimat = dapat diketahui lokasi dan jumlah titik yang dimiliki suatu string.

  • titik=find(handles.str==’.’)         %mencari lokasi karakter “.” berada
  • [baris,jlhtitik]=size(titik)            %mencari jumlah titik yang ditemukan
  • set(handles.edit3,’String’,jlhtitik)    %mengeluarkan jawab berapa banyak titik/sekaligus jlh kalimat

Perhatikan gambar di atas. Karena ada dua titik maka terhitung jumlah kalimatnya dua. Bagaimana jika ada titik yang ternyata bukan akhir sebuah kalimat, misalnya sub-bab atau angka decimal, dan lain-lain?

Fungsi Regular Expression (REGEXP)

Fungsi ini bermaksud mencari berdasarkan karakter (huruf per huruf). Fungsi ini digunakan ketika mencari kasus kusus jika ada angka dengan titik di dalamnya yang tidak dihitung sebagai stopping suatu kalimat.

  • titik=find(handles.str==’.’)            %menemukan karakter titik
  • [baris,jlhtitik]=size(titik)                %menghitung banyaknya titik
  • pat = {‘(\d)+[.]’};                    %keyword
  • angkatitik=regexp(handles.str,pat,’match’)    %mencari angka dengan titik
  • angka=angkatitik{1}                %mengeluarkan isi cell
  • [baris,jlhangka]=size(angka)            %menghitung berapa banyak angka-titik
  • jlhtitik=jlhtitik-jlhangka                %mengurangkan jlh titik
  • set(handles.edit3,’String’,jlhtitik)        %mengirim hasil pemrosesan teks

Instruksi pat={‘\d+[.]’) bermaksud mempersiapkan keyword fungsi regexp. Simbol \d+ maksudnya mencari angka desimal (simbol “d”) yang bersisian dengan titik (simbol “[.]”). Perhatikan titik harus dilingkupi dengan kurung kotak “[ ]” yang mengharuskan regexp menyamakan dengan karakter di dalam kurung tersebut, dalam hal ini titik.

Suatu string “Perhatikan gambar 3.2 di bawah ini.” jika menggunakan kode tambahan di atas akan menghasilkan jumlah kalimat yang tepat walaupun ada dua titik di sana karena titik yang berdekatan setelah angka dianggap bukan akhir kalimat. Tentu saja ada masalah jika string “Perhatikan gambar 3.”. Maka harus dibuat kode tambahan agar titik tersebut dianggap akhir kalimat, silahkan coba buat kode-nya sendiri untuk mengatasi hal tersebut.

Praktek Menghitung Jumlah Kata dan Kalimat dengan Regular Expression Matlab

[perolehan.informasi|tek.komputer|lab.software|pert.3]

Salah satu fungsi penting dalam perolehan informasi (information retrieval) adalah pencarian kata. Untuk sampai ke sana ada baiknya mengetahui berapa jumlah kata dalam suatu berkas. Dan untuk itu harus mampu membedakan antara kata dengan bukan kata. Yang bukan kata seperti tanda petik, tanda khusus (bintang, pagar), dan spasi.

Fungsi REGEXP

Regular expresion merupakan fungsi yang ditemui dalamm mata kuliah teknik komputesi dan kompilasi. Fungsinya adalah mencari serangkaian kata atau diistilahkan token dalam materi tersebut. Untuk materi perolehan informasi (dan juga text mining) fungsinya sama. Pada Matlab fungsi regular expresion dalam bentuk regexp.

Menghitung Jumlah Kata

Bagi yang sering mengetik dengan MS Word, pasti sudah mengenal indikator jumlah kata yang telah diketik. Letaknya di bagian kiri MS Word. Misalnya, ketika saya menulis sampai sini ada indikator jumlah kata yang tertulis sebanyak 143 kata.

Untuk mengetahui fungsi regexp silahkan mengetik help regexp pada command window. Tampak untuk mencari suatu kata menggunakan parameter \w+ dan ‘match’. Untuk mencobanya, masukan kode berikut pada command window:

  1. string=’Presiden Jokowi mengunjungi kota Palu’;
  2. hasil=regexp(string,’\w+’,’match’);
  3. [baris,kolom]=size(hasil);
  4. jumlahkata=kolom
  5. jumlahkata =
  6. 5

Baris ke 3 hingga 5 menghitung jumlah kata yang berhasil dipilah. Jumlah kata string tersebut sesuai dengan jumlah kata yang berhasil dipisahkan oleh fungsi regexp. Pada lab software coba buat GUI seperti di bawah ini. Jika tombol Jumlah Kata = ditekan maka akan menunjukan jumlah kata yang terdapat pada string yang dicopas dan paste-kan ke edit text di atasnya. Ada perbedaan antara kata yang dihitung MS Word dengan kode di atas, perlu diteliti lebih lanjut.

Menghitung Jumlah Kalimat

Untuk menghitung jumlah kalimat, fungsi regexp harus mampu menghitung berapa jumlah titik dalam satu berkas. Jika ada dua titik maka ada dua kalimat. Tentu saja di sini harus mampu membedakan antara titik desimal dengan titik yang merupakan akhir dari kalimat. Silahkan mencoba dahulu.

Online Education Research

Riset tentang pendidikan jarak jauh (PJJ) melibatkan banyak bidang ilmu (multidisiplin). Karakternya yang banyak melibatkan ilmu sosial membuat tiap tempat berbeda karakternya, sehingga melibatkan institusi-institusi tiap negara. Lihat postingan terdahulu tentang webinar (seminar online) PJJ. Beberapa hari yang lalu ada kiriman buku tentang riset pendidikan daring di Indonesia, cocok untuk yang ingin memulai riset di bidang ini.

Setelah membaca sekilas banyak informasi-informasi yang diberikan dalam buku itu. Kalau pun tidak detil, pembaca bisa membaca rujukan yang disertakan, kebanyakan berupa paper ilmiah (jurnal internasional). Jangan takut, banyak cara untuk mengunduh jurnal-jurnal yang berbayar tersebut. Berikut informasi yang diberikan:

  • Riset PJJ di Indonesia, bahkan di Asia, masih sangat kurang. Kebanyakan oleh negara-negara maju seperti AS, Australia, dan Eropa.
  • Banyak jurnal-jurnal rujukan yang disertakan (dalam tabel) yang bisa kita baca lebih lanjut setelah mengunduh paper tersebut. Cocok untuk yang ingin membuat proposal disertasi/studi lanjut s3.
  • Disertakan teori-teori pembelajaran (walau secara umum) sebagai referensi.
  • Dijelaskan teknik-teknik untuk riset (jenis-jenis riset, teknik pengambilan data, dan lain-lain)
  • Ada pembekalan dalam menulis artikel ilmiah (memilih jurnal sasaran, mengatur tulisan-tulisan yang disubmit, dan pengertian-pengertian tentang submit, minor/major revision, dan lain-lain)
  • Strategi untuk mengaplikasikan PJJ di Indonesia agar lebih efektif

Apapun saat ini sudah mulai di-online-kan. Mau tidak mau kita harus mengerti konsepnya, begitu juga dengan para dosen dan pengajar, konsep e-learning harus dikuasai. Ada tiga sisi dalam diri seorang dosen: Peneliti, Pengajar/pendidik, dan Pengabdi. Jadi riset untuk meningkatkan pengajaran jangan dilupakan juga. Semoga bermanfaat.