Sastrawi
Sastrawi is a simple PHP library which allows you to reduce inflected words in Indonesian Language (Bahasa Indonesia) to their base form (stem). Despite its simplicity, this library is designed to be high quality and well documented. For more information in english, see README.
Development | Master | Releases | Statistics |
---|---|---|---|
Stemming
Stemming adalah proses mengubah kata berimbuhan menjadi kata dasar. Contohnya:
- menahan => tahan
- berbalas-balasan => balas
Contoh kasus
Katakanlah sebuah blog post berisi:
Rakyat memenuhi halaman gedung untuk menyuarakan isi hatinya.
Pencarian dengan query di bawah ini tidak akan menemukan post di atas,
SELECT * FROM posts WHERE content LIKE '%suara%'
Proses stemming dapat membantu menemukan dokumen yang sedang dicari yaitu dengan menanggalkan imbuhan-imbuhan hingga hanya menyisakan kata dasar seperti berikut:
rakyat penuh halaman gedung suara isi hati
Lalu kata kunci pencarian juga dijadikan kata dasar:
Bersuara => suara
Sastrawi
- Library PHP untuk stemming Bahasa Indonesia.
- Mudah diintegrasikan dengan framework / package lainnya.
- Mempunyai API yang sederhana dan mudah digunakan.
Demo
Cara Install
Sastrawi dapat diinstall dengan Composer.
- Buka terminal (command line) dan arahkan ke directory project Anda.
- Download Composer sehingga file
composer.phar
berada di directory tersebut. - Tambahkan sastrawi ke file
composer.json
Anda :
php composer.phar require sastrawi/sastrawi:^1
Jika Anda masih belum memahami bagaimana cara menggunakan Composer, silahkan baca Getting Started with Composer.
Cara menjalankan test
vendor/bin/phpunit
Penggunaan
Copy kode berikut di directory project anda. Lalu jalankan file tersebut.
<?php
// demo.php
// include composer autoloader
require_once __DIR__ . '/vendor/autoload.php';
// create stemmer
// cukup dijalankan sekali saja, biasanya didaftarkan di service container
$stemmerFactory = new \Sastrawi\Stemmer\StemmerFactory();
$stemmer = $stemmerFactory->createStemmer();
// stem
$sentence = 'Perekonomian Indonesia sedang dalam pertumbuhan yang membanggakan';
$output = $stemmer->stem($sentence);
echo $output . "\n";
// ekonomi indonesia sedang dalam tumbuh yang bangga
echo $stemmer->stem('Mereka meniru-nirukannya') . "\n";
// mereka tiru
Menambah dan Mengurangi Kata Dasar
<?php
// include composer autoloader
require_once __DIR__ . '/vendor/autoload.php';
// create stemmer
// cukup dijalankan sekali saja, biasanya didaftarkan di service container
$stemmerFactory = new \Sastrawi\Stemmer\StemmerFactory();
$dictionary = $stemmerFactory->createDefaultDictionary();
$dictionary->addWordsFromTextFile(__DIR__.'/my-dictionary.txt');
$dictionary->add('internet');
$dictionary->remove('desa');
$stemmer = new \Sastrawi\Stemmer\Stemmer($dictionary);
var_dump($stemmer->stem('internetan')); //internet
Pustaka
Algoritma
Algoritma yang digunakan pada library ini adalah hak intelektual masing-masing pemiliknya yang tertera di bawah ini. Lalu untuk meningkatkan kualitas kode, algoritma tersebut diterapkan ke dalam Object Oriented Design.
- Algoritma Nazief dan Adriani
- Asian J. 2007. Effective Techniques for Indonesian Text Retrieval. PhD thesis School of Computer Science and Information Technology RMIT University Australia
- Arifin, A.Z., I.P.A.K. Mahendra dan H.T. Ciptaningtyas. 2009. Enhanced Confix Stripping Stemmer and Ants Algorithm for Classifying News Document in Indonesian Language, Proceeding of International Conference on Information & Communication Technology and Systems (ICTS)
- A. D. Tahitoe, D. Purwitasari. 2010. Implementasi Modifikasi Enhanced Confix Stripping Stemmer Untuk Bahasa Indonesia dengan Metode Corpus Based Stemming, Institut Teknologi Sepuluh Nopember (ITS) � Surabaya, 60111, Indonesia
Kamus Kata Dasar
Proses stemming oleh Sastrawi sangat bergantung pada kamus kata dasar. Sastrawi menggunakan kamus kata dasar dari kateglo.com dengan sedikit perubahan.
Lisensi
Lisensi sastrawi adalah MIT License (MIT) sedangkan lisensi kamus kata dasar dari Kateglo adalah CC-BY-NC-SA 3.0. Untuk informasi lebih lengkap silahkan lihat Lisensi Sastrawi dan Lisensi isi Kateglo.
Di Bahasa Pemrograman Lain
- JSastrawi - Java
- cSastrawi - C
- PySastrawi - Python
- Go-Sastrawi - Go
- Sastrawi-Ruby - Ruby