Menganalisa Akun Twitter – Mendapatkan Keys & Token Twitter API

Twitter menyediakan API untuk mengunduh tweets seseorang. Walaupun yang tepat istilahnya “wrapper” bukan Application Programming Interface (API). Langkah pertama, tentu saja harus punya akun Twitter dulu. Berikut langkah-langkah yang perlu dilakukan.

Mendaftar Sebagai Developer

Pertama-tama masuk ke situs https://developer.twitter.com/ setelah login Twitter di browser, misalnya Mozilla. Atau langsung saja ke sini untuk membuat application baru: https://developer.twitter.com/en/apps. Tekan Create Account untuk membuat app baru.

Tiap saat sepertinya peraturan berubah-ubah. Ketika tulisan ini dibuat harus meng-apply akun sebagai developer.

Kemudian muncul pesan untuk verifikasi via nomor handphone. Tekan Add a valid phone number.

Setelah memasukan nomor ponsel yang sesuai, tunggu sms dari twitter untuk memasukan nomor verifikasi. Setelah meinginput nomor tersebut, maka phone number kita sudah terverifikasi. Tekan Continue. Berikutnya pilih perorangan atau organisasi app yang akan digunakan. Ada pertanyaan yang agak sulit mengenai mengapa membutuhkan API? Serta untuk apa dan metode apa yang digunakan nanti. Nah di sini kita diminta menjawab dengan gaya “mengarang bebas” karena diminta menulis jawaban lebih dari 300 kata. Akhiri dengan menekan Accept setelah membaca (kalau sempat) Term of Service.

Jangan lupa menceklis kotak di bagian bawan TOS. Selanjutnya diminta membuka email dari akun kita. Jika sudah ada pesan masuk dari Twitter, tekan konfirmasi.

Selesai sudah mendaftar sebagai developer yang menggunakan fasilitas Twitter. Pastikan akan masuk ke jendela developer https://developer.twitter.com/en/account/get-started.

Mendapatkan Twitter API Key

Setelah terdaftar sebagai developer berikutnya adalah membuat app. Di bagian dashboard tekan Apps dan jika tidak ada akan muncul tombol Create an App. Cukup banyak yang harus diisi, tetapi ikuti saja sampai selesai, terutama yang required harus diisi. Jika sudah maka terakhir konfirmasi kembali. Di sini beberapa kali ditolak karena nama aplikasi sudah ada yang punya, akhirnya setelah diganti, misalnya “kepo_movie”, baru lah bisa, hehe.

Keys and tokens inilah yang akan digunakan untuk aplikasi meneliti tweets dari sebuah akun twitter. Langkah selanjutnya adalah memilih aplikasi untuk analisa tweeter, misalnya Tweepy yang terkenal bagi programmer Python. Selamat mencoba, semoga peraturan Twitter masih seperti ketika tulisan ini dibuat.

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.

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.

Aplikasi anti plagiarisme, free dan yang Berbayar.

Dalam dunia akademik, plagiasi merupakan suatu pelanggaran serius. Belakangan karena maraknya kasus plagiasi di suatu kampus memaksa pemerintah mengganti rektornya. Agar kejadian ini tidak terulang lagi, alangkah baiknya suatu institusi memiliki fasilitas untuk mengecek suatu tulisan apakah mencontek karya orang lain. Dengan demikian tiap karya yang dipublikasikan benar-benar murni tulisan si penulis. Sepertinya teknologi web-mining diterapkan dalam aplikasi-aplikasi anti plagiarisme ini (lihat pembahasan mengenai web mining)

Selain untuk mencegah, ternyata alat bantu cek plagiasi bisa membantu mahasiswa untuk mengetahui apakah tulisannya pernah ditulis orang lain. Terkadang si mahasiswa memang benar-benar menulis sendiri tulisannya, tetapi ternyata kebetulan sama dengan tulisan yang telah dipublikasikan orang lain. Di sinilah fungsi lain dari plagiarism checking tool tersebut, yaitu membuat suatu tulisan berbeda dengan karya orang lain.

1. Aplikasi anti plagiarisme yang terkenal adalah Turnitin. Hanya saja aplikasi ini tidak gratis dan harus berlangganan. Tetapi bagi suatu institusi sepertinya tidak masalah, mengingat manfaat yang diberikan tool ini. Salah satu aspek penting dari alat bantu ini adalah adanya bukti otentik bahwa suatu tulisan orisinal. Biasanya suatu kampus mensyaratkan prosentasi tertentu, misalnya di tempat saya tingkat kemiripannya kurang dari 15%. Selain itu jika ada sumber lain yang mirip, maksimal 5% kemiripannya dengan satu sumber itu. Berikut tampilan setelah Log-in.

Seperti biasa, jika ada yang berbayar maka ada juga yang menyediakan fasilitas yang gratis. Namun demikian belum tentu benar-benar akurat dan harus diuji. Tetapi tidak ada salahnya menggunakannya. Berikut ini adalah beberapa yang bisa dicoba.

2. PlagScan. Tool ini mirip seperti turnitin, login terlebih dahulu. Namun ada kolom khusus bisa mengecek tulisan tanpa login. Misal saya ambil contoh dari paper terdahulu saya.

Ternyata hasilnya benar-benar akurat, yakni 99% menyontek. Dengan kata lain memang benar bahwa itu tulisan saya yang dulu. Jika ada orang lain yang copy paste bisa terdeteksi. Lumayan untuk mengoreksi tugas-tugas mahasiswa apakah menyontek atau tidak. Tetapi di sini menyontek dengan tulisan yang sudah dipublikasi, kalau menyontek temannya belum tentu ketahuan (tapi tentu saja dosennya tahu, tinggal tuduh saja yang mengumpulkan belakangan berarti nyontek).

3. Smallseotools. Mirip dengan plagscan, kita diminta register terlebih dahulu. Tetapi bisa juga tanpa register dengan limit 1000 kata. Saya ambil contoh mirip dengan kasus sebelumnya. Hasilnya tingkat kemiripan 92%, sepertinya lebih akurat Plagscan. Terlihat juga proses smallseotools ini lebih lama dibandingkan plagscan.

Salah satu yang perlu dipertimbangkan adalah smallseotools menjamin tulisan yang ingin dicek tidak diambil mereka. Tiap selesai proses data langsung dihapus. Tetapi tetap saja saya masih ragu-ragu.

4. Duplichecker. Mirip dengan plagscan dan smallseotools (jadi mikir jangan-jangan mereka pakai engine yang sama). Tetapi antara plagscan dengan smallseotools terbukti berbeda hasilnya, jadi disimpulkan sementara memakai mesin yang berbeda. Oke, kita coba dengan tulisan yang sama dengan sebelumnya. Sama dengan smallseotools, maksimal 1000 kata. Upps.. ternyata salah, harusnya 100% plagirized.

Ketika saya mau tes lagi ternyata harus signup dulu karena melebihi limit (sekali cek). Menurut saya aplikasi ini tidak recomended. Walaupun harus diuji lagi setelah Sign-up masih salah apa tidak (silahkan coba).

Sepertinya plagscan lebih bagus di antara ketiga plagiarism checker gratisan tersebut. Namun demikian perlu diuji lagi untuk tulisan yang banyak dengan naskah “gado-gado”, apakah bisa mendeteksi atau seperti yang terakhir, “no plagiarism detected”, padahal pakai tools yang lain “plagiarized”.

Satu hal yang ditakutkan adalah ketika kita memasukan suatu naskah ke plagiarism checker yang mencuri naskah tersebut. Tetapi kalau memang sudah pasti segera dipublikasikan ya tidak masalah, toh kalau dipublikasi sudah tentu dibaca semua orang. Bagi pengelola jurnal yang penting pastikan Google scholar minimal mendeteksi suatu tulisan resmi yang dipublish sehingga jika ada yang menyontek pasti terlambat karena Google sudah mendeteksi terlebih dahulu naskah aslinya. Sedikit banyak semoga postingan ini bermanfaat.

Update: 8 Februari 2018

Ternyata software anti plagiarisme sangat dibutuhkan untuk dosen yang ingin naik pangkat ke lektor kepala atau guru besar. Surat pemberitahuannya sudah diedarkan oleh Dikti sebagai berikut:

Riset Tentang Web Mining

Lanjutan dari postingan yang lalu. Semua orang pasti memiliki jawaban yang sama tentang pentingnya aplikasi web, yaitu sangat penting. Mulai dari facebook, google, baca berita, dan mencari informasi lainnya selalu menggunakan aplikasi berbasis web. Walaupun saat ini aplikasi android sudah menjamur, tetapi tetap saja web menjadi hub yang menghubungkan client dengan server aplikasi dan server data. Perkembangannya yang sangat cepat membuat riset di bidang ini harus secepat mungkin karena satu teknologi akan segera usang seiring berjalannya waktu.

Banyak Anak Muda yang Tertarik

Web mining merupakan ilmu yang baru. Anak-anak muda karena sudah mengenal web sejak sekolah menengah tidak akan merasa kesulitan untuk mempelajarinya. Terkadang mereka lebih mahir dari pada guru-guru bahkan dosennya. Ketika saya mengikuti wawancara untuk mendapatkan beasiswa S3, saya iseng meminjam proposal milik peserta yang kebanyakan masih muda. Kebanyakan mereka ingin riset yang ada hubungannya dengan web, misalnya semantik web.

Bukan hanya untuk riset, banyak orang menggunakan web untuk mencari uang (affiliate marketing) dengan teknologi-teknologi yang dikembangkan seperti web crawler ataupun robot-robot yang diistilahkan dengan nama bot.

Bidang-bidang Riset Web Mining

Sesuai dengan unsur katanya, web mining berarti menggali informasi yang ada di web. Berbeda dengan data mining yang menggali informasi dari data terstruktur, web mining menggali informasi dari data semi-structure bahkan unstructured. Web mining lebih sulit karena jenis datanya yang tidak terstruktur dan terkadang banyak data “sampah” yang mengganggu proses penggalian data.

Untuk melakukan riset, langkah pertama yang harus ditempuh adalah mempelajari prinsip-prinsip dasar yang sudah baku di buku teks. Jangan sampai kita melakukan riset terhadap sesuatu yang sudah “established”. Teori-teori di buku biasanya sudah fix dan diakui kebenarannya oleh hampir peneliti-peneliti di dunia. Biasanya mahasiswa S3 terkadang mengambil mata kuliah bidang yang akan diriset sebelum masuk ke kandidasi (syarat untuk diperbolehkan meneliti). Langkah berikutnya adalah men-searching jurnal-jurnal terkini tentang web mining.

Untuk buku silahkan baca buku-buku yang beredar, terutama yang bahasa Inggris, misalnya “Mining the web” dan buku-buku semantic web lainnya (Linoff & Berry, 2001; Yu, 2011). Di sini disebutkan ada tiga aktivitas Web mining yang penting:

  • Mining structure
  • Mining usage
  • Mining content

Structure Mining

Silahkan masuk ke salah satu bidang web mining di atas. Yang pertama adalah Mining structure. Penggalian ini bermaksud mencari struktur dari web, biasanya link-link yang ada dalam suatu halaman. Halaman mana saja yang kerap menjadi target dari halaman yang lain? Halaman mana yang menunjuk ke halaman-halaman lain? dan seterusnya. Grafik yang sering dibuat adalah graf berarah yang menunjukan hubungan satu halaman dengan halaman lainnya. Penerapan yang sering dibuat adalah menghitung sitasi terhadap suatu halaman. Istilah yang sering muncul adalah hub, authorities, dan populer site. Tidak hanya melibatkan halaman yang berbeda, struktur lokal pun masuk dalam domain structure mining asalkan melibatkan hubungan-hubungan link.

Mining Usage Pattern

Di sini ada tambahan kata “pattern” karena biasanya yang digali adalah pola penggunaan suatu page. Dua bidang utamanya adalah clickstream analysis dan web logs. Masalah-masalah yang muncul adalah bersih atau tidaknya page yang dikoleksi. Oleh karena itu diperlukan langkah-langkah sebagai berikut:

  • Filtering
  • Despidering (anti spider)
  • User identification
  • Sessionalization, dan
  • Path completian.

Mining Content

Menggali isi web-web yang berserakan di dunia maya membutuhkan keahlian dalam menangani text/string karena sebagian besar web tidak terstruktur. Baca dan pelajari information retrieval dari buku-buku yang tersedia, misalnya buku yang gratis didonlot dari penerbitnya ini. Konsep-konsep stemming, dan sejenisnya (recall, precission, dll) banyak di bahas di buku tersebut. Oiya, sebagian saya tulis di post tentang information retrieval. Silahkan riset jika tertarik, saya sendiri masih meraba-raba, jika tidak sanggup ya back to basic: spatial data optimization.

Ref:

  • Linoff, G. S., & Berry, M. J. A. (2001). Mining the Web. United States of America: Wiley.
  • Yu, L. (2011). A Developer’s Guide to the Semantic Web. New York: Springer.

 

Term Frequency dan Invers Document Frequency (Tf-Idf)

Karena kelemahan scoring dengan Jaccard adalah tidak disertakannya frekuensi suatu term dalam suatu dokumen, maka diperlukan skoring dengan kombinasi dari Term Frequency dan Invers Document Frequency atau disingkat tf-idf.

Term Frequency (tf)

Tf menyatakan jumlah berapa banyak keberadaan suatu term dalam satu dokumen dan kemudian dilogaritmikan agar mengurangi besarnya bilangan, dimana logaritmik suatu bilangan akan mengurangi digit jumlah, misalnya 1000 dengan log (1000) hanya menghasilkan angka tiga. Rumus Tf adalah sebagai berikut:

Jadi jika suatu term terdapat dalam suatu dokumen sebanyak 5 kali maka diperoleh bobot = 1 + log (5) =1.699. Tetapi jika term tidak terdapat dalam dokumen tersebut, bobotnya adalah nol.

Inverse Document Frequency (Idf)

Terkadang suatu term muncul di hampir sebagian besar dokumen mengakibatkan proses pencarian term unik terganggu. Idf berfungsi mengurangi bobot suatu term jika kemunculannya banyak tersebar di seluruh koleksi dokumen kita. Rumusnya adalah dengan inverse document frequency. Document frequency adalah seberapa banyak suatu term muncul di seluruh document yang diselidiki.

Sehingga bobot akhir suatu term adalah dengan mengalikan keduanya yaitu tf x idf. Berikut ini kita mengambil contoh suatu kasus. Misalnya kita memiliki vocabulary sebagai berikut:

girl, cat, assignment, exam, peace

Dan kita diminta merangking suatu query: “girl exam” terhadap dua dokumen di bawah ini:

Document 1 : exam peace cat peace peace girl

Document 2 : assignment exam

Langkah pertama adalah kita membuat tabel dengan term urut abjad (lexicography) dan mengisi nilai bobotnya untuk document 1 dan document 2. Setelah itu menghitung score(q,d1) dan score(q,d2) yang menyatakan berturut-turut skor rangking query terhadap dokumen 1 dan dokumen 2.

Bagaimana angka-angka tf-idf tersebut muncul? Jawabannya adalah dengan menghitung bobotnya lewat rumus tf x idf di atas. Perhatikan exam dan girl yang merupakan query (ditandai kotak hitam). Tampak untuk dokumen 1 score-nya adalah 0 + 0.3 = 0.3, sementara untuk dokumen 2 score-nya 0 + 0 = 0, jadi jika diranking, yang pertama adalah dokumen 1 dan berikutnya dokumen 2. Bagaimana menghitung bobot Wt,d untuk girl pada document 2 di atas yang diperoleh hasil 0.3? berikut ini jalan lengkapnya:

Coba hitung bobot di kolom yang lainnya siapa tahu saya salah hitung.

Koefisien Jaccard

Antara query dengan document perlu dihitung skor untuk mengetahui ranking hasil dari searching kita. Salah satu teknik termudah adalah dengan koefisien Jaccard. Koefisien ini mudah karena kita tinggal mencari item mana saja yang sama dibagi dengan total item keduanya.

Berikut ini adalah contoh sederhana kasus menghitung koefisien Jaccard. Jika diketahui A={1,2,3,4}, B={1,2,4}, dan C={1,2,4,5}, berapakah Jaccard (A,B), Jaccard(B,C), dan Jaccard(A,C). Berikut ini penyelesaiannya.

Berikutnya untuk kasus query dan document. Misalnya kita punya query: ides of march dengan dua buah document yaitu doc1: caesar died in march, doc2: the long march. Cari koefisien jaccard antara query dengan doc1 dan doc2.

Koefisien jaccard memiliki kelemahan dimana koefisien ini tidak memperhatikan term frequency (berapa kali suatu term terdapat di dalam suatu dokumen). Perlu diketahui, bahwa terms yang jarang muncul dalam suatu koleksi sangat bernilai dari sisi informasi, tetapi koefisien Jaccard tidak mempertimbangkan hal ini. Jadi kita butuh cara lain untuk menormalisasikannya.

Entropy

Entropy mengukur ketidakpastian suatu variabel acak. Istilah ini pertama kali saya kenal di mata pelajaran kimia. Misal kita punya uang logam, jika kita lempar kita tidak memiliki kepastian apakah yang diperoleh gambar atau angka. Bagaimana dengan dadu? Tentu saja memiliki ketidak pastian, bahkan melebihi ketidakpastian dari uang logam yang dilempar. Masalahnya jika dadu yang dilempar memiliki ketidakpastian yang lebih tinggi dari uang logam yang dilempar, berapa besar? Nah kita akan coba bahas dengan konsep entropy. Manfaatnya adalah, konsep ini diterapkan untuk pembuatan pohon keputusan (decision tree).

Rumus Entropy

Entropy menggunakan konsep probabilitas dalam menentukan besar entropy suatu kejadian. Misal probabilitas uang yang normal adalah ½ untuk gambar dan ½ untuk angka, sementara untuk dadu tiap angka memiliki peluang yang sama yaitu 1/6 dengan anggapan dadunya normal (fair). Rumus entropy adalah sebagai berikut:

Berapakah entropy fair coin?

Masukan saja rumus di atas, maka diperoleh

H(x)=-( 0.5 * log(0.5) + 0.5 * log(0.5)) = 1.

Oiya, logaritmic yang digunakan adalah basis 2 (bukan sepuluh). Nah bagaimana jika coinnya tidak normal, misal peluang muncul gambar = 0.75 dan angka =0.25? Jawabannya adalah dengan rumusan di atas juga,

H(x) = – (0.75*log(0.75)+0.25*log(0.25)) = -(-0.3112-0.5)=0.8112.

Berapakah entropy fair dice (dadu normal)?

Entropy ini akan digunakan untuk menentukan percabangan pohon keputusan. Misalnya ada data dengan atribut usia, pelajar/tidak, income, dan credit rating yang menentukan seseorang membeli barang. Pertama-tama dihitung entropy atribut-atribut itu untuk mencari information gained berdasarkan entropy itu, jadi logikanya makin rendah entropy-nya maka makin kuat atribut itu menjadi akar.

Learning Weights in Rank Retrieval

Misal kita memiliki data training terhadap beberapa query dengan term-term tertentu berikut ini.

Pertanyaannya adalah berapakah nilai g –nya?

Sebelum menjawab pertanyaan itu terlebih dahulu didefinisikan istilah-istilahnya. Kita misalnya memiliki query “like dog cat temle ant bird wine girl”. Misalnya kita akan menentukan bobot antara ST dengan SB, maksudnya ST adalah letak suatu query pada Dokument (docID) pada Title atau Body, yang disingkat jadi T dan B pada S. Misal pada data pertama Ф1, query like ada di document ID = 17 pada Body, tetapi tidak ada di Title. Sementara ‘r’ adalah penilaian dari pakar (humen expert) yang menyatakan apakah data itu relevan atau tidak. Pada kasus ini diberi angka nol (0) berarti tidak relevan, yang nantikanya akan dijumlahkan dengan variabel n01n (artinya number of St=0, Sb=1 dan tidak relevan (n)).

Sementara g sendiri adalah bobot opimal yang akan kita cari dengan rumusan di bawah ini (buka buku Information Retrieval oleh Manning):

Masukan data-data n10r, n01n, n10r, n10n, n01r dan n01n. Sebagai contoh, n10r adalah jumlah St=1,Sb=0, r=1 dimana di tabel atas berjumlah 0, dan seterusnya.

Sehingga diperoleh nilai g

Incident Matrix dan Inverted Index

Bab pertama pada mata kuliah Information Retrieval adalah seputar bagaimana kita mencari suatu kata dalam beberapa berkas yang telah kita simpan. Berkas-berkas tersebut berupa format text dari aplikasi-aplikasi pengolah kata (word processing).

Incident Matrix

Jika kita ingin mengetahui dalam document mana saja kah kata tertentu, misalnya Indonesia berada? Caranya adalah kita melihat kata Indonesia dalam incident matrix kemudian melihat dalam matrix itu dalam dokumen mana saja kata Indonesia berada. Dalam prakteknya incident matrix sangat memboroskan memori karena seperti kita perkirakan, jumlah keberadaan sangat sedikit, atau dengan kata lain banyak jumlah nol dibanding satu.

Berikut ini contoh soal dari buku referensi Information Retrieval karya Manning, dkk tentang pembuatan incident matrix dan inverted index. Jawaban soal dapat Anda lihat di situs ini, walaupun baru bab 1 saja yang diselesaikan.

Doc 1 – breakthrough drug for schizophrenia
Doc 2 – new schizophrenia drug
Doc 3 – new approach for treatment of schizophrenia
Doc 4 – new hopes for schizophrenia patients

Perhatikan soal di atas, dimana misalnya kita memiliki empat dokumen. Dokumen satu berisi kata breakthrough, drug, for, schizophrenia. Tentu saja ini hanya perumpamaan, karena satu dokument tentu bisa saja hingga berjuta-juta kata. Bagaimana cara membuat incident matrixnya? Sesuai dengan namanya, incident matrix berarti matriks yang berisi keberadaan suatu kata dalam dokumen. Jadi kita cari kata ‘breakthrough‘ ada di dokumen satu, ‘drug‘ di dokumen satu dan dua, dan seterusnya.

Doc 1 Doc 2 Doc 3 Doc 4
approach 0 0 1 0
breakthrough 1 0 0 0
drug 1 1 0 0
for 1 0 1 1
hopes 0 0 0 1
new 0 1 1 1
of 0 0 1 0
patients 0 0 0 1
schizophrenia 1 1 1 1
treatment 0 0 1 0

Terlepas dari kelemahan dari sisi kapasitas matriks yang besar, incident matrix sangat baik digunakan untuk mencari kata dengan operasi boolean (boolean retrieval). Misalnya kita diminta mencari kata-kata dengan boolean:

for AND NOT (drug OR approach)

Maka kita dengan mudah melakukan operasi logika dari incident matrix.

Term vectors
for – 1 0 1 1
drug – 1 1 0 0
approach – 0 0 1 0

Seperti operasi aljabar boole yang telah kita pelajari dari mata kuliah logika, kita kerjakan terlebih dahulu yang dalam kurung (drug OR approach).

1 1 0 0 OR 0 0 1 0 = 1 1 1 0

Setelah operasi NOT diperoleh invers dari jawaban di atas yaitu : 0 0 0 1 dan terakhir dilakukan proses AND dengan for:

1 0 1 1 AND 0 0 0 1 = 0 0 0 1

Inverted Index

Bentuk incident matrix jarang sekali digunakan saat ini. Bentuk yang terkenal adalah Inverted Index, di mana Term di hubungkan dengan lokasi document dimana term tersebut berada. Term adalah suatu kata kunci yang dijadikan objek searching. Pada contoh di atas kita menggunakan kata, walaupun terkadang kita harus memanipulasi kata tersebut, misalnya words yang jamak kita konversi menjadi word (kata dasarnya), serta metode-metode lain yang dibahas di buku Manning di bab-bab berikutnya.

approach,1 Doc 3
breakthrough,1 Doc 1
drug,2 Doc 1 Doc 2
for,3 Doc 1 Doc 3 Doc 4
hopes,1 Doc 4
new,3 Doc2 Doc3Doc4
of,1 Doc 3
patients,1 Doc 4
schizophrenia,4 Doc 1 Doc 2 Doc 3 Doc 4
treatment,1 Doc 3

Perhatikan bentuk inverted index di atas. Suatu Term, misalnya ‘for‘ memiliki frekuensi keberadaan sebanyak 3. Di sebelah kanannya berjajar posting list yang sudah tersortir berdasarkan lokasi dokumen, diberi nama docID. Sebenarnya bentuk inverted index tidak seperti di atas, bentuk di atas hanya mempermudah pengetikan saja, aslinya adalah sebagai berikut:

Maaf tulisannya kayak gitu .. tapi jika Anda bisa membacanya, dijamin seumur hidup Anda bisa membaca seluruh jenis tulisan :D.