Tokenisasi
Pertama Tokenisasi adalah proses untuk membagi teks yang dapat berupa kalimat, paragraf atau
dokumen, menjadi token - token / bagian - bagian tertentu.
Sebagai contoh, tokenisasi dari kalimat "Aku baru saja makan bakso pedas"
menghasilkan enam token, yakni: "Aku", "baru", "saja", "makan", "bakso", "pedas".
Biasanya, yang menjadi acuan pemisah antar token adalah spasi dan tanda baca. Tokenisasi seringkali
dipakai dalam ilmu linguistik dan hasil tokenisasi berguna untuk analisis teks lebih lanjut. Contoh
program tokenisasi yang dapat diakses via online adalah MorphAdorner dan NLTK Tokenizer
Berikut kodingan di PHP nya
<?php
if (isset($_POST['kalimat'])) {
# code...
$kalimat=$_POST['kalimat'];
echo " Kalimat Awal : <br>"."$kalimat";
echo "<br><br>";
$hasil=explode(" ",$kalimat);
Pada Term Frequency (TF), terdapat beberapa jenis formula yang dapat digunakan :
1. TF biner (binary TF), hanya memperhatikan apakah suatu kata atau term ada atau tidak
dalam dokumen, jika ada diberi nilai satu (1), jika tidak diberi nilai nol (0).
2. TF murni (raw TF), nilai TF diberikan berdasarkan jumlah kemunculan suatu term di
dokumen. Contohnya, jika muncul lima (5) kali maka kata tersebut akan bernilai lima (5).
3. TF logaritmik, hal ini untuk menghindari dominansi dokumen yang mengandung sedikit
term dalam query, namun mempunyai frekuensi yang tinggi.
Rumus TF logaritmik
Dimana nilai ft,d adalah frekuensi term (t) pada document (d).
Jadi jika suatu kata atau term terdapat dalam suatu dokumen sebanyak 5 kali maka diperoleh
bobot = 1 + log (5) = 1.699. Tetapi jika term tidak terdapat dalam dokumen tersebut,
bobotnya adalah nol (0).
4. TF normalisasi, menggunakan perbandingan antara frekuensi sebuah term dengan nilai
maksimum dari keseluruhan atau kumpulan frekuensi term yang ada pada suatu dokumen.
Rumus TF normalisasi
IDF menunjukkan hubungan ketersediaan sebuah term dalam seluruh dokumen. Semakin sedikit
jumlah dokumen yang mengandung term yang dimaksud, maka nilai IDF semakin besar.
Sedangkan untuk Inverse Document Frequency (IDF) dihitung dengan menggunakan formula
sebagai berikut:
Rumus IDF
Dimana D adalah jumlah semua dokumen dalam koleksi sedangkan dfj adalah jumlah dokumen
yang mengandung term (tj).
Jenis formula TF yang biasa digunakan untuk perhitungan adalah TF murni (raw TF). Dengan
demikian rumus umum untuk Term Weighting TF-IDF adalah penggabungan dari formula
perhitungan raw TF dengan formula IDF dengan cara mengalikan nilai TF dengan nilai IDF:
Rumus TF-IDF
Dimana Wij adalah bobot term (tj) terhadap dokumen (di). Sedangkan tfij adalah jumlah
kemunculan term (tj) dalam dokumen (di). D adalah adalah jumlah semua dokumen yang ada
dalam database dan dfj adalah jumlah dokumen yang mengandung term (tj) (minimal ada satu
kata yaitu term (tj)).
Berapapun besarnya nilai tfij, apabila D = dfj, maka akan didapatkan hasil 0 (nol), dikarenakan
hasil dari log 1, untuk perhitungan IDF. Untuk itu dapat ditambahkan nilai 1 pada sisi IDF,
sehingga perhitungan bobotnya menjadi sebagai berikut :
Rumus TF-IDF +1
Setelah melalui proses ini, maka kata “of”, “in”, dan “a” pada ketiga dokumen dihapus lalu di-
stemming sehingga didapatkan term-term (documents terms) sebagai berikut:
– ship – gold – damage – fire – deliver – silver – arrive – truck
Fungsi metode ini adalah untuk mencari representasi nilai dari tiap dokumen dalam koleksi. Dari
sini akan dibentuk suatu vektor antara dokumen dan query yang ditentukan oleh nilai bobot term
query dalam dokumen.
Semakin besar nilai perhitungan bobot yang diperoleh maka semakin tinggi tingkat similaritas
dokumen terhadap query. Contohnya untuk perhitungan bobot (w) term query silver dalam
dokumen2 (d2) = Delivery of silver arrived in a silver truck, yaitu: jumlah kemunculan term
silver dalam dokumen 2 (d2) adalah sebanyak dua kali (tf = 2), total dokumen yang ada di
koleksi sebanyak tiga dokumen (D)=3, dari ketiga dokumen dalam koleksi, term silver muncul
pada dokumen 2 (d2) saja, sehingga total dokumen yang mengandung term silver adalah satu
dokumen (df)=1, sehingga dapat diperoleh nilai bobot term silver pada dokumen 2 (d2)
Dengan demikian dapat diperoleh nilai bobot (w) untuk setiap term pada query dalam masing-
masing dokumen:
Why GitHub?
Enterprise
Explore
Marketplace
Pricing
Sign inSign up
Watch 34
Star 299
Fork 57
yooper/php-text-analysis
Dismiss
Sign up
Branch: master
php-text-analysis/src/Indexes/TfIdf.php
Find file Copy path
yooper Add text corpus, lexical diversity algorithms and helper methods f2b4453 on Oct 29, 2017
1 contributor
RawBlame History
<?php
namespace TextAnalysis\Indexes;
use TextAnalysis\Analysis\FreqDist;
use TextAnalysis\Interfaces\ICollection;
use TextAnalysis\Documents\DocumentAbstract;
/**
*/
class TfIdf
/**
*/
const FREQUENCY_MODE = 1;
const BOOLEAN_MODE = 2;
const LOGARITHMIC_MODE = 3;
const AUGMENTED_MODE = 4;
/**
*/
/**
*/
{
$this->buildIndex($collection);
$freqDist = freq_dist($document->getDocumentData());
if(!isset($this->idf[$key])) {
$this->idf[$key] = 0;
$this->idf[$key]++;
$count = count($collection);
$value = log(($count)/($value));
/**
* @return float|array
*/
if(!$token){
return $this->idf;
return $this->idf[$token];
/**
* @return int|float
*/
$keyValuesByWeight = $freqDist->getKeyValuesByFrequency();
if(!isset($keyValuesByWeight[$token])) {
return 0;
switch($mode) {
case self::BOOLEAN_MODE:
//a test was already performed if the token exists in the document
case self::LOGARITHMIC_MODE:
return log($keyValuesByWeight[$token]+1);
case self::AUGMENTED_MODE:
$maxFrequency = current($keyValuesByWeight);
case self::FREQUENCY_MODE:
default:
return $keyValuesByWeight[$token];
/**
* @return float
*/
}
}