Information retrieval System
flowchart
Tahapan stemming:
1.Hapus Particle
2.Hapus Possesive Pronoun.
3.Hapus awalan pertama. Jika tidak ada lanjutkan ke langkah 4a, jika ada cari maka lanjutkan ke langkah 4b.
4.a. Hapus awalan kedua, lanjutkan ke langkah 5a.
b.Hapus akhiran, jika tidak ditemukan maka kata tersebut diasumsikan sebagai root word. Jika ditemukan maka lanjutkan ke langkah 5b.
5.a. Hapus akhiran. Kemudian kata akhir diasumsikan sebagai root word
b. Hapus awalan kedua. Kemudian kata akhir diasumsikan sebagai root word.
- Pembobotan dilakukan dengan metode TF-IDF
- Metode TF-IDF merupakan metode untuk menghitung bobot setiap kata yang paling umum digunakan pada information retrieval.
- Metode ini juga terkenal efisien, mudah dan memiliki hasil yang akurat.
- Metode ini akan menghitung nilai Term Frequency (TF) dan Inverse Document Frequency (IDF) pada setiap token (kata) di setiap dokumen dalam korpus.
- Metode ini akan menghitung bobot setiap token t di dokumen d dengan rumus:Wdt = tfdt * IDFtDimana :
- d : dokumen ke-d
- t : kata ke-t dari kata kunci
- W : bobot dokumen ke-d terhadap kata ke-t
- tf : banyaknya kata yang dicari pada sebuah dokumen
- IDF : Inversed Document Frequency
Database:
Buat database di mysql dengan nama Simbah_db. Kemudian buat tabel dengan struktur tabel seperti berikut ini:
Menginstal Codeigniter
Membuat koneksi dengan database di Codeigniter
Membuat model dengan nama M_model di folder application terus model untuk mengambil data dari database
<?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
class M_model extends CI_Model {
public function get_data_all($table)
{
return $this->db->get($table);
}
public function get_data_stopword($table){
$hsl=$this->db->query(“SELECT kata_stopword FROM “.$table);
return $hsl;
}
public function insert($table,$data){
return $this->db->insert($table,$data);
}
public function getdistinc(){
return $this->db->query(“SELECT DISTINCT docid FROM tb_index “);
}
public function update_data($where,$data,$table){
$this->db->where($where);
$this->db->update($table,$data);
}
}
Membuat file dengan nama stemmingArifin.php di dalam folder application terus controller untuk proses stemming.
<?php
function cekKamus($kata,$kamus_arr){
$hasilCari = 0;
if(in_array($kata,$kamus_arr)){
$hasilCari = 1;
}
return $hasilCari;
}
/* ——————————————————————
potong kata yang berawalan me atau pe
——————————————————————–*/
function potongAwalanMe($kata){
$_2hurufAwal = substr($kata,0,2);
$awalan = “”;
$_4hurufAwal = substr($kata,0,4);
$_3hurufAwal = substr($kata,0,3);
$hurufPengganti=””;
if($_4hurufAwal == “meng” || $_4hurufAwal == “peng”){
$awalan = $_4hurufAwal;
// hasil yang dipotong tambahkan dengan salah satu huruf berikut ini
// hurufPengganti=[‘v’,’k’,’g’,’h’,’q’];
}
else if($_4hurufAwal == “meny” || $_4hurufAwal == “peny”){
//awalan = _4hurufAwal.substr(0,2);
$awalan = $_4hurufAwal;
// ganti ny dengan huruf pengganti
//$hurufPengganti=[‘s’];
}
else if($_3hurufAwal == “mem” || $_3hurufAwal == “pem”){
$awalan = $_3hurufAwal;
// tambahkan huruf pengganti jika hasil kata yang dipotong berupa huruf vokal
//$hurufPengganti=[‘b’,’f’,’p’,’v’];
}
else if($_3hurufAwal == “men” || $_3hurufAwal == “pen”){
$awalan = $_3hurufAwal;
// tambahkan huruf pengganti jika hasil kata yang dipotong berupa huruf vokal
//$hurufPengganti=[‘c’,’d’,’j’,’s’,’t’,’z’];
}
else if($_3hurufAwal == “per”){
$awalan = $_3hurufAwal;
// hurufPengganti=[‘c’,’d’,’j’,’s’,’t’,’z’];
}
else if($_2hurufAwal == “me” || $_2hurufAwal == “pe”){
$awalan = $_2hurufAwal;
// hurufPengganti=[‘l’,’m’,’n’,’r’,’y’,’w’];
}
return $awalan;
// return awalan+” “+kata.substr(awalan.length)+” “+hurufPengganti;
}
/* ——————————————————————
potong kata yang berawalan be
——————————————————————–*/
function potongAwalanBe($kata){
$awalan = “”;
$hurufPengganti=””;
$_2hurufAwal = substr($kata,0,2);
$_3hurufAwal = substr($kata,0,3);
if($_3hurufAwal == “ber”){
$awalan = $_3hurufAwal;
}
else if($_2hurufAwal == “be” && $kata == “bekerja”){
$awalan = $_2hurufAwal;
}
else if($_3hurufAwal == “bel” && $kata == “belajar”){
$awalan = $_3hurufAwal;
}
return $awalan;
// return $awalan+” “+$kata.substr($awalan.length)+” “+hurufPengganti;
}
/* ——————————————————————
potong $kata yang $awalannya selain me,pe,be
——————————————————————–*/
function potongAwalanLainnya($kata){
$awalan = “”;
$awalanLain = array(“di”,”ke”,”ku”,”se”);
//$hurufPengganti=””;
$_2hurufAwal = substr($kata,0,2);
$_3hurufAwal = substr($kata,0,3);
if($_3hurufAwal == “ter”){
$awalan = $_3hurufAwal;
// $hurufPengganti=[‘r’];
}
else if(in_array($_2hurufAwal,$awalanLain)){
$awalan = $_2hurufAwal;
}
return $awalan;
// return $awalan+” “+$kata.substr($awalan.length)+” “+hurufPengganti;
}
/* ——————————————————————
potong $awalan
——————————————————————–*/
function potongAwalan($kata){
//jadikan huruf kecil semua
$kata = strtolower($kata);
$awalan1 =Array(‘me’,’di’,’ke’,’pe’,’se’,’be’);
$awalan2 =Array(‘ber’,’ter’,’per’);
$_2hurufAwal = substr($kata,0,2);
$awalan[0] =””;
$awalan[1] =””;
for( $i =0; $i < 2; $i++){
$awalanTmp=””;
if($_2hurufAwal == “me” || $_2hurufAwal == “pe”){
$awalanTmp = potongAwalanMe($kata);
}
else if($_2hurufAwal == “be”){
$awalanTmp = potongAwalanBe($kata);
}
else {
$awalanTmp = potongAwalanLainnya($kata);
}
if($awalanTmp != “”){
//deklarasi ulang $kata dan $_2hurufAwal
$pjgAwalan = strlen($awalanTmp);
$kata = substr($kata,$pjgAwalan,strlen($kata) – $pjgAwalan);
$_2hurufAwal = substr($kata,0,2);
if(in_array($awalanTmp,$awalan2)){
// jika $awalan[1] sudah ada isinya masukkan ke $awalan[1];
//if($awalan[1] != “”){
//$awalan[0] = $awalanTmp;
// }
//else
$awalan[1] = $awalanTmp;
}
else {
// pengecekan dilakukan untuk menangani $kata yang ber$awalan ke seperti kerja, kemul, kemudan dll
if($awalan[0] == “”){
$awalan[0] = $awalanTmp;
}
else {
$awalan[1] = $awalanTmp;
}
}
}
}
return $awalan;
}
function potongAkhiran($kata){
//jadikan huruf kecil semua
$kata = strtolower($kata);
$akhiran1 = array(‘lah’,’kah’,’pun’,’tah’);
$akhiran2 = array(‘ku’,’mu’,’nya’);
$akhiran3 = array(‘i’,’an’,’kan’);
$akhir = array(”,”,”);
$_3hurufAkhir = substr($kata,strlen($kata) – 3);
$_2hurufAkhir = substr($kata,strlen($kata) – 2);
$_1hurufAkhir = substr($kata,strlen($kata) – 1);
for( $i = 0; $i < 3; $i++){
if($i == 0){
if( in_array($_3hurufAkhir,$akhiran1)){
$akhir[$i] = $_3hurufAkhir;
//potong $kata
$kata = substr($kata,0,strlen($kata) – 3);
//deklarasi ulang $akhiran
$_3hurufAkhir = substr($kata,strlen($kata) – 3);
$_2hurufAkhir = substr($kata,strlen($kata) – 2);
$_1hurufAkhir = substr($kata,strlen($kata) – 1);
}
}
else if($i == 1){
if( in_array($_3hurufAkhir,$akhiran2)){
$akhir[$i] = $_3hurufAkhir;
//potong $kata
$kata = substr($kata,0,strlen($kata) – 3);
//deklarasi ulang $akhiran
$_3hurufAkhir = substr($kata,strlen($kata) – 3);
$_2hurufAkhir = substr($kata,strlen($kata) – 2);
$_1hurufAkhir = substr($kata,strlen($kata) – 1);
}
else if( in_array($_2hurufAkhir,$akhiran2)){
$akhir[$i] = $_2hurufAkhir;
//potong $kata
$kata = substr($kata,0,strlen($kata) – 2);
//deklarasi ulang $akhiran
$_3hurufAkhir = substr($kata,strlen($kata) – 3);
$_2hurufAkhir = substr($kata,strlen($kata) – 2);
$_1hurufAkhir = substr($kata,strlen($kata) – 1);
}
}
else {
if( in_array($_3hurufAkhir,$akhiran3)){
$akhir[$i] = $_3hurufAkhir;
}
else if( in_array($_2hurufAkhir,$akhiran3)){
$akhir[$i] = $_2hurufAkhir;
}
else if( in_array($_1hurufAkhir,$akhiran3)){
$akhir[$i] = $_1hurufAkhir;
}
}
}
return $akhir;
}
function cariKataDasar($kata){
$awalan = potongAwalan($kata);
$akhiran = potongAkhiran($kata);
$panjang2Awalan = strlen($awalan[0]) + strlen($awalan[1]);
$panjang3Akhiran = strlen($akhiran[0]) + strlen($akhiran[1]) + strlen($akhiran[2]);
$kataDasar = substr($kata,$panjang2Awalan,strlen($kata) – ($panjang3Akhiran +$panjang2Awalan));
return $kataDasar;
}
function stemmingArifin($kata,$kamus){
/* ——————————————————————
asumsikan bentuk kata adalah aw 1 + aw 2 + kd + akh 3 + akh 2 + akh 1
——————————————————————–*/
/* ——————————————————————
cek apakah kata ada dalam $kamus
——————————————————————–*/
if(in_array($kata,$kamus)){
return $kata;
}
else {
/* ——————————————————————
hasilkan $awalan, $akhiran dan kata dasar, periksa apakah kata telah
ditemukan. asumsinya kata selalu memiliki susunan sebagai berikut
AW I + AW II + KD + AKH III + AKH II + AKH I
——————————————————————–*/
$awalan = potongAwalan($kata);
$akhiran = potongAkhiran($kata);
$panjang2Awalan = strlen($awalan[0]) + strlen($awalan[1]);
$panjang3Akhiran = strlen($akhiran[0]) + strlen($akhiran[1]) + strlen($akhiran[2]);
$kataDasar = substr($kata,$panjang2Awalan,strlen($kata) – ($panjang3Akhiran +$panjang2Awalan));
/* —————————————————————–
periksa apakah terjadi perubahan $kata ketika $kata dasar mendapatkan $awalan
* pertama cek perubahan $kata jika mendapat $awalan me
——————————————————————–*/
$_2hurufAwalAwalan = substr($awalan[0],0,2);
$_2hurufAkhirAwalan = substr($awalan[0],2,2);
$_1hurufAkhirAwalan = substr($awalan[0],2,1);
$tempKataDasar;
if($_2hurufAkhirAwalan == “ng”){
// untuk $kata seperti kontak, kantuk akan dilebur menjadi mengantuk
// tambahkan dengan huruf k
$tempKataDasar = “k”.$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
}
if($_2hurufAkhirAwalan == “ny”){
// tambahkan dengan huruf s
$tempKataDasar = “s”.$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
}
if($_1hurufAkhirAwalan == “m”){
// tambahkan dengan huruf p
$tempKataDasar = “p”.$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
}
if($_1hurufAkhirAwalan == “n”){
// tambahkan dengan huruf t
$tempKataDasar = “t”.$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
}
/* —————————————————————–
AW II.KD.AKH III.AKH II.AKH I
——————————————————————–*/
$tempKataDasar = $awalan[1].$kataDasar.$akhiran[2].$akhiran[1].$akhiran[0];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
KD + AK III + AK II + AK I
——————————————————————–*/
$tempKataDasar = $kataDasar.$akhiran[2].$akhiran[1].$akhiran[0];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
KD + AK III + AK II
——————————————————————–*/
$tempKataDasar = $kataDasar.$akhiran[2].$akhiran[1];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
KD + AK III
——————————————————————–*/
$tempKataDasar = $kataDasar.$akhiran[2];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
KD
——————————————————————–*/
if(cekKamus($kataDasar,$kamus)) {
return $kataDasar;
}
/* —————————————————————–
AW I.KD
——————————————————————–*/
$tempKataDasar = $awalan[0].$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
AW I.AW II.KD
——————————————————————–*/
$tempKataDasar = $awalan[0].$awalan[1].$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
AW I.AW II.KD.AKH III
——————————————————————–*/
$tempKataDasar = $awalan[0].$awalan[1].$kataDasar.$akhiran[2];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
AW I.AW II.KD.AKH III.AKH II
——————————————————————–*/
$tempKataDasar = $awalan[0].$awalan[1].$kataDasar.$akhiran[2].$akhiran[1];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
AW I.AW II.KD.AKH III.AKH II.AKH I
——————————————————————–
$tempKataDasar = $awalan[0].$awalan[1].$kataDasar.$akhiran[2].$akhiran[1].$akhiran[0];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
* gak jadi ini = kata sebelum dilakukan pemotongan
————————————————————————–*/
/* —————————————————————–
AW II.KD
——————————————————————–*/
$tempKataDasar = $awalan[1].$kataDasar;
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
AW II.KD.AKH III
——————————————————————–*/
$tempKataDasar = $awalan[1].$kataDasar.$akhiran[2];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
/* —————————————————————–
AW II.KD.AKH III.AKH II
——————————————————————–*/
$tempKataDasar = $awalan[1].$kataDasar.$akhiran[2].$akhiran[1];
if(cekKamus($tempKataDasar,$kamus)) {
return $tempKataDasar;
}
}
return $kata;
}
?>
Membuat controller dengan nama welcome.php di folder application terus controller untuk menjalankan semua fungsi nantinya
<?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
class Welcome extends CI_Controller {
public function index()
{
$this->template->load(‘Home’,’depan’);
}
public function stoplist(){
$data[‘artikel’]=$this->M_model->get_data_all(‘artikel’)->result();
$data[‘stopword’]=$this->M_model->get_data_all(‘stopword’)->result();
$this->load->view(‘stoplist’,$data);
}
public function steaming(){
$data[‘artikel’]=$this->M_model->get_data_all(‘artikel’)->result();
$data[‘katadasar’]=$this->M_model->get_data_all(‘tb_katadasar’)->result();
$this->load->view(‘steaming’,$data);
}
public function blog(){
$jsonData=file_get_contents(“http://hirupmotekar.com/?json=1”);
$json=json_decode($jsonData,TRUE);
$data[‘data_json’]=$json[‘posts’];
$this->load->view(‘blog_view’,$data);
}
public function download(){
$jsonData=file_get_contents(“http://hirupmotekar.com/?json=1”);
$json=json_decode($jsonData,TRUE);
$data_json=$json[‘posts’];
foreach ($data_json as $dj) {
$text=$dj[‘content’];
$content=strip_tags($text);
$data=array(
‘title’=>$dj[‘title’],
‘url’=>$dj[‘url’],
‘contents’=>$content
);
$this->db->insert(‘tb_artikel’,$data);
}
return redirect(‘Welcome’);
}
public function tampil_artikel(){
$data[‘tb_artikel’]=$this->M_model->get_data_all(‘tb_artikel’)->result();
$this->template->load(‘Home’,’blog_view’,$data);
}
public function buat_index(){
$data_artikel=$this->M_model->get_data_all(‘tb_artikel’)->result();
$kata_dasar=$this->M_model->get_data_all(‘tb_katadasar’)->result();
include_once “stemmingArifin.php”;
foreach ($kata_dasar as $kd) {
$array_kata[]=$kd->katadasar;
}
foreach ($data_artikel as $art) {
$kalimat=$art->contents;
$teks = $kalimat;
$filter = array(“.”,”,”,”!”,”?”,”(“,”)”,”-“,'”‘,’,’); //tanda baca
$teks_clean = str_replace($filter, “”, $teks); //bersihkan stopword
$stopword=array(‘saya’, ‘daku’, ‘aku’, ‘gw’, ‘guwe’, ‘kamu’, ‘kau’, ‘engkau’, ‘dikau’, ‘loe’, ‘lu’, ‘anda’, ‘kami’, ‘kita’, ‘kalian’, ‘mereka’, ‘ia’, ‘dia’, ‘beliau’, ‘anda sekalian’, ‘kamu sekalian’, ‘dan’, ‘atau’, ‘tetapi’, ‘tapi’, ‘akan tetapi’, ‘jika’, ‘kalau’, ‘karena’, ‘walau’, ‘walaupun’, ‘juga’, ‘jadi’, ‘maka’, ‘sehingga’, ‘supaya’, ‘agar’, ‘hanya’, ‘lagi’, ‘lagipula’, ‘lalu’, ‘sambil’, ‘melainkan’, ‘namun’, ‘padahal’, ‘sedangkan’, ‘demi’, ‘untuk’, ‘apabila’, ‘bilamana’, ‘sebab’, ‘sebab itu’, ‘karena itu’, ‘bilamana’, ‘asalkan’, ‘meskipun’, ‘biarpun’, ‘biar’, ‘seperti’, ‘daripada’, ‘bahkan’, ‘apalagi’, ‘yakni’, ‘adalah’, ‘yaitu’, ‘ialah’, ‘bahwa’, ‘bahwasannya’, ‘kecuali’, ‘selain’, ‘misalnya’, ‘untuk itu’);
$clean = str_replace($stopword, “”, $teks_clean);
$kata = explode(” “, $clean);
//$hasil = count($kata);
$data = array_count_values($kata);
$hasil = count($data);
foreach($data as $x => $x_value) {
$kata = $x;
$kamus_kata=$array_kata;
$kata_dasar = stemmingArifin($kata,$kamus_kata);
$data=array(
‘term’=>$kata_dasar,
‘docid’=>$art->id_artikel,
‘count’=>$x_value
);
$this->db->insert(‘tb_index’,$data);
}}
return redirect(‘Welcome/tampil_index’);
}
public function tampil_index(){
$data[‘tb_index’]=$this->M_model->get_data_all(‘tb_index’)->result();
$this->template->load(‘Home’,’tampil_index’,$data);
}
public function hitung_bobot(){
//berapa jumlah DocId total?, n
$n=$this->M_model->getdistinc(‘tb_index’)->num_rows();
//$n adalah jumlah dokumen
//ambil setiap record dalam tabel tbindex
//hitung bobot untuk setiap Term dalam setiap DocId
$resBobot = $this->M_model->get_data_all(‘tb_index’);
$num_rows = $resBobot->num_rows(); //total bobot pada setiap artikel / dokumen
foreach ($resBobot->result() as $rowbobot) {
$term=$rowbobot->term;
$tf=$rowbobot->count;
$id=$rowbobot->id_index;
$resNTerm = $this->db->query(“SELECT Count(*) as N FROM tb_index WHERE term = ‘$term’ “)->result();
foreach ($resNTerm as $resNterm) {
$NTerm = $resNterm->N;
echo $NTerm;
}
$w = $tf * log($n/$NTerm);
$where=array(‘id_index’=>$id);
$data=array(‘bobot’=>$w);
$this->M_model->update_data($where,$data,’tb_index’);
$data[‘tb_index’]=$this->M_model->get_data_all(‘tb_index’)->result();
$this->template->load(‘Home’,’tampil_index’,$data);
}
}
public function panjangvektor() {
//hapus isi tabel tbvektor
//mysql_query(“TRUNCATE TABLE tbvektor”);
//ambil setiap DocId dalam tbindex
//hitung panjang vektor untuk setiap DocId tersebut
//simpan ke dalam tabel tbvektor
$resDocId = $this->M_model->getdistinc();
$num_rows = $resDocId->num_rows();
print(“Terdapat ” . $num_rows . ” dokumen yang dihitung panjang vektornya. <br />”);
foreach ($resDocId->result() as $rowDocId) {
$docId=$rowDocId->docid;
$resVektor = $this->db->query(“SELECT bobot FROM tb_index WHERE docid = $docId”);
$panjangVektor = 0;
foreach ($resVektor->result() as $rowVektor) {
$panjangVektor= $panjangVektor + $rowVektor->bobot * $rowVektor->bobot;
}
$panjangVektor=sqrt($panjangVektor);
$data=array(‘docid’=>$docId,
‘panjang’=>$panjangVektor);
$this->M_model->insert(‘tb_vektor’,$data);
}
} //end function panjangvektor
public function tampilpanjang_vektor(){
$data[‘tb_vektor’]=$this->M_model->get_data_all(‘tb_vektor’)->result();
$this->template->load(‘Home’,’tampil_vektor’,$data);
}
public function hitungsim($query) {
//ambil jumlah total dokumen yang telah diindex
//(tbindex atau tbvektor), n
$resn = $this->db->query(“SELECT Count(*) as n FROM tb_vektor”);
$rown = $resn->result();
foreach ($rown as $row) {
$n = $row->n;
}
//terapkan preprocessing terhadap $query
$aquery = explode(” “, $query);
//hitung panjang vektor query
$panjangQuery = 0;
$aBobotQuery = array();
for ($i=0; $i<count($aquery); $i++) {
//hitung bobot untuk term ke-i pada query, log(n/N);
//hitung jumlah dokumen yang mengandung term tersebut
$resNTerm = $this->db->query(“SELECT Count(*) as N FROM tb_index WHERE term = ‘$aquery[$i]'”);
$rowNTerm = $resNTerm->result();
foreach ($rowNTerm as $rowt) {
$NTerm = $rowt->N;
}
$idf = log($n/$NTerm);
//simpan di array
$aBobotQuery[] = $idf;
$panjangQuery = $panjangQuery + $idf * $idf;
}
$panjangQuery = sqrt($panjangQuery);
$jumlahmirip = 0;
$resDocId = $this->db->query(“SELECT * FROM tb_vektor ORDER BY docid”);
foreach ($resDocId->result() as $rowDocId) {
$dotproduct = 0;
$docId=$rowDocId->docid;
$panjangDocId=$rowDocId->panjang;
$resTerm = $this->db->query(“SELECT * FROM tb_index WHERE docid = $docId”);
foreach ($resTerm->result() as $rowTerm) {
for ($i=0; $i<count($aquery); $i++) {
//jika term sama
if ($rowTerm->term == $aquery[$i]) {
$dotproduct = $dotproduct + $rowTerm->bobot * $aBobotQuery[$i];
} //end if
} //end for $i
}
//jika ada dokumen yang mirip
if($dotproduct > 0) {
$sim = $dotproduct / ($panjangQuery * $panjangDocId);
//proses input cache ke tabel tbcache
$data=array(‘query’=>$query,
‘docid’=>$docId,
‘value’=>$sim);
$this->M_model->insert(‘tb_cache’,$data);
$jumlahmirip++;
}
}
//jika tidak ada dokumen yang mirip
if ($jumlahmirip == 0) {
$data=array(‘query’=>$query,
‘docid’=>0,
‘value’=>0);
$this->M_model->insert(‘tb_cache’,$data);
}
$resCache = $this->db->query(“SELECT * FROM tb_cache WHERE query = ‘$query’ ORDER BY value DESC”);
$data[‘cache’]=$resCache->result();
$data[‘artikel’] = $this->db->query(“SELECT * FROM tb_artikel”)->result();
return $this->template->load(‘Home’,’tampil_hasil’,$data);
} //end hitungSim()
public function ambilcache(){
$keyword=$this->input->post(‘query’);
$resCache = $this->db->query(“SELECT * FROM tb_cache WHERE query = ‘$keyword’ ORDER BY value DESC”);
$num_rows = $resCache->num_rows();
if ($num_rows >0) {
//tampilkan semua berita yang telah terurut
$data[‘cache’]=$resCache->result();
$data[‘artikel’] = $this->db->query(“SELECT * FROM tb_artikel “)->result();
return $this->template->load(‘Home’,’tampil_hasil’,$data);
}//end if $num_rows>0
else {
redirect(‘Welcome/hitungsim/’.$keyword);
}
}
}
Membuat User Interface di dalam folder application terus view
Buat folder dengan nama Home.php
<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<meta http-equiv=”X-UA-Compatible” content=”IE=edge”>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<meta name=”description” content=””>
<meta name=”author” content=””>
<title>
</title>
<link href=”<?php echo base_url(); ?>asset/bootstrap_3_3_7/css/bootstrap.min.css” rel=”stylesheet”>
<link href=”<?php echo base_url(); ?>asset/bootstrap_3_3_7/css/bootstrap-theme.min.css” rel=”stylesheet”>
</head>
<body>
<div class=”jumbotron”>
<h1 class=”text-center”>SIMBAH</h1>
<h4 class=”text-center”>Cari Apapun Simbah Bisa Membantu</h4>
<hr>
<div class=”container”>
<div class=”navbar-header”>
<button type=”button” class=”navbar-toggle” data-toggle=”collapse” data-target=”#myNavbar”>
<span class=”icon-bar”></span>
<span class=”icon-bar”></span>
<span class=”icon-bar”></span>
</button>
<a class=”navbar-brand black” href=”<?php echo base_url(); ?>”>SIMBAH</a>
</div>
<div class=”collapse navbar-collapse” id=”myNavbar”>
<ul class=”nav navbar-nav “>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/download” class=”black”>Download Data</a></li>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/tampil_artikel” class=”black”>Tampilkan Corpus</a></li>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/buat_index” class=”black”>Buat Index</a></li>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/tampil_index” class=”black”>Tampil Index</a></li>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/hitung_bobot” class=”black”>Hitung Bobot</a></li>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/panjangvektor” class=”black”>Panjang Vektor</a></li>
<li><a href=”<?php echo base_url(); ?>index.php/Welcome/tampilpanjang_vektor” class=”black”>Tampil Panjang Vektor</a></li>
<li><form action=”<?php base_url(); ?>index.php/Welcome/ambilcache” method=”POST”>
<input type=”text” name=”query”>
<input type=”submit” class=”btn btn-info”>
</form></li>
</ul>
</div>
</div>
</div>
<?php echo $content; ?>
<!– jQuery –>
<script src=”<?php echo base_url();?>asset/js/jquery-3.1.1.min.js”></script>
<!– Bootstrap Core JavaScript –>
<script src=”<?php echo base_url(); ?>asset/bootstrap_3_3_7/js/bootstrap.min.js”></script>
</body>
</html>
Buat file dengan nama depan.php
<div class=”contents”>
<div class=”row”>
<div class=”col-xs-12″>
<h3 align=”center”>Kelompok Simbah</h3>
</div>
</div>
</div>
Buat file dengan nama tampil hasil
<div id=”container”>
<?php foreach ($cache as $rowCache) {
$docId = $rowCache->docid;
$sim = $rowCache->value;
if ($docId != 0) {
//ambil berita dari tabel tbberita, tampilkan
foreach ($artikel as $art) {
if ($docId==$art->id_artikel) {?>
<?php echo $sim; ?><a href=”<?php echo $art->url; ?>”> <?php echo $art->title; ?> </a><br>
<p><?php $berita=$art->contents;
$num_char=300;
$kalimat= substr($berita,0,$num_char);
echo $kalimat.'<br>’; ?></p>
<?php }}
} else {
print(“<b>Tidak ada… </b><hr />”);
}
}
?>
</div>
Buat file dengan nama tampil_index.php
<div class=”container”>
<div class=”row”>
<table class=”table table-bordered”>
<thead>
<tr>
<th>Term</th>
<th>Id Documen</th>
<th>Jumlah</th>
<th>Bobot</th>
</tr>
</thead>
<tbody>
<?php foreach ($tb_index as $ti) {?>
<tr>
<td><?php echo $ti->term; ?></td>
<td><?php echo $ti->docid; ?></td>
<td><?php echo $ti->count; ?></td>
<td><?php echo $ti->bobot; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
Buat file dengan nama tampil_vektor.php
<div class=”container”>
<div class=”row”>
<table class=”table table-bordered”>
<thead>
<tr>
<th>DocID</th>
<th>Panjang Vektor</th>
</tr>
</thead>
<tbody>
<?php foreach ($tb_vektor as $ti) {?>
<tr>
<td><?php echo $ti->docid; ?></td>
<td><?php echo $ti->panjang; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
VIDEO: https://www.youtube.com/watch?v=7AE2VXCMHvI&feature=youtu.be
Download ppt: Sistem-Temu-Kembali-Informasi