Hello.. Bertemu lagi ditutorial php dan jquery, kali ini yang mau saya bahas dan berikan tutorialnya adalah mengenai cara mendeteksi tingkat kemiripan teks atau similar text ataupun text similarity dengan menggunakan html, css, php dan jquery.
Ini berguna apabila kita akan copy paste artikel dari website orang lain kemudian kita ingin merubah agar tidak dianggap sebagai plagiat (plagiarism) oleh penulis asli dari website yang kita copy tersebut. Walaupun pada dasarnya copy paste karya orang lain tidak diperbolehkan, namun jika kita ingin improvisasi lebih saya rasa sah-sah saja selama itu tidak benar-benar mirip dengan aslinya dan melanggar UU ITE.
Aplikasi ini mengadopsi function yang dibuat oleh Rochak Chauhan (thanks to Rochak Chauhan). tapi sebelum saya menemukan function ini, php sendiri telah menyediakan function similar_text untuk mendeteksi tingkat kemiripan kata/text, hanya saja kita tidak bisa mengetahui berapa tingkat perbedaan dari text tersebut? Maka dari itu secara tidak sengaja juga saya menemukan function Rochak Chauhan. Nanti akan saya coba bagaimana pemakaian function similar_text tersebut dibagian akhir artikel ini.
Oh ya, tutorial kali ini masih berhubungan dengan tutorial saya yang membahas Penghitung Jumlah Kata (Word Counter) Dengan PHP dan jQuery karena pada tutorial kali ini saya menggabungkan penghitung kata dengan pendeteksi kemiripan kata. Jadi nanti sintaksnya akan terlihat panjang, saya sarankan untuk membaca artikel Penghitung Jumlah Kata (Word Counter) Dengan PHP dan jQuery terlebih dahulu agar nanti tidak terlalu bingung. kita mulai tutorialnya~
Menggunakan function Rochak Chauhan :
Pertama, seperti biasa buat project baru, karena kita menggunakan jquery juga maka sediakan file jquery nya. Saya tidak akan menjelaskan bagaimana melakukan proses ini karena pasti kalian sudah tahu.
Kedua, buat file index.php, ketik code berikut ini
<!DOCTYPE html> <!-- Creator : Indra Ahmad Iskandar Email : indraiskandar10@gmail.com Visit : http://indra92.blogspot.co.id --> <html> <head> <meta charset="UTF-8"> <title></title> <style> body{background: gainsboro;} .tabel-input{margin:0 auto;} #info{text-align: center; margin-top: 20px;} #info p{font-size: 1.3em; font-weight: bold; color: gray} .center{text-align: center;} .center .text {width: 99%; height: 400px;} .button {width: 100px;height: 40px; background: cornflowerblue; color: #fff; cursor: pointer; border-radius: 5px; font-weight: bold} .button:hover{opacity: 0.8;} .kalimat1 {background: cornflowerblue;} .kalimat2 {background: cornflowerblue;} .kalimat1, .kalimat2{color: #eee;} .ta1:hover{border-color: cornflowerblue;} .ta2:hover{border-color: cornflowerblue;} .logo {position: absolute; z-index: 1; left: 620px; top: 250px; margin: 0 auto;} .logo img{width: 100px; opacity: 0.5;} #display_count1, #display_count2, #info1, #info2, .gray{color: gray; font-weight: bold;} </style> <script src="jquery-2.2.3.min.js"></script> </head> <body> <form id="formInput"> <table border="0" width="90%" class="tabel-input"> <div class="logo"><img src="indra92-logo.png"></div> <tr> <td class="center kalimat1"><h3>Kalimat ke-1 (Artikel Asli)</h3></td> <td class="center kalimat2"><h3>Kalimat ke-2 (Artikel Baru)</h3></td> </tr> <tr> <td class="center"><textarea class="text ta1" name="ta1" placeholder="ketikkan satu atau lebih kalimat.."></textarea></td> <td class="center"><textarea class="text ta2" name="ta2" placeholder="ketikkan satu atau lebih kalimat.."></textarea></td> </tr> <tr> <td class="center gray"> Total Kata : <span id="display_count1">0</span> kata. <div id="info1">Tidak ada info</span></div></td> <td class="center gray"> Total Kata : <span id="display_count2">0</span> kata. <div id="info2">Tidak ada info</span></div></td> </tr> <tr> <td colspan="2" class="center"> <input type="button" name="process" id="process" class="button" value="Proses"> </td> </tr> </table> <div id="info"><p>.:: Hasil kemiripan kalimat akan muncul setelah anda mengisi kolom diatas ::.</p></div> </form> <script> $(".ta1").on('keydown', function (e) { var words = $.trim(this.value).length ? this.value.match(/\S+/g).length : 0; if (words == 0) { $('#display_count1').text(words); $('#info1').text('Tidak ada info').css('color', ''); } else if (words <= 300) { $('#display_count1').text(words); $('#info1').text('Masih Kurang ke 300 kata').css('color', 'red'); } else { $('#display_count1').text(words); $('#info1').text('Telah Mencapai 300 kata').css('color', 'green'); } }); $(".ta2").on('keydown', function (e) { var words = $.trim(this.value).length ? this.value.match(/\S+/g).length : 0; if (words == 0) { $('#display_count2').text(words); $('#info2').text('Tidak ada info').css('color', ''); } else if (words <= 300) { $('#display_count2').text(words); $('#info2').text('Masih Kurang ke 300 kata').css('color', 'red'); } else { $('#display_count2').text(words); $('#info2').text('Telah Mencapai 300 kata').css('color', 'green'); } }); $('#process').click(function (e) { e.preventDefault(); var kalimat1 = $('.ta1').val(); var kalimat2 = $('.ta2').val(); if (kalimat1 == '' || kalimat2 == '') { $('#info').html('<p>Kalimat ke-1 dan(atau) ke-2 tidak boleh kosong!!</p>'); } else { $.ajax({ type: "POST", url: "action.php", data: $("#formInput").serialize(), // serializes the form's elements. success: function (data) { //console.log(data); $('#info').html(data); } }); } }); </script> </body> </html>
Ketiga, buat file phpCompareStrings.inc.php (hati-hati dengan penamaan file nya), lalu ketik code ini
<?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; } } ?>
Keempat, buat file action.php, ketik code ini
<?php if (isset($_POST['ta1'])) { $string1 = $_POST['ta1']; $string2 = $_POST['ta2']; require("phpCompareStrings.inc.php"); $phpCompareStrings = new PhpCompareStrings($string2, $string1); $percent = $phpCompareStrings->getSimilarityPercentage(); $percent2 = $phpCompareStrings->getDifferencePercentage(); echo '<p>Kalimat ke-1 dan ke-2 memiliki kemiripan = ' . $percent . '% dan perbedaan ' . $percent2 . '%</p>'; } ?>
Kelima, save dan coba jalankan
Lalu, bagaimana cara menggunakan function similar_text bawaan dari php?, tidak sulit hanya tinggal merubah file action menjadi seperti ini :
Menggunakan function similar_text Php :
<?php if (isset($_POST['ta1'])) { $string1 = $_POST['ta1']; $string2 = $_POST['ta2']; similar_text($string1, $string2, $persen); echo '<p>Kalimat ke-1 dan ke-2 memiliki kemiripan = ' . $persen . '%</p>'; } ?>
Penampakan Hasil Akhir :
Terimakasih dan sampai bertemu lagi di tutorial berikutnya ...
1 komentar so far
gk bisadownload mas
Komentar yang mengandung spam / link aktif akan secara otomatis disembunyikan. Mohon maaf atas ketidaknyamanan jika pertanyaan telat ataupun tidak terbalas karena keterbatasannya waktu. Silahkan hubungi kami di menu Contact Us. Terimakasih
EmoticonEmoticon