BAB 2 LANDASAN TEORI
Berita Berita merupakan informasi yang baru saja terjadi dan berguna untuk publikasikan terhadap khalayak melalui berbagai media baik cetak maupun digital atau bahkan dari mulut ke mulut. Kata berita sendiri berasal dari Sanskerta yaitu βvαΉttaβ yang berarti terjadi atau ada. Berita tertulis pertama kali dibuat pada abad ke-8 SM di Cina (Zhang, 2007). Pada abad ke-21 gaya penyampaian berita mengalami perubahan yang dramatis, yang membuat setiap kejadian yang baru saja terjadi secara instan akan diketahui oleh semua orang yang terhubung ke Internet. Karakteristik berita Setiap berita memiliki perbedaan satu sama lain, namun menurut Saxena (2013) minimal setiap berita harus memiliki beberapa karakteristik berikut : 1. Adil dan seimbang maksudnya berita disampaikan dari berbagai sudut pandang dan tidak mengacu hanya pada satu sudut pandang saja. 2. Akurat, informasi dalam berita ditulis dengan informasi seakurat mungkin. Sehingga berita yang ditulis semestinya sudah melalui proses cross-check atau proses peninjauan kembali. 3. Sumber, berita memiliki sumber informasi yang jelas. Walaupun pada beberapa jenis berita tertentu yang mewajibkan sumber anonim. 4. Ringkas, penulisan berita tidak boleh bertele-tele. Berita harus ditulis singkat namun tetap berisi fakta-fakta penting. 5. Jelas, dalam berita tidak boleh ambigu. Fakta harus disampaikan secara jelas.
Universitas Sumatera Utara
7
Penyampaian berita tentu harus memperhatikan nilai-nilai yang terkandung di dalamnya. Sehingga kualitas berita dapat ditingkatkan. Menurut Setiawan (2014) yang merujuk kepada (Djuroto, 2004) bahwa berita harus mengandung sepuluh nilai yaitu: 1. Magnitude, pengaruh yang ditimbulkan dengan menyebar luaskan berita pada khalayak. 2. Significant, tingkat kepentingan berita sehingga layak untuk dipublikasikan. 3. Actuality, kejadian yang benar-benar terjadi baru-baru ini. 4. Proximity, jarak kejadian yang semakin dekat dengan khalayak semakin perlu untuk diberitakan. 5. Prominence, kejadian yang menonjol untuk diberitakan. 6. Surprise, unsur kejutan dan isi berita yang tidak mudah ditebak. 7. Clarity, peristiwa harus benar-benar terjadi dan informasi yang akan disampaikan harus jelas dan tidak terlalu banyak opini. 8. Impact, kejadian yang akan diberikan memberikan dampak yang terasa untuk khalayak. 9. Conflict, suatu masalah yang terjadi perlu untuk diberitakan sehingga masalah tersebut diketahui. 10. Human Interest, berita yang mencakup setiap ketertarikan seperti bidang olah raga, teknologi, dan sebagainya. Berita yang akan dipublikasikan akan lebih berarti jika berita paling tidak memuat sepuluh nilai tersebut. Peringkasan Teks Otomatis Memahami isi tulisan yang panjang bukanlah hal yang mudah (Aristoteles, 2014), karena informasi dalam teks bacaan hanya bisa diperoleh dengan membaca seluruh isinya dan hal ini tentu memerlukan waktu yang relatif lama (Fachrurrozi, et al. 2013). Ringkasan teks akan mempercepat pengguna untuk mendapatkan informasi yang dibutuhkan tanpa harus menghabiskan waktu yang banyak dan upaya keras dalam membaca keseluruhan teks (Deshpande & Lobo, 2013). Oleh karena itu peringkasan teks otomatis sangat diperlukan untuk masalah tersebut. Hal ini sudah diketahui sebagai bidang riset yang penting oleh beberapa organisasi seperti defense advanced research projects agency (DARPA), Pacific Rim hingga sektor komersial seperti pada industri telekomunikasi dan penyaringan untuk information retrieval berbasis web.
Universitas Sumatera Utara
8
Ringkasan teks dapat diperoleh melalui peringkasan secara manual dan peringkasan secara otomatis. Peringkasan teks yang dilakukan secara manual oleh manusia melibatkan pemahamannya tentang topik yang akan diringkas, penafsiran dan proses lainnya. Sehingga akan menghasilkan sesuatu yang baru, yang tidak terdapat dalam teks asli karena dalam proses peringkasan telah dipadukan dengan pengetahuan orang yang meringkas. Peringkasan teks otomatis atau automatic text summarizaton (ATS) adalah program komputer berisi perintah atau algoritma yang mampu memilih kalimat-kalimat penting dalam suatu teks dan menghimpunnya dalam teks baru yang lebih ringkas sehingga bisa langsung digunakan. Peringkasan ini akan menggunakan pendekatan selection-based yang mengekstraksi dan menganalisis fitur-fitur dalam teks. ATS terbagi menjadi dua tipe yaitu generic summary (text-driven) dan userfocused (query-driven). Tipe yang pertama, generic summary berisi kalimat ringkasan yang berasal dari teks asli. Kalimat yang termasuk dalam ringkasan ditentukan dengan menghitung bobot feature penting dalam teks. Tipe yang kedua, query driven menghasilkan ringkasan sesuai dengan kriteria informasi yang dibutuhkan oleh user seperti query atau topik. Keuntungan ATS dibandingkan dengan peringkasan manual adalah kecepatan dalam meringkas dokumen yang banyak, distribusi hasil ringkasan yang cepat dan mudah serta biaya yang relatif rendah (Torres-Moreno, 2014). ATS memiliki tiga tahapan pengerjaan yaitu yang pertama pembuatan tafsiran dari teks sumber untuk mendapatkan perwakilannya (interpretation), kedua mengubah teks dari tahap pertama menjadi representasi hasil ringkasan (tranformation), terakhir yang ketiga pembuatan ringkasan dari representasi teks (generation). Secara umum peringkasan teks terbagi dua yaitu: 1. Abstraktif Teknik peringkasan abstraktif adalah mengambil intisari dari teks sumber kemudian membuat ringkasan dengan menciptakan kalimat-kalimat baru yang merepresentasikan intisari teks sumber dalam bentuk yang berbeda.
Universitas Sumatera Utara
9
2. Ekstraktif Hasil ringkasan dengan menggunakan teknik ekstraktif merupakan hasil seleksi kalimat-kalimat yang penting dari teks asli tanpa ada modifikasi pada kalimat tersebut (Kalita, Saharia, & Sharma, 2012). Teknik ekstraktif menggunakan beberapa
metode
seperti
statistik,
linguistik,
heuristik,
graph-based
(Ridok, 2014). Di mana semua metode yang digunakan memanfaatkan fitur-fitur yang ada dalam teks untuk menentukan tingkat kepentingan suatu kalimat dalam keseluruhan teks. Kebanyakan yang digunakan dalam penelitian adalah ekstraktif karena memberikan hasil yang relatif lebih baik dari teknik abstraktif berdasarkan perkembangan teknologi peringkas teks otomatis yang ada sekarang ini (Erkan & Radev, 2004). Algoritma TextTeaser Algoritma TextTeaser pertama kali dipublikasikan pada Tahun (2011) dalam penelitian Juan Paolo Balbin. Algoritma tidak ditujukan untuk mengganti teks asli yang ada melainkan untuk memberikan gambaran isi teks. Seperti teaser pada film yang tidak berisi keseluruhan isi cerita film tersebut. Algoritma TextTeaser juga ditujukan untuk memberikan gambaran singkat (teaser) tentang isi teks. TextTeaser meringkas teks secara ekstraktif sehingga kalimat-kalimat ringkasan yang dihasilkan merupakan bagian dari teks asli tanpa ada modifikasi. Untuk menentukan kalimat mana yang termasuk dalam ringkasan, algoritma bekerja dengan menghitung empat elemen dalam teks yang terdiri dari judul teks, posisi kalimat, panjang kalimat, dan frekuensi keyword (Balbin, 2011). 1. Judul teks berita Penghitungan skor kalimat ditentukan dengan menghitung setiap kalimat dalam teks berita yang memiliki kesamaan dengan judul berita. Untuk menghitung skor berdasarkan judul teks, terlebih dahulu stopword pada kalimat dalam teks dan judul teks dihilangkan. Hal ini bertujuan untuk menghindari penghitungan kata yang tidak perlu sehingga proses kalkulasi skor lebih efisien. Selanjutnya bobot dihitung menggunakan persamaan (1). πππ‘πππππππ(π π ) =
|πΎ β© π| (|π‘π | β 1)
(1)
Universitas Sumatera Utara
10
Metode penghitungan skor memperoleh kalimat dalam teks π π , πΎ adalah katakata dalam kalimat π π , π adalah kata-kata dalam judul π‘π , kemudian dihitung jumlah kata dalam kalimat π π dan juga kata yang berada dalam judul. Jumlah kata yang didapatkan selanjutnya dibagi jumlah kata dalam judul dikali 1 (satu). 2. Posisi kalimat Menentukan skor kalimat berdasarkan posisinya dalam teks. Dari penelitian yang dilakukan oleh Balbin (2011) mendapatkan bahwa skor posisi kalimat pada teks berita memiliki nilai yang lebih tinggi pada kalimat pembukaan atau kesimpulan daripada kalimat-kalimat lainnya . πππ ππ‘ππππππππ(π, π) =
π (π β 1)
(2)
Dari persamaan (2) diketahui π adalah posisi kalimat dalam teks, π adalah jumlah semua kalimat. Kemudian nilai πππ ππ‘ππππππππ(π, π) ditentukan berdasarkan tabel 2.1. Tabel 2.1 Nilai berdasarkan skor posisi kalimat (Balbin, 2011) Sentence position Distributed Probability Sentence position Distributed Probability
0.0 < x β€ 0.1
0.1 < x β€ 0.2
0.2 < x β€ 0.3
0.3 < x β€ 0.4
0.4 < x β€ 0.5
0.17
0.23
0.14
0.08
0.05
0.5 < x β€ 0.6
0.6 < x β€ 0.7
0.7 < x β€ 0.8
0.8 < x β€ 0.9
0.9 < x β€ 1.0
0.04
0.06
0.04
0.04
0.15
3. Panjang kalimat Skor elemen ini ditentukan dengan menghitung banyak kata dalam kalimat. Untuk menghitung nilai panjang setiap kalimat dalam teks digunakan persamaan (3). ππππ‘πππππΏππππ‘β(π π ) =
(π₯ β (π₯ β |π π |)) π₯
(3)
Dari persamaan (3), diketahui π π adalah kalimat dalam teks kemudian |π π | adalah jumlah semua kata dalam kalimat tersebut termasuk stopword, sedangkan π₯ merupakan nilai ideal perhitungan dengan nilai 20.0 (Balbin, 2011).
Universitas Sumatera Utara
11
4. Frekuensi keyword Frekuensi kemunculan kata pada keseluruhan teks berita. Untuk skor frekuensi keyword digunakan fitur teks (text feature) yang dihitung dengan dua metode yaitu density-based selection (DBS) dan summation-based selection (SBS). Sebelum menghitung DBS dan SBS, keyword teks dan skornya ditentukan dengan mencari kata-kata unik (tanpa duplikat dan bukan stopword). Kemudian menghitung frekuensi setiap kata unik. Sampai tahap ini keyword dan frekuensi kemunculannya sudah diperoleh. Langkah selanjutnya keyword beserta frekuensi yang diperoleh diurutkan dari bobot yang terbesar ke bobot yang terkecil. Untuk mendapatkan keyword paling sering muncul (top keyword), sepuluh data terurut diambil kemudian diproses untuk memperoleh skor masing-masing keyword. Skor setiap keyword dapat hitung dengan menggunakan persamaan (4). πΎππ¦π€ππππππππ(ππ ) = (1 β |ππ | Γ· |π|) β 1.5
(4)
Dari persamaan (4), diketahui ππ merupakan keyword yang akan dihitung, |ππ | merupakan frekuensi kemunculan keyword dalam teks, dan |π| adalah jumlah semua kata-kata unik dalam teks. Setelah skor masing-masing keyword diperoleh, barulah DBS dan SBS bisa dihitung. Metode pertama, DBS adalah metode untuk menentukan peringkat (rank) pada teks berdasarkan beberapa parameter antara lain kumpulan keyword yang sudah diberi skor (Hu, Sun, & Lim, 2007), kata-kata pada kalimat yang akan dihitung, kata-kata pada kumpulan keyword. Kemudian kumpulan parameter tersebut dihitung dengan menggunakan persamaan (5). πΎβ1
πππ (π€π ) β πππ (π€π+1 ) 1 πππ (π π ) = ββ πΎ β (πΎ + 1) πππ π‘ππππ(π€π , π€π+1 )2
(5)
π=1
Dari persamaan (5), πΎ adalah jumlah kata dalam π π yang juga ada dalam top keyword tambah 1, πππ (π€π ) adalah bobot keyword π€π , dan πππ π‘ππππ(π€π , π€π+1 ) adalah nilai dua keyword yang berdampingan (π€π dan π€π+1 ) dan bukan keyword atau stopword dalam π π .
Universitas Sumatera Utara
12
Metode kedua adalah SBS. Metode ini berfungsi untuk memberikan bobot kalimat yang lebih tinggi apabila kalimat mengandung kata-kata yang mewakili teks keseluruhan (atau disebut dengan top keyword). Untuk menghitung bobot yang dimaksud digunakan persamaan (6). π ππ (π π ) =
1 1 β ( β π ππ (π€π )π )π |π π |
(6)
π€π βπ π
Pada persamaan (6) π π adalah kalimat dalam teks, |π π | adalah jumlah kata-kata yang terkandung dalam π π , kemudian parameter untuk mengambil bobot kata (π€π ) yang merepresentasikan isi teks dengan π(π > 0). Langkah selanjutnya untuk memperoleh nilai frekuensi keyword adalah dengan menjumlahkan nilai πππ (π π ) dan π ππ (π π ) kemudian dibagi 2.0 * 10.0 seperti persamaan (7). πΎππ¦π€ππππΉπππ(π π ) =
(πππ (π π ) + π ππ (π π )) 2.0 β 10.0
(7)
Setelah memperoleh skor judul teks, posisi kalimat, panjang kalimat, dan frekuensi keyword. Semua nilai tersebut ditotalkan menggunakan persamaan (8).
πππ‘πππππππ(π π ) =
(ππ + 1.5 + πΎπΉ β 2.0 + ππΏ β 0.5 + ππ β 1.0) 4.0
(8)
Pada persamaan (8), ππ adalah title score atau skor judul teks, πΎπΉ adalah keyword frequency atau frekuensi keyword, ππΏ adalah sentence length atau skor panjang kalimat, dan ππ adalah sentence position atau skor posisi kalimat. Algoritma TextRank Algoritma TextRank merupakan algoritma yang bekerja dengan memberikan peringkat pada graf (Mihalcea & Tarau, 2004) representasi objek dalam teks. Graf biasanya diperoleh dari dokumen teks. Algoritma yang berdasarkan graf pada umumnya menentukan tingkat kepentingan suatu kalimat berdasarkan nilai simpul (vertex/node) representasi kalimat tersebut. Semakin besar nilai simpul maka semakin dianggap penting kalimat tersebut. Menurut (Mihalcea & Tarau, 2004), algoritma pencarian peringkat dari graf dapat dianalogikan dengan pengambilan voting atau rekomendasi.
Universitas Sumatera Utara
13
Ketika sebuah simpul menuju pada simpul yang lain, berarti simpul tersebut sudah memilih simpul yang lain tersebut. Semakin tinggi nilai vote yang diperoleh, semakin tinggi tingkat kepentingan suatu simpul. Selain itu, tingkat kepentingan simpul yang menuju simpul lain juga berperan penting untuk menentukan tingkat kepentingan simpul yang dituju. Alhasil bobot sebuah sebuah simpul ditentukan berdasarkan banyak simpul yang menujunya. Pada peringkasan teks otomatis secara ekstraktif, TextRank memiliki beberapa keunggulan antara lain: ο·
Unsupervised, atau dengan kata lain TextRank dapat bekerja tanpa data training untuk memproses data sesungguhnya.
ο·
Language independent, yang berarti TextRank tidak bergantung pada bahasa tertentu atau pemahaman tentang suatu bahasa seperti grammar. Hal ini karena TextRank bekerja hanya menggunakan kata-kata dalam teks. Keterbatasan TextRank hanya pada saat pemisahan kalimat, kata yang berbeda pada bahasa tertentu. Simpul-simpul graf dalam algoritma TextRank selain berisi kalimat juga
mencakup unit teks seperti kata-kata, collocations (lokasi kalimat), dan sebagainya. Kemudian sisi (edge) pada graf merepresentasikan hubungan antara kalimat yang berelasi (similarity). Tanpa mengacu pada tipe elemen yang dimasukkan dalam graf, menurut Mihalcea & Tarau (2004), implementasi algoritma berbasis graf pada pemrosesan teks bahasa alami (contoh, bahasa Indonesia, bahasa Inggris, dan lain-lain) mencakup empat tahap antara lain: 1. Identifikasi unit teks yang paling cocok untuk dijadikan simpul dalam graf. 2. Pemberian sisi antar simpul unit teks baik dengan bobot atau tidak, berarah atau tidak berarah. 3. Proses menggunakan algoritma hingga objek graf bertemu satu sama lain (convergence). 4. Urutkan simpul berdasarkan skornya. Nilai skor dimasukkan dalam simpul pada saat proses algoritma. Pada dasarnya algoritma TextRank dapat diimplementasikan pada dua jenis aplikasi yaitu ekstraksi keyword dan peringkasan otomatis. Untuk implementasi pada
Universitas Sumatera Utara
14
peringkasan teks otomatis, algoritma ini bekerja dengan memberikan peringkat unit teks berdasarkan teks yang diberikan. Menurut Mihalcea & Tarau (2004), algoritma ini memiliki proses yaitu pertama membuat graf dari teks, untuk simpul berisi kalimatkalimat dalam teks. Kemudian untuk menentukan hubungan antar simpul digunakan similarity content overlap yang dapat diperoleh dengan menghitung token yang ada pada kalimat-kalimat tersebut. Misalkan pada dua kalimat ππ dan ππ yang akan dihitung, kemudian kumpulan kata-kata ππ perwakilan dari kedua kalimat misalnya: ππ = π€1π , π€2π , β¦ , π€ππ π dan begitu juga untuk kalimat ππ . Selain itu panjang masing-masing kalimat log(|ππ |) atau log(|ππ |) selanjutnya dihitung menggunakan persamaan (9).
πππππππππ‘π¦(ππ , ππ ) =
|{π€π |π€π β ππ & π€π β ππ }| log(|ππ |) + log(|ππ |)
(9)
Tingkat keberhasilan yang diperoleh dalam penelitian Mihalcea & Tarau (2004) adalah mendapatkan peringkat lima besar dari 15 sistem peringkas lainnya. Hal ini diperoleh dengan cara meringkas 567 data berita, kemudian hasil ringkasan diuji dengan metode recall-oriented understudy for gisting evaluation (ROUGE). Metode ROUGE bekerja dengan membandingkan teks asli berita dengan ringkasan manual yang dibuat oleh manusia. Hasil peringkasan menggunakan TextRank seperti pada tabel 2.2, berada pada posisi ke tiga. Posisi tersebut sudah cukup bagus dan berhasil untuk menentukan kalimat-kalimat penting dalam sebuah teks mengingat TextRank tidak memerlukan supervisi dari manusia atau pemahaman tentang bahasa teks yang akan diringkas. Tabel 2.2 TextRank dibandingkan dengan sistem lain (Mihalcea & Tarau, 2004) Sistem S27 S31 TextRank S28 S21 S29
basic (a) 0,4814 0,4715 0,4708 0,4703 0,4683 0,4502
ROUGE score β Ngram(1,1) stemmed (b) stemmed no-stopwords (c) 0,5011 0,4405 0,4914 0,4160 0,4904 0,4229 0,4890 0,4346 0,4869 0,4222 0,4681 0,4019
Untuk mendukung sistem dalam penelitian ini, algoritma TextRank akan diimplementasikan menggunakan library Python Sumy yang merupakan kumpulan
Universitas Sumatera Utara
15
beberapa metode untuk meringkas teks baik yang bersumber dari dokumen HMTL atau teks biasa (Belica, 2015). Periodic Tasks Pada sistem operasi unix-like seperti Linux memiliki sebuah fitur yang disebut cron yang berguna untuk menjalankan tugas tertentu secara berkala pada waktu tertentu. Cron merupakan sistem yang menjalankan instruksi tertentu pada satuan waktu yang ditentukan. Pada umumnya cron mengerjakan daftar perintah pada crontab (cron table). File ini berisi daftar perintah yang akan dijalankan oleh cron daemon pada jangka waktu yang ditentukan. Setiap perintah dalam crontab dipisahkan dengan pembatas carriage return atau garis baru. Seperti cron, Python celery juga memiliki kemampuan untuk menjalankan sebuah instruksi secara berkala. Pada penelitian ini, sistem cron yang digunakan berbasis Python celery. Python celery pertama kali diperkenalkan pada April 2009 dengan nama βcrunchyβ. Celery berfungsi untuk menjalankan fungsi Python (atau dalam hal ini disebut task) pada sistem secara asynchronous atau dengan kata lain beberapa task bisa berjalan secara bersamaan. Kemudian celery akan menjalankan proses di luar proses proses utama sistem atau proses yang berjalan di background atau di luar proses utama. Artinya user tetap bisa menjalankan sistem tanpa harus menunggu setiap setiap proses yang tidak memerlukan umpan balik seperti mengirim email atau mengolah gambar untuk disimpan di server. Dalam menjalankan proses, celery menggunakan message transport (broker) untuk mengirim dan menerima pesan yang biasanya berasal dari service yang terpisah (message broker). Message broker berfungsi untuk menyimpan task pada antrian sebelum dijalankan. Celery pada intinya dibangun dengan pertimbangan menggunakan message broker, RabbitMQ. Secara umum integrasi sistem dengan celery dapat digambarkan pada gambar 2.1.
Universitas Sumatera Utara
16
Message broker Producers
4
3
2
1
Celery
Consumer
Pending
Worker Pool
Started
*Result
Success/Failure
Gambar 2.1 Alur proses Celery (Smith, 2014) Pada gambar terdapat lima objek yang akan diproses Producers, Celery Queue, Consumer, Worker Pool, Result. 1. Producers menghasilkan task yang akan dijalankan misalnya web request atau fungsi yang dijalankan secara berkala (periodic task). 2. Celery queue yang termasuk dalam message broker akan menghimpun semua task yang masuk kemudian meneruskan terlebih dahulu task yang baru masuk, first in first out (FIFO). 3. Consumer pada celery bertindak untuk memproses task dari celery queue dan bersiap-siap untuk ke tahap selanjutnya. Secara default konsumer akan memproses empat task pada satuan waktu tertentu. Pada tahap ini seluruh task akan berubah status pending, siap untuk dijalankan. 4. Worker pool akan menjalankan semua task yang diberikan serta memberikan status started, task sedang berjalan. Status ini akan memberikan sinyal ke message broker untuk mengirim task selanjutnya. 5. Result adalah hasil dari task yang selesai dijalankan. Fungsi celery untuk menjalankan task secara berkala yang disebut dengan βcelery beatβ. Tidak seperti crontab yang menyimpan daftar perintah pada sebuah file dengan format teks biasa. Celery beat mempunyai dua opsi untuk mendaftarkan task
Universitas Sumatera Utara
17
berkala (periodic task) yaitu dalam setting objek Python dan dalam database SQL (Solem, 2015). Contoh penggunaan perintah crontab untuk periodic tasks pada celery dapat dilihat pada tabel 2.3. Tabel 2.3 Contoh penggunaan crontab (Solem, 2015) Contoh crontab() crontab(minute=0, hour=0)
Kegunaan Menjalankan perintah setiap menit. Menjalankan perintah setiap hari pada pukul 00.00 (tengah malam). crontab(minute=0, hour='*/3') Perintah dijalankan setiap tiga jam. crontab(minute='*/15') Setiap 15 menit perintah akan dijalankan. crontab(day_of_week='sunday') Setiap menit pada hari Minggu perintah akan dijalankan.
Contoh perintah dalam objek Python seperti pada gambar 2.2, perintah βadd-every-monday-morningβ akan dijalankan setiap hari senin pagi pukul 7.30. Dalam perintah tersebut fungsi yang akan dikerjakan adalah βtask.addβ, untuk menjumlahkan data pada βargsβ yaitu 16 dan 16.
Gambar 2.2 Contoh penggunaan Celery periodic tasks (Solem, 2015) Celery beat juga secara terus-menerus akan memeriksa daftar perintah yang terdapat di database sehingga jika ditemukan daftar perintah baru, celery beat akan menjalankannya sesuai waktu yang ditetapkan. Web Data Extraction Web data extraction atau web harvesting merupakan teknik yang digunakan untuk mengambil data tertentu dari website kemudian menyimpan dalam dalam komputer atau dalam database. Teknik ini bisa diatur untuk mengambil data tertentu sesuai kebutuhan, sehingga akan mempercepat proses pengumpulan data. Dalam kasus ini data yang dimaksud adalah teks isi berita dan juga URL berita
Universitas Sumatera Utara
18
Web data extraction bertindak sebagai layaknya web browser yang membuka halaman web, namun tidak menampilkan halaman web seperti biasa melainkan langsung mengambil data. Kriteria pengambilan data bisa saja mengambil langsung dari tag yang ditentukan dalam dokumen HTML. Namun hal tersebut tentu tidak akan bekerja pada website yang berbeda. Karena struktur dokumen HTML setiap website relatif berbeda. Python content extraction Secara manual teks berita dapat ditemukan dengan menelusuri tag HTML awal teks berita dimulai. Namun cara tersebut akan menguras waktu apabila banyak situs berita yang akan di ekstrak isinya. Walaupun setiap halaman berita memiliki bentuk layout yang berbeda-beda namun memiliki ciri lokasi teks berita yang sama yaitu banyaknya teks dalam tag HTML tertentu. Pada penelitian ini penulis menggunakan Python Goose dan Python Newspaper sebagai ekstraktor teks berita. 1. Python Goose Goose merupakan proyek open source yang dibuat oleh Jim Plush dan Robbie Coleman yang bekerja di gravity.com. Nama proyek diambil dari tokoh karakter film Top Gun pada Tahun 1986. Saat URL berita pertama kali di unduh, goose akan membersihkan dokumen supaya lebih mudah untuk diolah. Selanjutnya adalah menghilangkan bagian sosial media, bagian kolom komentar, mengubah tag HTML dari dalam teks, serta bagian-bagian lainnya yang bukan merupakan isi berita (Pfeiffer, 2014). Goose menghasilkan beberapa data dari halaman web seperti judul artikel, isi artikel, gambar utama, dan data lainnya. Python goose bekerja dengan menentukan bagian tidak penting dalam halaman. Untuk menentukan tingkat kepentingan dalam halaman web, goose bekerja dengan menghitung jumlah kata yang terkandung dalam sebuah tag HTML, kemudian memberikan skor pada tiap tag yang diperoleh. Langkah-langkah bagaimana goose menentukan bagian teks (konten halaman web) menurut (Pfeiffer, 2014) antara lain yang pertama adalah goose menentukan bagian non-konten dalam halaman seperti navigasi, sidebar, atau footer halaman web (ilustrasi seperti pada gambar 2.3). Setelah bagian bagian non-konten ditemukan, langkah yang kedua adalah menentukan bagian yang merupakan konten halaman dengan mengukur banyak teks dalam sebuah tag
Universitas Sumatera Utara
19
seperti terlihat pada gambar 2.4. Langkah terakhir adalah menentukan gambar utama halaman yang diilustrasikan seperti pada gambar 2.5.
Gambar 2.3 Goose menentukan bagian yang bukan isi berita (Pfeiffer, 2014) Langkah pertama seperti gambar 2.3 adalah menentukan bagian halaman yang bukan merupakan isi halaman. Pada umumnya halaman web memiliki bagian-bagian pembantu seperti bagian navigasi untuk navigasi halaman yang hanya berisi URL, sidebar yang juga berisi URL untuk konten website lainnya, kemudian bagian lainnya adalah bagian footer berisi informasi seputar website atau link-link utama website. Tahapan selanjutnya goose menentukan bagian yang merupakan konten halaman web. Pada tahap ini goose akan menghitung bobot setiap tag (objek dalam dokumen HTML) dalam bagian konten pada halaman web berdasarkan teks yang ada di dalamnya. Hasil dari tahap ini dapat diilustrasikan seperti pada gambar 2.4 ditandai dengan penambahan kotak merah pada bagian teks.
Gambar 2.4 Goose Menentukan Lokasi Isi Berita (Pfeiffer, 2014)
Universitas Sumatera Utara
20
Terakhir goose akan menentukan gambar utama halaman web. Untuk menentukan gambar utama halaman dari gambar-gambar yang ada, goose terlebih dahulu mempersempit ruang lingkup dokumen yang akan periksa. Karena sebelumnya yaitu pada langkah pertama dan langkah kedua bagian non-konten sudah dihilangkan, maka goose akan memfokuskan pencarian dimulai pada tag di mana teks didapatkan. Secara terus-menerus goose akan melakukan pencarian gambar tag-demi-tag keluar dari tag konten ditemukan. Penentuan gambar pada halaman diilustrasikan pada gambar 2.5 yang ditandai dengan kotak hijau.
Gambar 2.5 Goose Menandai Gambar Utama untuk Berita (Pfeiffer, 2014) Goose selesai menentukan isi berita sehingga terakhir menyimpan URL gambar dan teks berita yang didapatkan. Kemudian untuk menangani berita bersambung, dokumen HTML yang didapatkan oleh goose diperiksa terlebih dahulu apakah terdapat tag yang menandakan berita tersebut bersambung. Salah satu contoh dokumen berita bersambung yaitu seperti gambar 2.6, pada dokumen HTML halaman berita terdapat kelas (CSS class) dengan nilai βkcm-read-paging mt2β yang menandakan sebuah halaman berita bersambung. Setiap halaman berita memiliki indikasi berita bersambung yang berbeda, sehingga masing-masing halaman diproses dengan cara yang berbeda-beda.
Gambar 2.6 Contoh indikasi halaman bersambung
Universitas Sumatera Utara
21
2. Python Newspaper Tidak seperti Python Goose, Python Newspaper memiliki fungsi untuk mendapatkan semua alamat URL dari halaman website yang tuju. Hal tersebut dilakukan dengan beberapa tahap yaitu pertama dimulai dari mengakses halaman website dengan hyper text transfer protocol (HTTP). Halaman website yang diakses tidak ditampilkan dalam web browser melainkan Newspaper akan menelusuri source code dokumen hyper text markup language (HTML) website tersebut. Kemudian setiap tag βaβ yang didapatkan akan diambil nilai property βhrefβ di mana alamat URL berada. Dari semua URL yang didapatkan seterusnya akan diseleksi berdasarkan domain website yang diakses sebelumnya. Android Sistem operasi dari Google yang dikembangkan dari kernel Linux
mempunyai
penggunaan yang sangat pesat. Android merupakan perangkat lunak open source dengan dukungan komunitas yang besar sehingga dapat dimodifikasi sesuai kebutuhan. Seiring perkembangannya Android sekarang tidak hanya digunakan pada perangkat handheld seperti Smartphone dan Smart Watch, namun dengan cepat telah memasuki ranah otomotif, hingga perangkat elektronik pada rumah tangga seperti kulkas, mesin cuci dan lainnya. Sehingga tidak bisa dihindari fragmentasi perangkat yang menggunakan Android membuat pengembang aplikasi akan mengalami kesulitan untuk mendukung semua perangkat. Di sisi lain hal ini tentu juga merupakan tantangan dengan profit yang menggiurkan karena pangsa pasar yang didominasi perangkat Android. Harga perangkat yang relatif murah membuat penjualan melonjak tinggi yang mengakibatkan meningkatnya kebutuhan akan aplikasi Android. Pada Juli 2013, terdapat lebih dari 50 miliar download aplikasi yang disediakan di pasar aplikasi Google, Play Store (PhoneArena, 2013). Pengembangan aplikasi untuk Android bisa dilakukan pada semua sistem operasi populer mulai dari Windows, Linux, Mac OS, dan sebagainya. Software development kit (SDK) Android menyediakan seluruh alat yang dibutuhkan untuk membuat sebuah aplikasi. SDK berisi mulai dari source code Android, dokumentasi untuk pembelajaran, contoh aplikasi, tool untuk debugging, image sistem operasi, dan lain sebagainya. Umumnya aplikasi Android dibuat menggunakan Java dan extensible markup language
Universitas Sumatera Utara
22
(XML). Namun tidak menutup kemungkinan untuk menggunakan bahasa pemrograman yang lain, beberapa di antaranya adalah: ο·
Basic4Android atau B4A menggunakan Visual Basic. B4A dikembangkan oleh Anywhere Software Ltd.
ο·
Corona SDK, dibuat oleh Walter Luh dari Corona Labs Inc. Pengembangan dengan Corona SDK menggunakan bahasa pemrograman Lua, yang berjalan di atas C++/OpenGL.
ο·
Delphi pengembangan menggunakan Object Pascal yang dikembangkan oleh Embarcadero.
ο·
Kivy, pengembangan aplikasi menggunakan Python.
ο·
RubyMotion, pengembangan aplikasi menggunakan Ruby.
ο·
Xamarin, menggunakan C# untuk membuat aplikasi Android.
ο·
PhoneGap, menggunakan pemrograman web seperti HTML atau CSS. Pada penelitian ini lingkungan pengembangan yang digunakan adalah berbasis
Java dan XML, yang merupakan lingkungan pengembangan asli yang disediakan Google untuk pembuatan aplikasi Android. Library pendukung Dalam penelitian, pengembangan aplikasi Android menggunakan beberapa library untuk mendukung proses pengembangan yaitu Google Volley, OkHttp, Google Gson, dan PushBots. 1.
Google Volley
Volley merupakan library untuk melakukan akses jaringan melalui protokol HTTP. Penggunaan volley secara otomatis mengerjakan permintaan jaringan pada pemrosesan background, sehingga proses utama untuk menampilkan user interface tidak terganggu. Permintaan ke jaringan yang digunakan dalam penelitian antara lain metode request GET. Metode ini akan meminta ke jaringan untuk mengambil data dari application programming interface (API). Kemudian data yang diperoleh diproses untuk persiapan ditampilkan pada aplikasi. Proses yang dilakukan mencakup penyimpanan data dari API ke dalam Application variable, sehingga data tersedia untuk seluruh halaman aplikasi Android (Android Activity). Hal ini membuat aplikasi tidak perlu lagi request
Universitas Sumatera Utara
23
ke server untuk data yang sudah di request sebelumnya sehingga akan meningkatkan performa aplikasi serta efisiensi penggunaan jaringan. 2.
OkHttp
Alternatif untuk melakukan request jaringan atau mengombinasikan dengan Volley adalah menggunakan OkHttp. Library ini digunakan untuk request jaringan dengan metode PATCH. Metode yang berfungsi untuk memperbarui sebagian data yang ada pada server melalui API yang disediakan. OkHttp akan melakukan request kembali jika terdapat masalah pada jaringan, secara otomatis masalah-masalah umum seperti jaringan yang melambat dan waktu request yang habis akan ditangani. Kemudian OkHttp juga mendukung koneksi dengan menggunakan beberapa alamat IP, sehingga jika koneksi dengan salah satu alamat IP gagal maka alamat IP yang lain akan dicoba. 3.
Google Gson
Data yang diperoleh dari API berupa javascript object notation (JSON) akan diubah menjadi objek Java dengan menggunakan Gson. Begitu juga sebaliknya untuk mengirim data ke server objek Java yang dibuat diubah ke string sebelum mengirim melalui jaringan. 4.
PushBots
PushBots berguna untuk memberikan fitur push notification pada aplikasi Android. Fitur ini menggunakan pelayanan google cloud messaging (GCM), sebagai perantara untuk mengirim notifikasi pada perangkat Android. GCM memberikan pelayanan untuk meneruskan data yang dikirim dari server aplikasi ke perangkat Android yang terhubung Internet. Secara sederhana, arsitektur Pushbots dapat digambarkan pada gambar 2.7.
Universitas Sumatera Utara
24
Gambar 2.7. Arsitektur PushBots (Google Developers, 2015) Pada gambar 2.7, App Server adalah posisi PushBots untuk mengirim pesan ke GCM, kemudian GCM Connection Server akan meneruskan pesan ke perangkat (client app) dan untuk menghasilkan notifikasi. Kemudian dari sistem yang dibangun digunakan modul Python PushBots berguna untuk mengakses API yang disediakan PushBots seperti mengirimkan pesan ke GCM server atau memperoleh informasi aplikasi klien terdaftar yang sedang aktif. Natural Language Toolkit (NLTK) Bahasa pemrograman yang dibuat oleh Guido van Rossum yaitu Python pertama kali muncul pada Tahun 1991. Bahasa pemrograman ini lebih dipilih dibandingkan dengan yang lainnya antara lain relatif mudah dipelajari, sintaks yang mudah dibaca, dan fungsi penanganan string yang bagus (Bird, Loper, & Klien, 2009). Python telah digunakan secara luas pada ranah pengolah data baik tekstual, image, multimedia, dan masih banyak lagi. Dalam bidang pengolahan teks, Python memiliki tools yang relatif banyak dan lengkap di antaranya natural language toolkit (NLTK). Pada awalnya NLTK didesain untuk keperluan bahan ajar pada program studi Linguistik atau Ilmu Komputer, namun seiring perkembangannya NTLK telah banyak digunakan dalam research and development (RnD). Sehingga pengembang perangkat lunak/ilmuwan komputer bisa lebih fokus pada fungsional aplikasi yang akan dibuatnya daripada membuat pemroses teks dari awal. Karena NLTK diklaim merupakan peralatan (tools) yang paling efisien untuk keperluan natural processing language (NLP) atau pengolahan bahasa manusia termasuk text processing di dalamnya.
Universitas Sumatera Utara
25
REST Representational state transfer (REST) merupakan arsitektur sebuah sistem aplikasi perangkat lunak yang menyediakan antarmuka (interface) untuk pendistribusian data atau proses. REST pertama kali diperkenalkan oleh Roy Fielding pada Tahun 2000 dalam disertasinya. Hingga sekarang REST banyak digunakan untuk mendistribusikan data yang pada umumnya melalui hypertext transfer protocol (HTTP). Sistem yang menggunakan REST disebut RESTful API. Sistem ini menyediakan fitur untuk mengakses server baik untuk menambah, mengubah, atau menghapus
data
menggunakan
uniform
resource
locator
(URL)
untuk
merepresentasikan objek database di server. Untuk menggunakannya, client akan memakai beberapa metode HTTP tertentu berdasarkan aktivitas yang akan dilakukan. Beberapa metode HTTP RESTful API yaitu GET, POST, PUT, PATCH, DELETE. ο·
GET, metode yang digunakan untuk memperoleh data.
ο·
POST, request ke server untuk menerima data yang dikirim. Data ini kemudian disimpan di database.
ο·
PUT, seperti POST, namun data yang diterima diperiksa terlebih dahulu apakah sudah ada dalam database.
ο·
PATCH, request dengan metode ini ditujukan untuk memodifikasi sebagian data yang ada.
ο·
DELETE, metode untuk menghapus data tertentu pada database. Setiap aplikasi client melakukan request ke server, data akan dikemas dalam
beberapa format seperti extensible markup language (XML), javascript object notation (JSON), atau teks biasa (plain text). Untuk menyediakan pelayanan RESTful API pada aplikasi client (aplikasi Android). Pada penelitian ini digunakan framework Python Django, salah satu web framework pada pemrograman Python. Framework yang dimaksud adalah kumpulan kode program (misalnya yang terdiri dari class atau function) yang berguna untuk mempermudah proses pembuatan aplikasi web. Django didesain untuk membangun aplikasi web dengan penggunaan kode program seminimal mungkin pada pemrograman Python. Framework ini menerapkan pola desain yang memisahkan model view
Universitas Sumatera Utara
26
controller (MVC) untuk memudahkan dalam membangun dan mengembangkan aplikasi. Melalui aplikasi web yang dibuat menggunakan Django, terdapat modul pembantu pada Django yang disebut dengan Django REST framework. Modul ini berfungsi untuk mendaftarkan model-model database dalam bentuk URL sehingga bisa diakses oleh aplikasi client atau bahkan aplikasi di luar sistem yang mengetahui alamat URL API tersebut. Evaluasi Hasil Ringkasan Evaluasi hasil ringkasan merupakan bagian penting dalam sebuah sistem peringkasan. Sehingga hasil ringkasan yang dibuat dapat diketahui tingkat keberhasilannya walaupun tidak semua hasil dari teknik evaluasi bisa diterima oleh peneliti peringkas teks otomatis. Secara umum metode evaluasi pada peringkasan teks otomatis dapat dibagi menjadi dua kategori yaitu evaluasi intrinsic dan evaluasi extrinsic (Steinberger & JeΕΎek, 2012). Metode evaluasi instrinsic merupakan metode evaluasi pada hasil sistem itu sendiri, atau dalam kata lain evaluasi dilakukan dengan menganalisis hasil ringkasan yang diperoleh. Kemudian metode evaluasi extrinsic, hasil dinilai berdasarkan tingkat kegunaan fungsi sistem. Penelitian ini menggunakan metode evaluasi intrinsic dengan penggabungan metode recall (R), precision (P), dan F-Score (F). Dalam konteks peringkasan teks otomatis, recall merupakan jumlah bagian teks (kalimat) relevan dari teks asli berdasarkan jumlah semua kalimat dalam teks referensi, precision merupakan jumlah kalimat relevan dari semua kalimat yang didapatkan dari teks asli, dan F-Score adalah bobot nilai rata-rata dari nilai recall dan precision. Nilai F-Score yang paling baik adalah 1 dan paling buruk adalah 0. Kemudian metode-metode tersebut dibandingkan dengan hasil ringkasan menggunakan algoritma TextRank yang dilakukan oleh (Mihalcea & Tarau, 2004). Pada persamaan (10) berikut perhitungan F-Score, precision, dan recall. πΉ=
|π β© π| |π β© π| 2ππ
;π = ;π
= |π| |π| (π + π
)
(10)
Dari persamaan (10), π adalah hasil ringkasan menggunakan algoritma TextTeaser, kemudian π merupakan hasil ringkasan referensi (algoritma TextRank).
Universitas Sumatera Utara
27
Penelitian Terdahulu Berdasarkan kenyataan bahwa arus informasi yang kian pesat tidak terkecuali data teks. Membuat ilmuwan komputer tertantang untuk mengurangi dampak information overload tersebut salah satunya dengan menekan porsi teks yang ada dengan jalan meringkasnya. Beberapa penelitian yang penulis rujuk dalam penelitian ini dapat dilihat pada tabel 2.4. Penelitian peringkasan teks otomatis pertama kali dilakukan oleh Luhn pada Tahun 1956. Hingga saat ini peringkasan teks otomatis dalam bahasa Indonesia merupakan bidang riset yang sedang banyak dilakukan oleh peneliti. Pada umumnya penelitian peringkasan teks otomatis menggunakan metode yang beragam namun memiliki satu tujuan yang sama yaitu meningkatkan presisi hasil ringkasan dan performa komputasi algoritma yang digunakan. Tingkat presisi hasil ringkasan diperoleh dari membandingkan hasil ringkasan yang dihasilkan oleh mesin dengan hasil ringkasan secara manual oleh ahli di dalamnya. Salah satu peneliti yaitu (Aristoteles, 2014), memanfaatkan 11 fitur teks kemudian diolah dengan metode regresi logistik biner. Penelitian ini memanfaatkan sumber data korpus statis dari penelitian yang dilakukan oleh (Ridha, 2002). Penelitian yang dilakukan Riandayani et al. (2014) membandingkan metode Fuzzy Logic dan fuzzy c-means (FCM). Peringkasan pada penelitian ini memanfaat 7 fitur kalimat yaitu sentence position, sentence length feature, title feature, term weight, entity word or term, numerical data, thematic word. Skor masing-masing kalimat dalam teks akan dioptimalkan oleh metode-metode yang digunakan. Kemudian hasil dari fuzzy logic dan fuzzy c-means dibandingkan dengan ringkasan manual yang dihasilkan oleh manusia. Fachrurrozi et al. (2013) menggunakan metode frequent term based dengan cara mengidentifikasi kemudian mengekstraksi informasi penting dari teks. Pada sistem yang dibuat seluruh kata benda dan kata kerja dihitung, karena menurut Fachrurrozi et al. (2013) kedua kata ini merepresentasikan isi teks. Dengan pendekatan statistik, judul teks dan lokasi kalimat tersebut dalam teks juga digunakan karena ini merupakan konsep dasar dari tingkat kepentingan kalimat dalam teks. Balabantaray et al. (2012) melakukan penelitian untuk meringkas teks bahasa Odia menggunakan teknik pendekatan secara statistik melalui proses stemming, kemudian setiap kalimat dalam teks diberikan bobot yang berguna untuk menentukan apakah
Universitas Sumatera Utara
28
kalimat tersebut masuk dalam teks ringkasan atau tidak. Kalimat dalam teks ringkasan tetap mengikuti posisi sistematis penulisan pada teks asli. Penelitian yang dilakukan oleh Mustaqhfiri et al. (2012) menggunakan metode maximum marginal relevance. Melalui lima tahap preprocessing yaitu pemecahan kalimat, case folding, tokenizing, filtering, dan stemming. Proses selanjutnya menghitung bobot TF-IDF, bobot query relevance dan bobot similarity. Metode maximum marginal relevance berfungsi untuk mengurangi redundansi dalam menentukan peringkat kalimat. Data yang digunakan dalam penelitian ini berasal dari berita online berbahasa Indonesia sebanyak 30 berita yang disimpan di media penyimpan komputer. Penelitian yang dilakukan oleh (Zaman & Winarko, 2011) memanfaatkan bobot fitur kalimat kemudian menganalisisnya. Terdapat lima fitur kalimat yang digunakan dalam penelitian ini yaitu Log-TFISF (term frequency index sentence frequency), posisi kalimat, sentence overlap, title overlap, dan panjang kalimat. Kelima fitur ini akan menentukan hasil ringkasan dengan kalimat yang koheren. Dokumen yang digunakan dalam penelitian ini berasal dari dokumen penelitian Kurniawan (2003) sebanyak 50 dokumen, di mana dokumen tersebut berasal dari situs harian duta masyarakat online.
Tabel 2.4 Penelitian terdahulu No.
Peneliti
Tahun
1.
Zaman, B. & Winarko, E.
2011
2.
Balabantaray, R. C., Sahoo, B., Sahoo, D. K., Swain, M. Mustaqhfiri, M., Abidin, Z., & Kusumawati, R. Fachrurrozi, M., Yusliani, N., & Yoanita, R. U. Aristoteles, Widiarti, & Wibowo D.E. Riandayani, Putra, & Buana
2012
3.
4.
5. 6.
Metode yang Digunakan 5 Fitur teks, Log term frequency index sentence frequency (Log-TFISF) Stemmer
2012
Maximum Marginal Relevance
2013
Frequent Term Based
2014
11 Fitur Teks, Binary Logistic Regression 7 Fitur Teks, Fuzzy Logic, Fuzzy C-Means (FCM)
2014
Sumber Data 50 dokumen penelitian Kurniawan (2003) 30 dokumen
30 berita Tempo Interaktif (Januari 2009 β Juni 2009) 30 berita nasional
Korpus penelitian Ridha (2002) 20 contoh teks berita.
Universitas Sumatera Utara