Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Belajar PHP: Deteksi Plagiarisme dengan Komparasi String

Posted on January 18, 2014

Pengantar

Plagiarisme (penjiplakan) adalah salah satu kejahatan, tidak saja secara moral dan etik bermasalah, namun secara hukum. Nah, bagaimana cara mengetahui sebuah karya tulis merupakan hasil jiplakan karya orang lain? tentunya kita harus melakukan deteksi dengan berbagai teknik dan algoritma tersendiri.

Dalam posting kali ini, saya akan mencoba mendemonstrasikan deteksi plagiarisme konten dengan teknik komparasi string dalam bahasa PHP. Algoritma ini (tampaknya) yang digunakan oleh Sistem Informasi Sertifikasi dosen Nasional yang mendeteksi apakah portofolio yang dikirim merupakan jiplakan dari orang lain.

Source Code

Kode sumber yang saya ulas disini adalah karya dari Rochak Chauhan dari DMWTechnologies. Berikut adalah class PHP-nya

[sourcecode language=”php”]
<?php
/**
* This class compares two strings and outputs the similarities as percentage
*
*@author Rochak Chauhan <rochak@dmwtechnologies.com>
*/
class PhpCompareStrings{
private $str1="";
private $str2="";

private $arr1=array();
private $arr2=array();

/**
*Contructor fucntion
*
*@param string $str1
*@param string $str2
*@return string
*/
function __construct($str1,$str2){
$str1=trim($str1);
$str2=trim($str2);
if($str1==""){ trigger_error("First parameter can not be left blank", E_USER_ERROR); }
elseif($str2==""){ trigger_error("Second parameter can not be left blank", E_USER_ERROR); }
else{
$this->str1=$str1;
$this->str2=$str2;
$this->arr1=explode(" ",$str1);
$this->arr2=explode(" ",$str2);
}
}

/**
*Function to compare two strings and return the similarity in percentage
*
*@access public
*@return float
*/
public function getSimilarityPercentage(){
$str1=$this->str1;
$str2=$this->str2;
$tmp1=$this->arr1;
$c1=count($tmp1);
$tmp2=$this->arr2;
$c2=count($tmp2);
$count=$c1;
$t1=$tmp1;
$t2=$tmp2;
if($c2>$c1){
$count=$c2;
$t1=$tmp1;
$t2=$tmp2;
}
$result=array();
for($i=0;$i<$count;$i++){
if(@$t1[$i]==@$t2[$i]){
$result[]=1;
$resultSame[]=0;
}
else{
$result[]=0;
$resultSame[]=levenshtein(@$t1[$i],@$t2[$i]);
}
}
$countArray=array_count_values($result);
$one=0;
$zero=0;
if(isset($countArray[0])){ $zero=$countArray[0]; }
if(isset($countArray[1])){ $one=$countArray[1]; }
if($one===0){ $percent=number_format(0,2); }
elseif($zero===0){ $percent=number_format(100,2); }
else{
$per=($one/($one+$zero))*100;
$percent=number_format($per,2);
}
if($c1===$c2){
$words1 = array_diff_assoc($tmp1,$tmp2);
$words2 = array_diff_assoc($tmp2,$tmp1);
$sum=array_sum($resultSame);
$sum=($sum/100);
$percent=($percent-$sum);
}
return $percent;
}

/**
*Function to compare two strings and return the difference in percentage
*
*@access public
*@return float
*/
public function getDifferencePercentage(){
$per=$this->getSimilarityPercentage();
return 100-$per;
}
}
?>
[/sourcecode]

Sedangkan untuk contoh penggunaannya, sebagai berikut:

[sourcecode language=”php”]
<?php

$string1="Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, quo voluptas nulla pariatur? [33] At vero eos et accusamus et iusto odio dignissimos ducimus, qui blanditiis praesentium voluptatum deleniti atque corrupti, quos dolores et quas molestias excepturi sint, obcaecati cupiditate non provident, similique sunt in culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet, ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.";

$string2="Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur? [33] At vero eos et accusamus et iusto odio dignissimos ducimus, qui blanditiis praesentium voluptatum deleniti atque corrupti, quos dolores et quas molestias excepturi sint, obcaecati cupiditate non provident, similique sunt in culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio, cumque nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet, ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.";

require("phpCompareStrings.inc.php");
$phpCompareStrings=new PhpCompareStrings($string2, $string1);
$percent=$phpCompareStrings->getSimilarityPercentage();
$percent2=$phpCompareStrings->getDifferencePercentage();
echo ‘$string1 and $string2 are ‘.$percent.’% similar and ‘.$percent2.’% differnt’;
?>
[/sourcecode]

Contoh kasus diatas adalah deteksi kesamaan konten antara naskah asli pidato Cicero: De finibus bonorum et malorum dengan naskah yang sudah saya edit, yang ternyata menghasilkan 39.20% mirip.

Selamat mencoba!

Terbaru

  • Apple Dikabarkan Bikin iPhone Layar Lengkung 4 Sisi, Niru Xiaomi?
  • Inikah HP Samsung Terawet? Samsung Diam-diam Uji Baterai 20.000 mAh
  • Ini Deretan HP Murah RAM 12 GB yang Bisa Bikin Multitasking Ngebut!
  • Ini Trik Rahasia Dapat Candy Blossom di Grow a Garden, Nggak Cuma dari Event!
  • Siap-siap Boros! Ini Bocoran Skin Starlight Januari 2026 dan Update Seru M7
  • Moto X70 Air Pro Bakal Punya Kamera Periskop Canggih!
  • Ternyata Nggak Semua Aplikasi Bisa QRIS CPM di Alfamart, Ini Penjelasannya!
  • Lagi Order Tiba-tiba Gojek Error? Jangan Panik Dulu, Coba Langkah Praktis Ini!
  • Belum Tahu? Inilah Cara Melihat Kode Verifikasi Email Saya 6 Digit yang Sering Bikin Bingung!
  • Belum Tahu? Ini Cara Dapat Akses Premium Viu & Vidio Gratis Pakai Axis!
  • Belum Tahu? Inilah Fakta Kamera 0,5 di Samsung Galaxy A05s, Jangan Salah Beli!
  • Nggak Perlu Panik! Ini Trik Jitu Mengatasi Preview Pane PDF yang Hilang di Windows 10 & 11
  • Ini Video Cikgu Nisa Viral di TikTok? Awas Jangan Asal Klik Link Nonton!
  • Kok Menu Undang Teman di Melolo Hilang? Gini Cara Mengembalikannya!
  • Apa Itu Putlocker? Ini Pengertian dan Deretan Alternatif Penggantinya
  • Apa Itu Extend Volume? Ini Cara Memperluas Drive C di Windows 11
  • Ini Trik AFK Fish It Roblox Pakai LDCloud, Auto Panen Ikan Tanpa Bikin HP Panas!
  • Apa itu Game Zenless Zone Zero (ZZZ) HoYoVerse? Ini Cara Mainnya
  • Cuma Kurang 1 Rupiah! Misteri Lucky Draw Akulaku Rp300 Ribu, Bisa Cair Nggak Sih?
  • Video Melolo Cuma Layar Hitam? Ini Trik Ampuh Mengatasinya, Pasti Berhasil!
  • Mau Simpan Video Twitter dan TikTok Tanpa Aplikasi? Begini Cara Praktis Pakai VidsSave!
  • Mau Gaji Dolar? Gini Caranya Tembus Kerja di Australia, Jangan Sampai Salah Visa!
  • Belum Tahu? Inilah Fakta MigoReels, Katanya Nonton Drama Bisa Dapat Rp700 Ribu!
  • Apa Itu Event Invite Friends CapCut? Ini Pengertian dan Cara Kerjanya Biar Cuan
  • Apa Itu MJ di FF? Ini Pengertian, Asal-Usul, dan Risiko di Balik Istilah Tersebut
  • Apa Itu Pengertian Penonaktifan SPayLater? Ini Durasi Blokir Akibat Telat Bayar
  • Apa Itu Rasio Gambar Ukuran 1:1 di Canva? Ini Pengertian dan Cara Buatnya
  • Pengiriman Shopee Express Hemat itu Berapa Lama? Ini Pengertian dan Estimasi Sampainya
  • Android 2025: Aplikasi Baru dan Smartphone Impian yang Akan Datang!
  • Apa Itu Google AI Pro Ultra? Ini Pengertian dan Penjelasan Lengkapnya
  • Apa itu Cosmic Desktop: Pengertian dan Cara Pasangnya di Ubuntu 26.04?
  • Apa Itu Auvidea X242? Pengertian Carrier Board Jetson T5000 dengan Dual 10Gbe
  • Elementary OS 8.1 Resmi Rilis: Kini Pakai Wayland Secara Standar!
  • Apa Itu Raspberry Pi Imager? Pengertian dan Pembaruan Versi 2.0.3 yang Wajib Kalian Tahu
  • Performa Maksimal! Ini Cara Manual Update Ubuntu ke Linux Kernel 6.18 LTS
  • Begini Cara Buat Generator Stiker WhatsApp Otomatis Menggunakan Python dan OpenAI GPT-Image-1
  • Inilah Cara Kerja AI Instagram Deteksi Konten Berbahaya dan Spam Secara Otomatis
  • Prompt AI Tahun Baruan di Bundaran HI
  • Prompt AI Pamer iPhone 17 Pro Max Orange
  • Apa itu GPT 5.2 di Microsoft Copilot? Ini Pengertian dan Keunggulannya
  • Apa Itu Paket WhatsApp API Palsu di NPM? Ini Pengertian dan Bahayanya
  • Apa Itu Serangan Spear-Phishing Microsoft 365? Ini Pengertian dan Modusnya
  • Apa Itu Ploutus? Mengenal Ransomware P0ADUS yang Baru Saja Ditindak DOJ
  • Apa itu CVE-2025-68664? Memahami Celah Keamanan LangGrinch pada LangChain
  • Kronologi Kasus Pencurian Data Karyawan Data Breach Korean Air 2025
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

©2026 emka.web.id | Design: Newspaperly WordPress Theme