• Tidak ada hasil yang ditemukan

Penerapan Sparse Matrix pada Rekomendasi Berita Personal untuk Pengguna Anonim

N/A
N/A
Protected

Academic year: 2019

Membagikan "Penerapan Sparse Matrix pada Rekomendasi Berita Personal untuk Pengguna Anonim"

Copied!
26
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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;

(12)

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;

(13)

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;

(14)

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;

(15)

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); }

(16)

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)

(17)

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);}

(18)

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]; }

(19)

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);

(20)

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){

(21)

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

(22)

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"]."'");

(23)

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

(24)

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; }

(25)

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)

(26)

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"]); }

Referensi

Dokumen terkait

PETRONAS ingin membangkitkan kesadaran tentang semua bahaya yang terkait dengan penyimpanan, penanganan dan penggunaan produk kami. Mempelajari secara cermat Lembar Data

Bahan yang digunakan adalah sampel tanah yang diambil dari dua lokasi sawah yaitu di Balai Penelitian Padi Ciapus dan desa Sukajadi Kecamatan Taman Sari,

(4) Peningkatan keterkaitan kawasan andalan dengan sektor unggulan pariwisata dengan kawasan perkotaan nasional sebagai pusat pengembangan kawasan andalan yang

terlampir dalam dokumen tersebut, surat pernyataan kesediaan untuk melakukan pengelolaan dan pemantauan lingkungan hidup yang ditandatangani oleh Ketua Koperasi

Variabel narsisme mempunyai rerata empirik (RE) sebesar 65,14 dan rerata hipotetik (RH) sebesar 75 yang berarti variabel narsisme termasuk dalam kategori

Teknik yang digunakan dalam penelitian ini sebagai berikut; (1) Teknik pengamatan langsung, peneliti terjun langsung kelokasi penelitian yaitu di Pantai Air Mata Permai

Aspek-aspek aktivitas guru yang diamati selama pembelajaran berlangsung menggunakan lembar observasi adalah (1) membuka pembelajaran, mengajak siswa untuk berdoa sebelum

Ayat (4) “Pengaturan dan penjadwalan pemasangan iklan kampanye Pemilu sebagaimana dimaksud pada ayat (3) untuk setiap Peserta Pemilu diatur sepenuhnya oleh lembaga penyiaran