LAMPIRAN I
DAFTAR JUDUL BERITA
No ID Judul Berita Tgl
D0 25 Microsoft Siapkan Windows di "Awan"? 29-07-2014
D1 27 Windows 9 Meluncur April 2015? 29-07-2014
D2 30 Alasan Kembalinya Tombol Start di Windows 29-07-2014
D3 33 Tampilan Terbaru Windows 8.1 Bocor 29-07-2014
D4 36 Acer Bikin Chromebook Layar Sentuh 29-07-2014
D5 39 CEO Acer Mengundurkan Diri 29-07-2014
D6 42 Punya Bos Baru, BlackBerry Belum Menyerah 29-07-2014
D7 45 Siapa Saja Calon Pembeli BlackBerry? 29-07-2014
D8 49 Ini Bukti BBM Digandrungi Pengguna Android dan iOS 29-07-2014
D9 52 OpenSnap, Jejaring Sosial untuk Pecinta Kuliner 29-07-2014
D10 55 Google Luncurkan Aplikasi Camera 29-07-2014
D11 58 Di AS, Android Lebih "Merakyat" dari iPhone 29-07-2014
D12 61 Lihat Pertumbuhan Android, Apple Takut? 29-07-2014
D13 64 Samsung: Apple Salah Sasaran 29-07-2014
D14 81 Korban Antivirus Palsu di Play Store Dapat Ganti Rugi 29-07-2014
D15 84 Pengguna WhatsApp Sudah Setengah Miliar 29-07-2014
D16 88 Facebook Messenger Akhirnya Sambangi Windows Phone 29-07-2014
D17 91 Beginikah Tampilan iOS 8 di iPhone 6? 29-07-2014
D18 94 2048, Game "Nyandu" yang Ternyata Meniru 29-07-2014
D19 97 Coba Tizen, Samsung Berani Lepas Android? 29-07-2014
D20 100 Duh, BBM di Android dan iOS Terjangkit "Heartbleed" 29-07-2014
D21 103 Apple Jual 44 Juta iPhone, 4S Masih Primadona 29-07-2014
D22 106 Samsung Tuding FaceTime Apple Ilegal 29-07-2014
D23 109 Google Bersedia Urunan Bayar Denda Samsung 29-07-2014
D24 112 Apple dan Google Rebutan "Game" Eksklusif 29-07-2014 D25 116 Perang Paten, 10 Rahasia Apple-Samsung Terungkap 29-07-2014 D26 119 Perempuan Indonesia Paling Aktif di Toko "Online" 29-07-2014
D27 122 25 April, Nokia Resmi Milik Microsoft 29-07-2014
D28 126 Microsoft Sudah Punya Nama Baru untuk Nokia 29-07-2014
D29 129 Yuk, Jualan Stiker Line Bikinan Sendiri 29-07-2014
D30 132 Ini Alasan Galaxy S5 Tetap Setia Pakai Plastik 29-07-2014
D31 135 Paling Banyak Dipakai "Browsing", iPad atau Galaxy Tab? 29-07-2014
D32 138 LG Boyong 3 Ponsel Android KitKat ke Indonesia 29-07-2014
D33 141 OnePlus One, Android Murah "Pembunuh Nexus" 29-07-2014 D34 144 Kamera Lytro Illum, Jepret Dulu Fokus Belakangan 29-07-2014
D35 147 HP Ramaikan Pasar Gadget Android Indonesia 29-07-2014
No ID Judul Berita Tgl
D39 159 Kecepatan Internet Indonesia Jauh di Bawah Rata-rata Dunia 29-07-2014
D40 162 Path Sudah Bisa Punya 500 Teman? 29-07-2014
D41 165 Internet Dunia Makin Kencang 29-07-2014
D42 168 Cara Telkom Hadirkan Internet Kencang di IndiHome 29-07-2014 D43 171 Serangan Cyber Indonesia Turun, "Juara" 4 Sedunia 29-07-2014
D44 174 Game "The Raid II" Berhadiah Xbox One 29-07-2014
D45 177 Menghindari Kemacetan dengan Belanja Online? 29-07-2014
D46 180 Twitter Resmi Perkenalkan Tampilan Baru 29-07-2014
D47 183 Inilah "Software" Anti-sadap yang Dipakai Snowden 29-07-2014
D48 186 Dijual Rp 17 Juta, Google Glass Ludes 29-07-2014
D49 192 German Burgos pelatih pertama gunakan Google Glass 29-07-2014 D50 195 Google Glass segera hadir dalam jangka waktu dekat 29-07-2014 D51 199 Akhirnya, Dolphin Browser versi 11 resmi dirilis 29-07-2014 D52 202 Microsoft: Pakai software bajakan sama saja rugikan diri sendiri 29-07-2014 D53 207 Tak perlu khawatir jika smartphone Nokia mati total 29-07-2014
D54 210 Jangan asal download FileZilla di internet! 29-07-2014
D55 213 McAfee Internet Security 2014 diluncurkan di Indonesia 29-07-2014
D56 216 Nokia Resmi Tak Buat Ponsel Lagi 29-07-2014
D57 219 Dicaplok Microsoft, Bagaimana Nasib Karyawan Nokia? 29-07-2014
D58 222 Bos Nokia Lempar iPhone ke Lantai 29-07-2014
D59 224 Microsoft Dukung Windows Phone 8 Cuma Sampai 2014 29-07-2014 D60 227 Lumia 720, Windows Phone 8 Berbekal Kamera Unik 29-07-2014 D61 229 Microsoft Ungkap Statistik Aplikasi Windows Phone 29-07-2014
D62 232 Android KitKat Tumbuh, Jelly Bean Berkuasa 29-07-2014
D63 237 WhatsApp Tak Bisa Diinstal di Windows Phone 8.1? 12-08-2014
D64 240 Dalam Sehari WhatsApp Kelola 64 Miliar Pesan 12-08-2014
D65 243 Fitur Telepon Gratis Segera Tersedia di WhatsApp? 12-08-2014 D66 246 Diam-diam, Microsoft Juga Ingin Pinang WhatsApp 12-08-2014 D67 250 Path di BlackBerry Belum Ada "Gara-gara" Android? 12-08-2014
D68 253 Ini Dia, Kebiasaan Orang Indonesia di Path 12-08-2014
D69 256 Foursquare Akan Hapus Fitur "Check-in" 12-08-2014
D70 259 Aplikasi Mirip Foursquare Ini Punya "Badges" Cinta Indonesia 12-08-2014 D71 261 Facebook Akuisisi Gowalla Untuk Saingi Foursquare? 12-08-2014
D72 263 Penerus Motorola Moto G Usung LTE? 12-08-2014
D73 266 XL Umbar Diskon BlackBerry Z3 Jakarta 12-08-2014
D74 269 Dummy iPhone 6 Beredar, Tampilkan Wujud Utuh 12-08-2014
D75 272 Terungkap, Biaya Komponen Google Glass Cuma Rp 900 Ribuan 12-08-2014
D76 275 Penampakan LG G3 Kembali Muncul, Lebih Jelas 12-08-2014
D77 276 Penampakan LG G3 Kembali Muncul, Lebih Jelas 12-08-2014
D78 279 LG Rilis G Watch di Eropa Bulan Juni 12-08-2014
D79 282 Desain iPhone 6 Bakal Mirip iPod Touch Generasi ke-5? 12-08-2014 D80 285 Galaxy K Zoom Resmi Meluncur, Ini Spesifikasi Lengkapnya 12-08-2014
D81 288 Galaxy K Zoom Siap Meluncur Akhir Bulan Ini 12-08-2014
No ID Judul Berita Tgl
D83 294 "Selfie" Jadi Gampang dengan Galaxy K Zoom 12-08-2014
D84 297 Ini Spesifikasi Lengkap Galaxy K Zoom 12-08-2014
D85 301 Iklan Samsung Cibir Kamera iPhone 5S 12-08-2014
D86 304 Spesifikasi Lengkap BlackBerry Z3 Jakarta 12-08-2014
D87 307 Nokia Dibeli Microsoft, Stephen Elop Dapat Rp 380 Miliar 12-08-2014
D88 310 Uang Elektronik Indosat Bisa Tarik Tunai 12-08-2014
D89 313 Uang Elektronik Indosat Bisa Dipakai di Sevel 12-08-2014
D90 316 Samsung Kalahkan Gabungan 4 Produsen Ponsel 12-08-2014
D91 319 LG dan Lenovo Kuntit Dua Raja Ponsel Dunia 12-08-2014
D92 322 Dibeli Microsoft, Nokia Mulai "Ketahuan Belangnya" 12-08-2014 D93 325 Dijuluki "Penggali Kubur Nokia", Ini Kata Stephen Elop 12-08-2014 D94 328 Rajeev Suri, CEO Baru Nokia "Non-Ponsel" 12-08-2014
D95 331 Microsoft Masih Bingung Penamaan Nokia 12-08-2014
D96 334 Penjualan iPad Merosot, Ini Pembelaan Bos Apple 12-08-2014 D97 337 iPhone 5 Bermasalah, Apple Tawarkan Program Servis Gratis 12-08-2014
D98 340 Apple Kantongi Profit Rp 118,3 Triliun 12-08-2014
D99 343 iWatch Datang, iPod Ditendang? 12-08-2014
D100 346 Setengah Pengguna IE Dunia Kena Bug Mematikan Ini 12-08-2014 D101 348 Disebut Hambat Inovasi, Selandia Baru Larang Paten untuk Software 12-08-2014 D102 355 Microsoft Akhirnya Keluarkan "Obat" untuk IE 12-08-2014 D103 360 Microsoft Bagikan Cara Hindari "Bug" IE 12-08-2014 D104 363 AS dan Inggris Larang Warganya Pakai Internet Explorer (IE) 12-08-2014 D105 367 Microsoft Akui Ada "Lubang" di Internet Explorer 12-08-2014
D106 370 Agustus, Start Menu Kembali ke Windows? 12-08-2014
D107 373 Akun Twitter Menyebalkan? "Mute" Saja 12-08-2014
D108 376 Begini Gambaran Facebook pada Masa Depan 12-08-2014
D109 379 Twitter Akan Hadir dengan Tampilan Baru 12-08-2014
D110 382 Twitter: Foto dan Video Lebih Banyak Dapat Retweet 12-08-2014
D111 385 Bahasa Apa yang Paling Populer di Twitter? 12-08-2014
D112 388 Teman Jadi 500, Pendiri Path Singgung Indonesia 12-08-2014 D113 391 Anindya Bakrie Akui Beli Path Atas Saran Teman Kuliah 12-08-2014 D114 394 Path Angkat Bicara Soal Investasi Bakrie di Perusahaannya 12-08-2014 D115 397 Friend Limit Path Bakal Ditambah, Tak Lagi Eksklusif 150 12-08-2014
D116 401 Arab Saudi Akan Filter Konten YouTube 12-08-2014
D117 404 YouTube dan Google Search Mobile Akan Dibanjiri Iklan 12-08-2014 D118 407 Jegal YouTube, Yahoo Siapkan Layanan Video Online 12-08-2014 D119 410 Setelah Twitter dan Youtube, Turki Blokir DNS Google 12-08-2014
D120 413 Turki Blokir Youtube 12-08-2014
D121 417 Smartphone Android Nokia X Berhasil Diroot, Nokia Malah Senang 12-08-2014
D122 421 Smartphone Nokia Mengunakan Android Meluncur ke Pasaran dengan Tambahan Aplikasi Messenger WeChat 12-08-2014
D123 424 Smartphone Nokia Lumia 630 sudah Mendapat Persetujuan Sertifikasi
Kominfo dan Pemerintah Thailand 12-08-2014
No ID Judul Berita Tgl
D125 430 Microsoft akan Hentikan Dukungan untuk Smartphone Windows Phone 7.8 pada September 2014 12-08-2014
D126 433 Ini ternyata alasan Nokia pilih Windows Phone daripada Android 12-08-2014
D127 436 Setelah India, Smartphone Android Nokia X kini Resmi Dijual di Filipina 12-08-2014
D128 440 Kominfo Dikabarkan Sudah Melakukan Pengujian Terhadap
Smartphone Android Nokia Normandy 12-08-2014
D129 443 75 Persen Aplikasi Android Bisa Dijalankan di Smartphone Nokia X 12-08-2014
D130 446 Daftar Potongan Harga Smartphone Nokia di MBCS 12-08-2014
D131 449 Nokia belum Berhenti Luncurkan Smartphone Windows Phone 12-08-2014
D132 454 Pengguna iPhone Kuasai Trafik Internet 12-08-2014
D133 457 Waspada! Predator Anak Berkeliaran di Internet 12-08-2014
D134 460 Polisi Bongkar Pabrik Rekondisi BB dan iPhone di Penjaringan 12-08-2014
D135 463 iPhone Rusak Terjual Rp 750 Juta, Kok Bisa? 12-08-2014
D136 466 Konsumen Jepang Masih Tergila-gila iPhone 12-08-2014
D137 469 Apple Percepat Peluncuran iPhone 6 12-08-2014
D138 472 Apple Rekrut Pakar Kamera PureView Lumia 12-08-2014
D139 475 Manufaktur Apple Dapat 15% Orderan iPhone 6 12-08-2014
D140 478 Anak Sekolah Direkrut Jadi Kurir Penyelundup iPhone 12-08-2014 D141 481 Potensi Industri Serious Game Indonesia Mulai Diakui Dunia 12-08-2014
D142 484 Facebook Bisa Kenali Lagu dan Acara TV 12-08-2014
D143 487 iMessage Tak Mau Kirim Pesan, Apple Dituntut 12-08-2014
D144 491 BlackBerry Gelar Kompetisi Aplikasi "Kota Pintar" 12-08-2014
D145 494 Facebook Garap Aplikasi "Video Chat" 12-08-2014
D146 497 Gmail di Android Capai 1 Miliar Unduhan 12-08-2014
D147 500 WhatsApp Hilang dari Toko Aplikasi WIndows Phone 12-08-2014
D148 503 Bolt Hadirkan Dua Perangkat Baru 12-08-2014
D149 506 Surface Pro 3 Coba Lawan iPad dan MacBook 12-08-2014
D150 509 Intel: Jam Tangan Pintar Jangan Cuma Keren 12-08-2014
D151 512 Surface Pro 3 vs Tablet dan Laptop 12-08-2014
D152 515 Microsoft Batal Hadirkan Surface Mini 12-08-2014
D153 518 BlackBerry Z3 Mulai Dijual di Indonesia 12-08-2014
D154 521 BlackBerry Z3 Mulai Dijual di Indonesia 12-08-2014
D155 526 iPad Bakal Adopsi Fitur Tablet Microsoft? 12-08-2014
D156 529 Tiongkok Larang Windows 8 di Kantor Pemerintah 12-08-2014
D157 532 Joget di YouTube, 6 Orang Diciduk Polisi Iran 12-08-2014
D158 535 Windows 8 Dilarang di Tiongkok, Microsoft Bereaksi 12-08-2014
D159 538 Apple dan Samsung Tak Jadi "Baikan" 12-08-2014
D160 541 Apple Bukan Lagi Merek Paling Mahal di Dunia 12-08-2014
D161 544 Axioo Targetkan 5 Besar di Indonesia 12-08-2014
D162 547 Setelah Rajai Smartphone, Ini Incaran Samsung 12-08-2014
D163 550 Berapa Dana "Belanja" Google di Luar AS? 12-08-2014 D164 553 BlackBerry Tak Minat Bikin Ponsel "Murah" 12-08-2014
D165 556 Logo Lama Apple Dijual Rp 100 Juta 12-08-2014
No ID Judul Berita Tgl
D167 562 Desain Nexus 10 2 Beredar di Internet 12-08-2014
D168 565 Diretas, 150 Juta Pengguna eBay Harus Ganti Password 12-08-2014 D169 568 Lamban Respon Aksi Hacker, eBay Dikomplain di Twitter 12-08-2014
D170 571 eBay Diprotes Tampilkan Iklan Tiket ke Surga 12-08-2014
D171 574 Hacker Bobol eBay, Curi Data Penting Pengguna 12-08-2014
D172 577 eBay Perkenalkan Logo Anyarnya 12-08-2014
D173 580 Lenovo Klaim 'Gilas' Apple di Amerika Serikat 12-08-2014
D174 583 LG Optimus G Pro Sudah Update KitKat 12-08-2014
D175 586 Ini Daftar Ponsel yang Dapat Update Android KitKat 12-08-2014 D176 589 Samsung Dapat Update Android KitKat, Ini Daftar Perangkatnya 12-08-2014
D177 592 Facebook Rilis Fitur Keamanan Anti Bullying 12-08-2014
D178 595 Nokia: Menjual Divisi Perangkat Adalah Keputusan Tepat 12-08-2014 D179 598 WeChat Tawarkan Penyimpanan Cloud Berkapasitas 1 GB 12-08-2014 D180 601 Manufaktur Tiongkok Enggan Adopsi Windows Phone 12-08-2014 D181 604 Logitech Kecipratan Untung dari Perangkat Mobile 12-08-2014 D182 607 Logitech Pikat Gamer dengan Mouse G502 Proteus Core 12-08-2014 D183 610 5 Speaker Terbaru Logitech Hadir Dengan Karakteristik Unik 12-08-2014 D184 613 Logitech Segera Hadirkan Controller Game Untuk iPhone? 12-08-2014 D185 616 Status-status alay di Facebook kemungkinan akan berkurang 12-08-2014 D186 619 Hacker temukan cara hidupkan iPhone yang 'mati' 12-08-2014 D187 622 Segera, Facebook tambahkan fitur tag lagu otomatis 12-08-2014 D188 625 Google berencana pasang iklan di semua peralatan rumah 12-08-2014
D189 628 Facebook dan Twitter laksana lingkaran setan 12-08-2014
D190 631 Google kalahkan Apple sebagai brand termahal 2014 12-08-2014 D191 634 Cortana lebih unggul dibanding Siri dan Google Now 12-08-2014 D192 637 Beli Word Lens, Google ingin 'mentranslate' lebih baik 12-08-2014 D193 640 Pengguna iPhone lebih cerdas, pengguna Android paling berantakan 12-08-2014 D194 643 Berhati-hatilah apabila membeli iPhone dari China 12-08-2014 D195 646 Dibanding Android, pengguna iPhone banyak yang gunakan obat 12-08-2014
D196 649 Pertumbuhan Android KitKat menakjubkan 12-08-2014
D197 652 Apple tetap kuasai pasar smartphone Amerika Serikat 12-08-2014 D198 655 Gunakan paten baru, Apple tambahkan panel surya ke smartphone 12-08-2014 D199 658 Tiga bulan, Apple jual lebih dari 5000km iPhone 12-08-2014 D200 661 Kendati sering 'bertengkar', Apple tetap butuh Samsung 12-08-2014 D201 668 Jusuf Kalla: Pencitraan Itu sebelum Pemilu, Sekarang Kerja Keras 12-08-2014 D202 671 Kepala BPH Migas Minta Jokowi Naikkan Harga BBM 12-08-2014 D203 676 Pengunduran Diri Jokowi Diprediksi Akan Menemui Hambatan 12-08-2014 D204 679 Wall Street Dibuka Menguat, Indeks S&P 500 Sentuh Rekor Baru 12-08-2014
D205 682 Jero: BBM Nonsubsidi Berapapun Mau Beli, Ada 12-08-2014
D206 685 BBM Bersubsidi Langka, Ini Jawaban Pertamina 12-08-2014
D207 688 Tol Laut Jokowi Dimulai dari Indonesia Timur 12-08-2014
No ID Judul Berita Tgl
D211 701 Menu Saham yang Dapat di Lirik 12-08-2014
D212 704 Saham CPGT Diminta untuk Disuspensi 12-08-2014
D213 707 Pemegang Saham Cipaganti Minta Audit Khusus 12-08-2014
D214 710 Cipaganti Rekrut Direktur Independen CMNP 12-08-2014
D215 713 1 Lagi Pengurus Koperasi Cipaganti Jadi Tersangka 12-08-2014 D216 720 Jokowi Harus Hati-Hati Serangan dari Ekonomi Eropa 12-08-2014 D217 723 Pengusaha Tolak Kenaikan BBM jika untuk Belanja Pegawai 26-08-2014
D218 726 Ahmad Erani Yustika: Ekonomi yang Istimewa & Meleset di Masa SBY 26-08-2014
D219 729 Jokowi Effect Luntur, Rupiah Kembali Melemah 26-08-2014
D220 732 Jurus Jokowi-JK Genjot Sektor Kelautan dan Perikanan RI 26-08-2014 D221 735 Enam Prioritas Perbaikan Sektor Kelautan Era Jokowi-JK 26-08-2014 D222 738 Ini Dua Konsep Pelabuhan yang Bakal Dibangun Jokowi-JK 26-08-2014
D223 741 Soal ISIS, Indonesia Tunjukan Kekompakan 26-08-2014
D224 744 Kemlu Terus Cari Tahu Siapa WNI yang Ikut ISIS 26-08-2014
D225 747 Dubes Lintas Negara di Indonesia Bahas ISIS 26-08-2014
D226 750 Lima Warga Inggris Diduga Gabung ISIS 26-08-2014
D227 753 Qatar Bantah Mendanai ISIS 26-08-2014
D228 756 Iran Beri Solidaritas saat Irak Diserang ISIS 26-08-2014
D229 759 Cepat atau Lambat ISIS akan Serang Inggris 26-08-2014
D230 762 Ditahan Militan, AS akan Terus Berusaha Bebaskan Warganya 26-08-2014 D231 765 Bebaskan Curtis, AS Kerja Sama dengan Sejumlah Negara 26-08-2014 D232 768 AS-Inggris Bentuk Satuan Khusus untuk Hancurkan ISIS 26-08-2014 D233 771 Mengapa AS Tak Mau Bayar Tebusan untuk Bebaskan James Foley? 26-08-2014 D234 774 Pasukan Komando AS Gagal Bebaskan Wartawan yang Dipenggal ISIS 26-08-2014
D235 777 Ribuan Pelayat Hadiri Pemakaman Michael Brown 26-08-2014
D236 780 Obama Kirim 3 Perwakilan ke Upacara Pemakaman Michael Brown 26-08-2014 D237 783 Iran: "Drone" Israel Diterbangkan dari Negara Lain 26-08-2014
D238 787 Israel Rubuhkan Bangunan Tertinggi di Gaza 26-08-2014
D239 790 Serangan Israel Bunuh Tiga Komandan Hamas 26-08-2014
D240 793 Menang 2-0, Madrid Buka Sejarah Persaingan dengan Cordoba 26-08-2014
D241 796 Susunan Pemain Atletico vs Real Madrid 26-08-2014
D242 799 Susunan Pemain Real Madrid Kontra Cordoba 26-08-2014
D243 802 Susunan Pemain Madrid Kontra Atletico 26-08-2014
D244 805 Babak I, Benzema Bawa Madrid Ungguli Cordoba 26-08-2014
D245 808 Jadwal Siaran Langsung Kualifikasi Liga Champions 26-08-2014 D246 811 "Arsenal Jalani Misi Sulit untuk Lolos ke Liga Champions" 26-08-2014 D247 814 Menang Tipis, Porto Buka Peluang Lolos Liga Champions 26-08-2014 D248 817 Susunan Pemain Duel Kualifikasi Liga Champions Lille vs Porto 26-08-2014 D249 820 Madrid Akan Jadi Tim Pertama Pertahankan Trofi Liga Champions 26-08-2014
D250 822 Liga Champions Sangat Penting Bagi Madrid 26-08-2014
D252 826 Atletico Madrid Siap Ajukan Banding! 26-08-2014
D253 829 Atletico Tebar Ancaman 26-08-2014
D254 832 Atletico Terancam Kehilangan Bek Lagi 26-08-2014
No ID Judul Berita Tgl
D256 838 Jacksen Tiago: Kami sukses manfaatkan kelemahan Kuwait SC 26-08-2014 D257 841 Review AFC: Hajar Kuwait, Persipura Cetak Sejarah 26-08-2014 D258 844 Bawa nama Indonesia, Persipura target menang di Kuwait 26-08-2014 D259 847 Real Madrid akan Terus Datangkan Pemain Top Dunia 26-08-2014
D260 850 Performa Madrid Akan Meningkat Seiring Waktu 26-08-2014
D261 855 Auto Draft 26-08-2014
D262 856 Tiba di Manchester, Di Maria Segera Geser Fernando Torres 26-08-2014
D263 860 Ini Alasan Balotelli Gabung ke Liverpool 26-08-2014
LAMPIRAN II
DAFTAR STOPWORD
Daftar stopword diambil dari penelitian Fadillah Z Tala dalam jurnalnya “A Study of stemming Effects on Information Retrieval in Bahasa Indonesia”.
ada bukankah hingga maupun pihak seringnya yakni adalah bukanlah ia melainkan pihaknya serta yang adanya bukannya ialah melakukan pukul serupa
adapun bulan ibarat melalui pula sesaat agak bung ibaratkan melihat pun sesama agaknya cara ibaratnya melihatnya punya sesampai agar caranya ibu memang rasa sesegera akan cukup ikut memastikan rasanya sesekali akankah cukupkah ingat memberi rata seseorang akhir cukuplah ingat-ingat memberikan rupanya sesuatu akhiri cuma ingin membuat saat sesuatunya akhirnya dahulu inginkah memerlukan saatnya sesudah aku dalam inginkan memihak saja sesudahnya akulah dan ini meminta sajalah setelah amat dapat inikah memintakan saling setempat amatlah dari inilah memisalkan sama setengah anda daripada itu memperbuat sama-sama seterusnya
andalah datang itukah
mempergunak
an sampai-sampai setibanya
antaranya demikian jadilah
mempersiapka
n sampaikan
setidak-tidaknya
apa demikianlah jadinya
mempersoalka
n sana setidaknya
apaan dengan jangan
mempertanya
kan sangat setinggi apabila depan jangankan mempunyai sangatlah seusai apakah di janganlah memulai satu sewaktu
apalagi dia jauh
memungkinka
n saya siap apatah diakhiri jawab menaiki sayalah siapa artinya diakhirinya jawaban menambahkan se siapakah asal dialah jawabnya menandaskan sebab siapapun asalkan diantara jelas menanti sebabnya sini atas diantaranya jelaskan menanti-nanti sebagai sinilah atau diberi jelaslah menantikan sebagaimana soal ataukah diberikan jelasnya menanya sebagainya soalnya ataupun diberikannya jika menanyai sebagian suatu awal dibuat jikalau menanyakan sebaik sudah awalnya dibuatnya juga mendapat sebaik-baiknya sudahkah bagai didapat jumlah mendapatkan sebaiknya sudahlah bagaikan didatangkan jumlahnya mendatang sebaliknya supaya bagaimana digunakan justru mendatangi sebanyak tadi bagaimanak
ah diibaratkan kala mendatangkan sebegini tadinya bagaimanap
un diibaratkannya kalau menegaskan sebegitu tahu bagi diingat kalaulah mengakhiri sebelum tahun bagian diingatkan kalaupun mengapa sebelumnya tak bahkan diinginkan kalian mengatakan sebenarnya tambah
bahwa dijawab kami
mengatakanny
banyak dikerjakan kapankah
mengibaratka
n sebutlah tanya
bapak diketahui kapanpun
mengibaratka
nnya sebutnya tanyakan baru diketahuinya karena mengingat secara tanyanya bawah dikira karenanya mengingatkan secukupnya tapi beberapa dilakukan kasus menginginkan sedang tegas begini dilalui kata mengira sedangkan tegasnya beginian dilihat katakan mengucapkan sedemikian telah
beginikah dimaksud katakanlah
mengucapkan
nya sedikit tempat
beginilah dimaksudkan katanya
mengungkapk
an sedikitnya tengah
begitu
dimaksudkanny
a ke menjadi seenaknya tentang begitukah dimaksudnya keadaan menjawab segala tentu begitulah diminta kebetulan menjelaskan segalanya tentulah begitupun dimintai kecil menuju segera tentunya bekerja dimisalkan kedua menunjuk seharusnya tepat belakang dimulai keduanya menunjuki sehingga terakhir belakangan dimulailah keinginan menunjukkan seingat terasa belum dimulainya kelamaan menunjuknya sejak terbanyak belumlah dimungkinkan kelihatan menurut sejauh terdahulu benar dini kelihatannya menuturkan sejenak terdapat
benarkah dipastikan kelima
menyampaika
n sejumlah terdiri benarlah diperbuat keluar menyangkut sekadar terhadap berada diperbuatnya kembali menyatakan sekadarnya terhadapnya berakhir dipergunakan kemudian menyebutkan sekali teringat berakhirlah diperkirakan kemungkinan menyeluruh sekali-kali teringat-ingat berakhirnya diperlihatkan kemungkinannya menyiapkan sekalian terjadi berapa diperlukan kenapa merasa sekaligus terjadilah berapakah diperlukannya kepada mereka sekalipun terjadinya berapalah dipersoalkan kepadanya merekalah sekarang terkira berapapun dipertanyakan kesampaian merupakan sekarang terlalu berarti dipunyai keseluruhan meski sekecil terlebih berawal diri keseluruhannya meskipun seketika terlihat berbagai dirinya keterlaluan meyakini sekiranya termasuk berdatangan disampaikan ketika meyakinkan sekitar ternyata beri disebut khususnya minta sekitarnya tersampaikan
berikan disebutkan kini mirip
sekurang-kurangnya tersebut berikut disebutkannya kinilah misal sekurangnya tersebutlah berikutnya disini kira misalkan sela tertentu berjumlah disinilah kira-kira misalnya selain tertuju berkali-kali ditambahkan kiranya mula selaku terus berkata ditandaskan kita mulai selalu terutama berkehenda
k ditanya kitalah mulailah selama tetap berkeingina
n ditanyai kok mulanya selama-lamanya tetapi berkenaan ditanyakan kurang mungkin selamanya tiap berlainan ditegaskan lagi mungkinkah selanjutnya tiba berlalu ditujukan lagian nah seluruh tiba-tiba berlangsung ditunjuk lah naik seluruhnya tidak berlebihan ditunjuki lain namun semacam tidakkah bermacam ditunjukkan lainnya nanti semakin tidaklah
bermacam-macam ditunjukkannya lalu nantinya semampu tiga bermaksud ditunjuknya lama nyaris semampunya tinggi bermula dituturkan lamanya nyatanya semasa toh bersama dituturkannya lanjut oleh semasih tunjuk
bersama-sama diucapkan lanjutnya olehnya semata turut bersiap diucapkannya lebih pada semata-mata tutur bersiap-siap diungkapkan lewat padahal semaunya tuturnya bertanya dong lima padanya sementara ucap
bertanya-tanya dua luar pak semisal ucapnya berturut dulu macam paling semisalnya ujar
berupa entah malah pasti semula ungkap besar entahlah malahan pastilah sendiri ungkapnya betul guna mampu penting sendirian untuk betulkah gunakan mampukah pentingnya sendirinya usah biasa hal mana per seolah usai biasanya hampir manakala percuma seolah-olah waduh bila hanya manalagi perlu seorang wah bilakah hanyalah masa perlukah sepanjang wahai bisa hari masalah perlunya sepantasnya waktu bisakah harus masalahnya pernah sepantasnyalah waktunya boleh haruslah masih persoalan seperlunya walau bolehkah harusnya masihkah pertama seperti walaupun bolehlah hendak masing pertama-tama sepertinya wong buat hendaklah masing-masing pertanyaan sepihak yaitu bukan hendaknya mau pertanyakan sering yakin
LAMPIRAN III
LISTING PROGRAM
1. Text filtering
a. Ambil hanya huruf, angka dan spasi
Untuk membuang semua yang tidak dibutuhkan yang tersisa hanya huruf, angka dan spasi. Kode programnya adalah sebagai berikut :
b. Stopword Removal
Untuk membuang kata – kata yang tidak dibutuhkan dengan cara memiliki terlebih dahulu daftar kata yang tidak dibutuhkan (stopword), selanjutnya melakukan pengecekan jika tersedia kata tersebut dalam judul berita akan dieliminasi.
2. Stemming
Kode program untuk stemming berasal dari http://sukmanapradibtha.wordpress.com/, karena kode sumber tersebut sudah digunakan dalam beberapa penelitian lainnya dan terbukti tepat seperti algoritma porter.
a. Tahap 1
Pada tahap 1 fokus utama melakukan penghapusan partikel, namun sebelum dilakukan proses penghapusan dilakukan pengecekan terlebih dahulu tentang kata pengecualian yang tersedia pada tabel dsr_partikel dan dsr_partikel_prefiks.
$this->result = preg_replace("/\r\n|\r|\n/",' ',$this->result); $this->result = preg_replace('/<[^>]*>/', '', $this->result);
$this->result = preg_replace("/[^a-zA-Z0-9\s]/", " ", $this->result); $this->result = preg_replace('/\s+/', ' ', $this->result);
$query_stopword = mysql_query("select * from ".$this->prefix."stopword"); $needles=array();
while($fetch_stopword = mysql_fetch_assoc($query_stopword)){ array_push($needles,'/\b'.$fetch_stopword["stopword"].'\b/i'); }
$this->result=preg_replace($needles, "", $this->result);
$partikel = mysql_query("SELECT * FROM ".$this->prefix."dsr_partikel WHERE name ='$word'");
if(mysql_num_rows($partikel)==1){ $dasar =$word;
b. Tahap 2
Pada tahap 2 fokus utama adalah untuk menghapus possessive pronoun, namun sebelum dilakukan proses penghapusan dilakukan pengecekan terlebih dahulu pengecekan melalui tabel dsr_milik dan dsr_milik_prefiks.
else {
$partikel_berprefiks=mysql_query("SELECT * FROM
".$this->prefix."dsr_partikel_prefiks WHERE name='$word'"); if(mysql_num_rows($partikel_berprefiks)==1 && strlen($word) > 4){ if(substr($word,0,4)=="meng" or substr($word,0,4)=="peng"){
return substr($word,4);
}else if(substr($word,0,4)=="meny" or substr($word,0,4)=="peny") { $dasar =substr($word,4);
return "s".$dasar;
}else if(substr($word,0,3)=="mel" or substr($word,0,3)=="mer" or substr($word,0,3)=="mew" or substr($word,0,3)=="mey") {
return substr($word,2); }else if(substr($word,0,2)=="di"){
return substr($word,2);
}else if(substr($word,0,3)=="mem" or substr($word,0,3)=="pem"){ if(substr($word,3,1)=="a" or substr($word,3,1)=="i" or
substr($word,3,1)=="u" or substr($word,3,1)=="e" or substr($word,3,1)=="o"){
$dasar =substr($word,3); return "p".$dasar; }else{ $dasar =substr($word,3); return $dasar;} }else if(substr($word,0,3 == "pel")){
$dasar =substr($word,4); return $dasar;
} else if(substr($word,0,3)=="men" or substr($word,0,3)=="pen" ){ $dasar =substr($word,3); return "t".$dasar;
} } else{
if((substr($word, -3) == 'kah' )||( substr($word, -3) == 'lah' )|| (substr($word, -3) == 'pun' )||( substr($word, -3) == 'tah' )){
$word2 = substr($word, 0, -3);} else{ $word2 = $word; }
} }
$milik = mysql_query("SELECT * FROM ".$this->prefix."dsr_milik WHERE name='$word2'");
if(mysql_num_rows($milik)==1){ $dasar =$word2;
c. Tahap 3
Pada tahap 3 fokus utama adalah untuk menghapus awalan, jika proses menghapus tidak berhasil dilakukan maka akan lanjut pada tahap 4
else {
$milik_berprefiks = mysql_query("SELECT * FROM
".$this->prefix."dsr_milik_prefiks WHERE name='$word2'"); if(mysql_num_rows($milik_berprefiks)==1 && strlen($word2) > 4){
if(substr($word2,0,4)=="meng" or substr($word2,0,4)=="peng"){ return substr($word2,4);
}else if(substr($word2,0,4)=="meny" or substr($word2,0,4)=="peny"){
$dasar =substr($word2,4); return "s".$dasar;
}else if(substr($word2,0,3)=="mel" or substr($word2,0,3)=="mew" or substr($word2,0,3)=="mer" or substr($word2,0,3)=="mey"){ return substr($word2,2);
}else if(substr($word2,0,2)=="di"){ return substr($word2,2); }else if(substr($word2,0,3)=="mem"
or substr($word2,0,3)=="pem" ){
if(substr($word2,3,1)=="a" or substr($word2,3,1)=="i" or substr($word2,3,1)=="u" or substr($word2,3,1)=="e" or substr($word2,3,1)=="o"){
$dasar =substr($word2,3); return "p".$dasar; }else{ $dasar =substr($word2,3); return $dasar;} }else if(substr($word2,0,3 == "pel")){
$dasar =substr($word2,4); return $dasar;
}else if(substr($word2,0,3)=="men" or substr($word2,0,3)=="pen" ){ $dasar =substr($word2,3); return "t".$dasar; }
} else{
if((substr($word2, -2)== 'ku')||(substr($word2, -2)== 'mu')){ $word3 = substr($word2, 0, -2);
}else if((substr($word2, -3)== 'nya')){ $word3 = substr($word2,0, -3); }else{ $word3 = $word2; }
} }
$prefiks1 = mysql_query("SELECT * FROM ".$this->prefix."dsr_prefiks1 WHERE name='$word3'");
if(mysql_num_rows($prefiks1)==1){ $dasar =$word3;
d. Tahap 4
Fokus utama tahap 4 adalah menghapus awalan, jika berhasil lanjutkan ke tahap 5 akan tetapi jika tidak berhasil akan dilakukan proses menghapus akhiran. Untuk proses menghapus akhiran jika gagal maka dianggap kata tersebut sudah menjadi kata dasar dan jika berhasil akan dilanjutkan pada tahap 5
else {
$prefiks1_sufiks = mysql_query("SELECT * FROM
".$this->prefix."dsr_prefiks1_sufiks WHERE name='$word3'");
if(mysql_num_rows($prefiks1_sufiks)==1 && strlen($word3) > 4){ if (substr($word4, -3)== 'kan'){
$dasar = substr($word4, 0, -3); return $dasar;} elseif (substr($word4, -1)== 'i'){
$dasar = substr($word4, 0, -1); return $dasar;} elseif (substr($word4, -2)== 'an'){
$dasar = substr($word4, 0, -2); return $dasar;} } else{
if(substr($word3,0,4)=="meng" or substr($word3,0,4)=="peng"){ $word4 = substr($word3,4);
}else if(substr($word3,0,4)=="meny" or substr($word3,0,4)=="peny"){
$dasar = substr($word3,4); $word4 = "s".$dasar;
}else if(substr($word3,0,3)=="mel" or substr($word3,0,3)=="mew" or substr($word3,0,3)=="mer" or
substr($word3,0,3)=="mey"){ $word4 = substr($word3,2);
}else if(substr($word3,0,2)=="di"){ $word4 = substr($word3,2); }else if(substr($word3,0,3)=="mem" or
substr($word2,0,3)=="pem"){
if(substr($word3,3,1)=="a" or substr($word3,3,1)=="i" or substr($word3,3,1)=="u" or substr($word3,3,1)=="e" or substr($word3,3,1)=="o"){
$dasar =substr($word3,3); $word4 = "p".$dasar; }else{ $dasar =substr($word3,3); $word4 = $dasar;} }else if(substr($word3,0,3 == "pel")){
$dasar =substr($word3,4); echo $dasar;
}else if(substr($word3,0,3)=="men" or substr($word3,0,3)=="pen"){ $dasar =substr($word3,3); $word4 = "t".$dasar;
}else{ $word4 = $word3; } }
}
$prefiks2 = mysql_query("SELECT * FROM ".$this->prefix."dsr_prefiks2 WHERE name='$word4'");
if(mysql_num_rows($prefiks2)==1){ $dasar =$word4;
e. Tahap 5
Pada tahap 5 dilakukan hapus akhiran dan hapus awalan kemudian diasumsikan sebagai kata dasar.
else {
$prefiks2_sufiks = mysql_query("SELECT * FROM
".$this->prefix."dsr_prefiks2_sufiks WHERE name='$word4'"); if(mysql_num_rows($prefiks2_sufiks)==1 && strlen($word4) > 4){
if (substr($word4, -3)== 'kan'){
$dasar = substr($word4, 0, -3); return $dasar;} elseif (substr($word4, -1)== 'i'){
$dasar = substr($word4, 0, -1); return $dasar;} elseif (substr($word4, -2)== 'an'){
$dasar = substr($word4, 0, -2); return $dasar;} } else{
if(substr($word4,0,3)=="ber" or substr($word4,0,3)=="per"){ $word5 = substr($word4,3);
}else if(substr($word4,0,2)=="be"){ if(substr($word4,3)=="ajar"){
$dasar =substr($word4,3); $word5 = $dasar; }else{
$dasar =substr($word4,2); $word5 = $dasar;} }else if(substr($word4,0,2)=="se" or substr($word4,0,2)=="ke"){
$word5 = substr($word4,2); }else if(substr($word4,0,3) == "pel" or substr($word4,0,3) == "ter"){
$word5 =substr($word4,3); } else{ $word5 = $word4; }
} }
$sufiks = mysql_query("SELECT * FROM ".$this->prefix."dsr_sufiks WHERE name='$word5'");
$prefiks2_sufiks = mysql_query("SELECT * FROM
".$this->prefix."dsr_prefiks2_sufiks WHERE name='$word5'"); if(mysql_num_rows($sufiks)==1){
$dasar =$word5; return $dasar;
}else{ if (substr($word5, -3)== 'kan' && strlen($word5) > 4){ $dasar1 = substr($word5, 0, -3); }
3. CSR Sparse Matrix Vector Multiplication
a. Membuat Tabel Tf
Menyimpan dalam array untuk setiap term pada masing – masing dokumen
b. Membuat Tabel Df dan Idf
Menyimpan ke array untuk setiap nilai Df dan Idf dengan cara mengambil nilai dari tf
yang ada pada tabel doc_frequency_proximity di database.
foreach($document as $key => $val){
$potong = explode(" ",$val); foreach($potong as $key2 => $val2) { if(!empty($val2)){ if(array_key_exists($val2, $docs_term)) { $docs_term[$val2]++; } else { $docs_term[$val2] = 1; }
} }
$hitung_total = mysql_fetch_assoc(mysql_query("select count(*) as 'total' from
“.$this->prefix.”posts where MONTH(“.$this->prefix.”posts.post_date) = '".$this->bulan."' AND
post_type='post' AND ID != '".$this->id_post."' and ID not in (select id_post from “.$this->prefix.”post_access where id_user='".$this->id_user."')"));
// melakukan perulangan untuk membuat table df dan idf
$query = mysql_query("select “.$this->prefix.”docs_frequency_proximity.term as 'term',
count(*) as 'df' from “.$this->prefix.”posts, “.$this
->prefix.”docs_frequency_proximity where
MONTH(“.$this->prefix.”posts.post_date) = '".$this->bulan."' AND
“.$this->prefix.”posts.ID=“.$this
->prefix.”docs_frequency_proximity.id_post AND
“.$this->prefix.”posts.post_type='post' AND “.$this
->prefix.”docs_frequency_proximity.id_post
not in (select id_post from “.$this->prefix.”post_access where id_user='".$this->id_user."') group by
“.$this->prefix.”docs_frequency_proximity.term") or die(mysql_error()); $term_idf = array();
while($fetch = mysql_fetch_assoc($query)){
if(!empty($fetch["term"])) $term_idf[$fetch["term"]] = (double)
c. Membuat sparse matrix
Membentuk SparseMatrix dengan menyimpan ke dalam array untuk selanjutnya di buat ke dalam format CSR (kompresi). Untuk kolom dibentuk dengan term dan untuk baris dibentuk dengan jumlah dokumen. Untuk nilai dari sparse matrix yang non-zero
merupakan hasil perkalian antara nilai tf dan idf
$query_posts = mysql_query("select * from
“.$this->prefix.”posts, “.$this->prefix.”term_relationships where MONTH(“.$this->prefix.”posts.post_date) = '".$this->bulan."' AND
“.$this->prefix.”posts.post_type='post' AND “.$this->prefix.”posts.ID =
“.$this->prefix.”term_relationships.object_id AND “.$this
->prefix.”posts.ID not in(select
id_post from “.$this->prefix.”post_access where id_user='".$_COOKIE["PHPSESSID"]."') ") or die(mysql_error());
$sparse_matrix = array();
$data = array(); // untuk menyimpan id_post supaya bisa di retrieva nantinya $doc_count = 0; $this->offset_vector_array = array();
$this->offset_marker_array = array(0); $nilai_terakhir_offset = 0; while($fetch_posts = mysql_fetch_assoc($query_posts)) {
$sparse_matrix[$doc_count] = array();
$this->sparse_matrix_offset[$doc_count] = array(); $data[$doc_count] = $fetch_posts["ID"];
$get_id_doc = $fetch_posts["ID"];
$query_doc_frequency = mysql_query("select * from
“.$this->prefix.”docs_frequency_proximity where id_post='".$get_id_doc."'");
while($fetch_doc_frequency = mysql_fetch_assoc($query_doc_frequency)){ $count = $this->arrayKeyOrderNumber(
$fetch_doc_frequency["term"],$term_idf); $sparse_matrix[$doc_count][$count] = (double)
($fetch_doc_frequency["tf"] * $term_idf[$fetch_doc_frequency["term"]]); $potong = explode(",",$fetch_doc_frequency["positions"]); foreach($potong as $key3 => $val3) {
array_push($this->offset_vector_array,$val3); } $nilai_terakhir_offset += count($potong);
array_push($this->offset_marker_array,$nilai_terakhir_offset);}
d. Membentuk format CSR
Membentuk format CSR dengan menyimpannya ke dalam 3 buat vektor yaitu : val_array (untuk menyimpan nilai non-zero), col_array (untuk menyimpan nilai kolom dari non-zero) dan row_ptr (untuk menyimpan baris).
e. Membuat query
Membentuk query dengan membentuk vektor, panjang kolom sama seperti panjang array term_idf, lalu untuk nilai non-zero adalah jika term dalam query tersedia juga di daftar term_idf, jika tidak ada akan diisi dengan nilai 0.00.
f. Melakukan CSR SpMV
Melakukan perkalian antara sparse matrix yang telah dibentuk dalam format CSR dengan vektor query.
$sparseMatrix = $this->getSparseMatrix();
$val_array = array(); $col_array = array(); $ptr_array = array(); $nilai_terakhir = 0;
array_push($ptr_array, $nilai_terakhir);
foreach($sparseMatrix as $key => $val) { $count = 0; foreach($val as $key2 => $val2) {
if($val2 != 0) {
array_push($val_array, $val2); array_push($col_array, $key2); $count++; } }
$nilai_terakhir += $count;
array_push($ptr_array, $nilai_terakhir); }
$q_array = array();
foreach($this->term_idf as $key => $val) {
if(in_array((string)$key, $news_term_list)) { array_push($q_array, $val); }
else { array_push($q_array, number_format(0.00,2)); } }
$csr_output = array();
foreach($sparseMatrix as $count => $val) { $temp = 0;
for($row_ind = $ptr_array[$count]; $row_ind <= ($ptr_array[$count+1] - 1); $row_ind++){ $col_ind = $col_array[$row_ind];
$temp = $temp + $val_array[$row_ind] * $q_array[$col_ind]; }
4. Proximity Processing
a. Membuat tabel Tf Offset
Proses proximity processing yang membutuhkan posisi term dalam dokumen, maka harus dicatat lokasi dalam dokumen. Untuk setiap dokumen posisi dicatat yang dimulai dengan nilai 0.
b. Membuat format CSR untuk proximity processing
Membentuk CSR untuk proximity processing yang berbeda hanya jumlah vektor menjadi 4 yaitu val_array (untuk menyimpan nilai non-zero), col_array (untuk menyimpan nilai kolom), row_ptr (untuk menyimpan baris), offset_vector (menyimpan nilai posisi dari masing – masing term) dan offset_marker (penanda nilai dari offset_vector, sehingga bisa diterjemahkan posisi masing – masing term ).
foreach($potong as $key2 => $val2){
if(!empty($val2)) { if(array_key_exists($val2, $docs_term)){
$docs_term[$val2]++; $docs_offset[$val2] .= ",".$urutan; } else { $docs_term[$val2] = 1; $docs_offset[$val2] = $urutan;
if(array_key_exists($val2, $term_df))
{ $term_df[$val2]++; } else { $term_df[$val2] = 1; } }
// untuk term
if(array_key_exists($val2,$term)){ $term[$val2]++; } else{ $term[$val2] = 1; } }
$urutan++; }
$doc_count = 0; $this->offset_vector_array = array(); $this->offset_marker_array = array(0);
$nilai_terakhir_offset = 0;
while($fetch_posts = mysql_fetch_assoc($query_posts)) { $sparse_matrix[$doc_count] = array();
$this->sparse_matrix_offset[$doc_count] = array(); $data[$doc_count] = $fetch_posts["ID"];
$get_id_doc = $fetch_posts["ID"];
$query_doc_frequency = mysql_query("select * from
“.$this->prefix.”docs_frequency_proximity where id_post='".$get_id_doc."'");
while($fetch_doc_frequency = mysql_fetch_assoc($query_doc_frequency)) { $count = $this->arrayKeyOrderNumber($fetch_doc_frequency["term"],
$term_idf);
$sparse_matrix[$doc_count][$count] = (double) ($fetch_doc_frequency["tf"] * $term_idf[$fetch_doc_frequency["term"]]);
$potong = explode(",",$fetch_doc_frequency["positions"]); foreach($potong as $key3 => $val3) {
array_push($this->offset_vector_array,$val3); } $nilai_terakhir_offset += count($potong);
c. Membuat query v1 dan v2
Untuk melakukan proses proximity processing perlu dibuat query dengan 2 versi.
Versi 1 untuk menampung nilai – nilai idf dari masing – masing term dan versi 2 untuk menampung posisi term dalam query.
d. Melakukan proses proximity processing
Melakukan proses proximity processing dengan cara membentuk pasangan untuk setiap term yang ditemukan, pasangan tersebut berisi posisi dalam dokumen,
selanjutnya setiap pasangan tersebut akan dihitung jaraknya, jika hasilnya 1 maka dokumen tersebut sangat relevan dengan query.
// untuk v1 $q_array = array();
foreach($this->term_idf as $key => $val) { if(in_array((string)$key, $potong)) { array_push($q_array, $val); }
else { array_push($q_array, number_format(0.00,2)); } }
// untuk v2
$q_urutan = array();
$potong = explode(" ",$query_string); // foreach($potong as $key => $val) {
$val = strtolower($this->st->doStemming($val)); array_push($q_urutan, $this->arrayKeyOrderNumber(
$val,$this->term_idf)); }
$result = array(); $urutan = 0; $pair_array = array(); foreach($csr_output as $key => $val) {
$query_result = array();
for($row_ind = $ptr_array[$key]; $row_ind <= ($ptr_array[$key+1]-1); $row_ind++){
$col_ind = $col_array[$row_ind]; $save_temp = array();
if($q_array[$col_ind] > 0) {
for($offset_id = $this->offset_marker_array[$urutan];
$offset_id <= ($this->offset_marker_array[$urutan+1] - 1); $offset_id++){
array_push($save_temp,$this->offset_vector_array[$offset_id]); } }
$result[$key][$col_ind] = $save_temp; $urutan++; foreach($q_urutan as $k => $v){
5. Setting
a. Setting sesi
Untuk melakukan pengaturan lama aktif sesi dari pengguna anonim, tentang seberapa lama sistem akan mengenali user dengan identitas tersebut.
// build pair
$pair_array[$key] = array();
for($k=0; $k < count($query_result); $k++){ $pair_array[$key][$k] = array(); if(count($query_result[$k]) > 0) {
for($l=0; $l < count($query_result[$k]); $l++){
for($m=$k+1; $m < count($query_result); $m++){ if(count($query_result[$m]) > 0) {
foreach($query_result[$m] as $k2 => $v2) { array_push($pair_array[$key][$k],$query_result[$k][$l]."-".$v2.":".$k."-".($m));
} } } }
} }
} }
foreach($pair_array as $key => $val) { $hasil[$key] = 0; foreach($val as $k => $v) {foreach($v as $k2 => $v2) {
$potong_awal = explode(":",$v2); $potong = explode("-",$potong_awal[0]);
$difference = intval($potong[1]) - intval($potong[0]); $potong = explode("-",$potong_awal[1]);
$window = intval($potong[1]) - intval($potong[0]);
if($difference >= 1 && $difference <= $window) {$hasil[$key]++; }
} } $csr_output[$key] += $hasil[$key]; }
$array = array(1,7,30,365); if(!empty($_POST["sesi"])){
mysql_query("update “.$this->prefix.”pnr_setting set value='".$_POST["sesi"]."' where name='sesi'"); }
$data = mysql_fetch_assoc(mysql_query("select * from “.$this
b. Setting ambil berita
Untuk mengantur berita yang akan diambil untuk direkomendasikan.
b. Stopword management
Untuk memanjemen stopword yang ada di database, baik untuk menambah, mengedit dan menghapus stopword.
$array = array(1,2,7,30);
if(!empty($_POST["batas_ambil"])) {
mysql_query("update “.$this->prefix.”pnr_setting set value='".$_POST["batas_ambil"]."' where name='batas_ambil'"); }
if(!empty($_POST["stopword"])) {
$query_cek = mysql_query("select * from “.$this->prefix.”stopword where stopword='".$_POST["stopword"]."'");
if(mysql_num_rows($query_cek) > 0) {
echo "<div class='update-nag'>Kata <i>".$_POST["stopword"]."</i> Sudah Ada Sebelumnya </div> <br />";}
else{
// insert ke table “.$this->prefix.”stopword
mysql_query("insert into “.$this
->prefix.”stopword(id_stopword,stopword)
values(NULL,'".$_POST["stopword"]."')") or die(mysql_error());
// hapus ke table “.$this->prefix.”docs_frequency_proximity
mysql_query("delete from “.$this->prefix.”docs_frequency_proximity where term='".$_POST["stopword"]."'") or die(mysql_error());
echo "<div id=\"message\" class=\"updated below-h2\"><p>Stopword Berhasil Ditambah</p></div>";
} }
// untuk edi t
if($_GET[“action”] == “edit”) {
mysql_query("update “.$this->prefix.”stopword set stopword='".$_GET["stopword"]."' where
id_stopword='".$_GET["id_stopword"]."'"); }
// untuk hapus
$_GET[“action”] ==”hapus”)
{
mysql_query("delete from “.$this->prefix.”stopword where id_stopword='".$_GET["id_stopword"]."'");
6. Bayesian framework for user interest
a. Inisialisasi
Proses persiapan sebelum dilakukan proses bayesian framework for user interest
dengan mengambil data – data yang pernah diakses oleh pengguna anonim. $query_cek = mysql_query("select * from y2y_post_access where
id_user='".$this->id_user."'"); if(mysql_num_rows($query_cek) > 1) {
$query = mysql_query("select y2y_post_access.*, y2y_docs_frequency_proximity.*,
date(y2y_post_access.tgl) as 'tgl_akses' from y2y_post_access, y2y_docs_frequency_proximity where y2y_post_access.id_user='".$this->id_user."' AND y2y_post_access.id_post=y2y_docs_frequency_proximity.id_post group by DATE(y2y_post_access.tgl),
y2y_docs_frequency_proximity.term
order by DATE(y2y_post_access.tgl)") or die(mysql_error()); $this->periode_jenis = "tgl";
if(mysql_num_rows($query) == 1) { $this->periode_jenis = "jam";
$fetch = mysql_fetch_assoc($query); $this->tgl_akses = $fetch["tgl_akses"]; $query = mysql_query("select y2y_post_access.*,
y2y_docs_frequency_proximity.*, HOUR(y2y_post_access.tgl) as 'jam_akses' from y2y_post_access, y2y_docs_frequency_proximity where
y2y_post_access.id_user='".$this->id_user."' AND
y2y_post_access.id_post=y2y_docs_frequency_proximity.id_post AND DATE(y2y_post_access.tgl) = '".$this->tgl_akses."'
group by HOUR(y2y_post_access.tgl),
y2y_docs_frequency_proximity.termorder by HOUR(y2y_post_access.tgl) ") or die(mysql_error());
while($fetch = mysql_fetch_assoc($query)) {
if(!array_key_exists($fetch["jam_akses"],$this->periode_data)) { $this->periode_data[$fetch["jam_akses"]] = array();}
if(array_key_exists($fetch["term"], $this->periode_data[$fetch["jam_akses"]])) $this->periode_data[$fetch["jam_akses"]][$fetch["term"]]++;
else
$this->periode_data[$fetch["jam_akses"]][$fetch["term"]] = 1; if(array_key_exists($fetch["term"],$this->term_freq))
$this->term_freq[$fetch["term"]]++; else $this->term_freq[$fetch["term"]] = 1; } } else if(mysql_num_rows($query) > 1) {
$query = mysql_query("select y2y_post_access.*,
y2y_docs_frequency_proximity.*, date(y2y_post_access.tgl) as 'tgl_akses' from y2y_post_access, y2y_docs_frequency_proximity where y2y_post_access.id_user='".$this->id_user."' AND
b. Hitung nilai untuk setiap term
Melakukan perhitungan untuk masing – masing term dengan algoritma bayesian framework for user interest, yang selanjutnya nanti nilai tersebut akan dimasukkan ke
dalam masing – masing dokumen sebagai nilai yang akan menjadi penilaian dalam melakukan rekomendasi.
$total_click_semua = 0; // untuk term
$term_freq_total_pt = array();
$query_term = mysql_query("select sum(y2y_docs_frequency_proximity.tf) as 'total', y2y_docs_frequency_proximity.term as 'term' from y2y_post_access,
y2y_docs_frequency_proximity where
y2y_post_access.id_user='".$this->id_user."' AND
y2y_post_access.id_post=y2y_docs_frequency_proximity.id_post group by y2y_docs_frequency_proximity.term ");
while($fetch_term = mysql_fetch_assoc($query_term)) {
$term_freq_total_pt[$fetch_term["term"]] = $fetch_term["total"]; }
$total_click_semua = array_sum($term_freq_total_pt); $term_freq_total_waktu = array();
$jenis_group = " group by DATE(y2y_post_access.tgl) "; $select_group = " DATE(y2y_post_access.tgl) as 'key' ";
if($this->periode_jenis == "jam"){
$jenis_group = " AND DATE(y2y_post_access.tgl) = '".$this->tgl_akses."' group by HOUR(y2y_post_access.tgl) ";
$select_group = " HOUR(y2y_post_access.tgl) as 'key' "; } while($fetch = mysql_fetch_assoc($query)) {
if(!array_key_exists($fetch["tgl_akses"],$this->periode_data)) { $this->periode_data[$fetch["tgl_akses"]] = array(); }
if(array_key_exists($fetch["term"], $this->periode_data[$fetch["tgl_akses"]]))
$this->periode_data[$fetch["tgl_akses"]][$fetch["term"]]++; else
$this->periode_data[$fetch["tgl_akses"]][$fetch["term"]] = 1;
if(array_key_exists($fetch["term"],$this->term_freq)) $this->term_freq[$fetch["term"]]++;
else
$this->term_freq[$fetch["term"]] = 1; }
7. Proses rekomendasi
a. Catat akses berita
Setiap pengguna anonim mengakses berita, akan dilakukan pencatatan identitas berita, supaya bisa dipakai untuk algoritma bayesian framework for user interest.
$query_term_waktu = mysql_query("select
sum(y2y_docs_frequency_proximity.tf) as 'total', y2y_docs_frequency_proximity.term as 'term',
".$select_group." from y2y_post_access, y2y_docs_frequency_proximity where
y2y_post_access.id_user='".$this->id_user."' AND
y2y_post_access.id_post=y2y_docs_frequency_proximity.id_post ".$jenis_group);
while($fetch_term_waktu = mysql_fetch_assoc($query_term_waktu)) { $term_freq_total_waktu[$fetch_term_waktu["key"]] =
$fetch_term_waktu["total"]; } }
// untuk setiap term
$query = mysql_query("select * from y2y_post_access, y2y_docs_frequency_proximity where
y2y_post_access.id_post=y2y_docs_frequency_proximity.id_post AND y2y_post_access.id_user='".$this->id_user."' group by
y2y_docs_frequency_proximity.term"); $sigma_nt = array_sum($term_freq_total_waktu); $string = "";
while($fetch = mysql_fetch_assoc($query)) { $temp = 0;
foreach($term_periode_data_t as $k => $v) { $nt = $term_freq_total_waktu[$k];
$hitung = $this->term_freq_p0[$fetch["term"]] * ($nt *
(($term_periode_data_t[$k][$fetch["term"]] / $term_freq_total_pt[$fetch["term"]]) * ($term_freq_total_pt[$fetch["term"]] / $total_click_semua) /
($term_freq_total_waktu[$k] / $total_click_semua)) * ($term_freq_total_waktu[$k] / $total_click_semua)) / ($term_freq_total_pt[$fetch["term"]] /
$total_click_semua);
$temp += $hitung; }
$this->term_freq_sigma_pt_category_click[$fetch["term"]] = $temp / $sigma_nt; } arsort($this->term_freq_sigma_pt_category_click);
mysql_query("insert into y2y_post_access(id_post,id_user,tgl)
b. Penggabungan ketiga nilai dari setiap algoritma
Melakukan pengambilan berita untuk direkomendasikan selanjutnya menggunakan 3 proses algoritma (CSR SpMV, proximity porcessing dan bayesian framework for user interest)
// ambil nilai setting batas ambil berita dari database
$data_ambil = mysql_fetch_assoc(mysql_query("select * from ".$this->prefix."setting where name'batas_berita'));
// lakukan pengambilan berita
$query = mysql_query("select * from
".$this->prefix."posts where ".$this->prefix."posts.post_date <= '".date("Y-m-d")."' AND ".$this->prefix."posts.post_date >= date_sub(".date("Y-m-d").", interval ".$data_ambil["value"]." day)
post_type='post' AND ID != '".$this->id_post."' and ID not in (select id_post from ".$this->prefix."post_access where id_user='".$this->id_user.")");
// lakukan pengambilan nilai untuk ketiga algoritma $csr = new SparseMatrixProximity($query, $id_akses); $nb = new NaiveBayes();
$hasil = array();
while($fetch = mysql_fetch_assoc($query)) {
$hasil[$fetch["ID"]] = >SpMV($fetch["ID"]) + $csr->ProximityProcessing($fetch["ID"]) + $nb->get($fetch["ID"]); }