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.

Iklan

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.

Sains Harus Belajar dari Marketing

Sepintas sungguh aneh, bahkan bagi orang murni sains marketing dianggap bukanlah ilmu, setidaknya disebut “an oxymoron” alias retorika yang ambigu yang sering dipakai politisi kita (pro maupun kontra). Benarkah marketing itu bukan ilmu? Postingan kali ini terinspirasi dari buku web mining (lihat post yang lalu) yang akan segera saya kembalikan ke perpustakaan. Di buku tersebut di bab “Using Marketing Tests to Understand Customers” disinggung masalah ilmu unik marketing.

Power of Marketing

Sebelum lanjut, sepertinya kita sadari terlebih dulu kondisi aneh perusahaan-perusahaan saat ini dalam kaitannya dengan masalah disruption. Banyak perusahaan yang terkenal mapan langsung terpuruk karena fenomena tersebut. Salah satunya adalah ditinggalkan oleh konsumennya yang memilih produk lain yang dianggap memenuhi harapannya. Salah satu aspek terpenting suatu perusahaan adalah marketing karena merupakan sarana untuk menarik konsumen yang kemudian berdampak terhadap keuntungan. Tanpa keuntungan tentu saja tidak dapat membiayai ongkos-ongkos suatu perusahaan. Bolehlah teknik, riset, dan sejenisnya terhadap suatu produk atau manufaktur, tetapi tanpa melakukan riset dalam marketing, siap-siap mengambil resiko besar terhadap kerugian. Ipad waktu itu siap dipasarkan apple, tetapi bagian riset marketing ternyata melihat animo masyarakat terhadap Iphone lebih tinggi, padahal Iphone waktu itu belum siap publish. Dan benar, dengan menahan Ipad dan melapas Iphone terlebih dahulu, apple mendulang untung besar. Para pekerja aktif seperti perawat, dokter, dan sejenisnya lebih membutuhkan piranti cerdas mungil dibanding yang lebih besar.

Marketing & Sains

Apa itu sains? Sains intinya melakukan riset runtun yang berdasarkan tahapan-tahapan yang disebut metode ilmiah: hipotesa, disain eksperimen, eksperimen, analisa hasil, dan merevisi hipotesa. Tahapan-tahapan itu haris bisa ditiru oleh periset lain sehingga terbukti keandalan dan akurasi temuannya (confidence). Bagaimana dengan marketing? Tunggu dulu, dengan data yang ada sebelumnya ternyata hasil hipotesa tidak berlaku dengan kondisi yang ada sekarang. Jangankan data beberapa tahun yang lalu, data beberapa bulan yang lalu saja belum tentu akurat untuk diterapkan saat ini. Lalu bagaimana ini?

Buku rujukan web mining menjelaskan bahwa titik penting bagian riset di marketing adalah hipotesa. Hipotesa yang tidak tepat tentu saja tidak bermanfaat walaupun benar. Walaupun mengikuti metode ilmiah tetapi jika tidak menjawab persoalan utama, tentu saja tidak bermanfaat. Untuk itu saintis harus belajar bagaimana marketing menentukan hipotesa risetnya yang terkadang bagi ilmuwan kurang greget, kurang wah, kurang berbobot, tapi ternyata dampaknya besar. Berikut hal-hal yang bisa dipelajari dari marketing dalam penentuan hipotesa:

  • Kreativitas: dibutuhkan untuk menemukan hipotesa yang menarik
  • Skeptisme/keraguan: bukan hanya solve problem, ternyata meyakinkan suatu itu penting, terutama dengan pencarian dan perbandingan alternatif-alternatif.
  • Kepercayaan diri untuk maju berdasarkan hasil riset. Terkadang di kampus kita selalu menekankan hasil riset harus OK, model harus fit, dan sejenisnya. Parahnya siswa suka mengutak-atik data agar “cakep”. Ternyata bagi orang marketing, sejelek apapun data maupun hasil riset, bisa digunakan untuk move on (termasuk diterapkan bagi yg calonnya kalah pemilu).

Marketing untuk Dana Penelitian

Sering sekali teknik marketing saya gunakan untuk memperoleh hibah penelitian. Sebagian hibah penelitian sebenarnya berdasarkan proses marketing kita, baik ketika membuat proposal maupun saat presentasi. Tidak semua judul yang lolos di jurnal lolos pula di hibah (sepertinya sebaliknya juga berlaku). Kreativitas, keraguan, dan kepercayaan untuk maju yang telah dibahas di atas, sangat diperlukan. Keahlian dalam mengemas sesuatu yang biasa-biasa saja jadi berharga dan sesuatu yang sudah berharga dikemas agar terlihat bermanfaat sangat diperlukan untuk mendapatkan dana hibah. Ketika mengajukan proposal hibah terkadang saya sengaja membuat bimbang reviewer. Bolehlah dia marah-marah ketika presentasi, setidaknya saya telah membuat mereka bimbang untuk menolaknya disaat memutuskan lolos atau tidak. Sepertinya perlu postingan tersendiri untuk masalah hibah. Sekian semoga bermanfaat.

Reference

Linoff, G. S., & Berry, M. J. A. (2001). Mining the Web. United States of America: Wiley.