Anda di halaman 1dari 28

Nama : Abdullah Hafidh

NPM : 0706271380
Mata Kuliah : Perolehan Informasi

Daftar Isi
Penjelasan mengenai Algoritma yang digunakan ......................................................................................... 1
Pemotongan awalan ................................................................................................................................. 1
Rule 1 # ........................................................................................................................................... 1
Rule 2# ............................................................................................................................................ 1
Rule 3# ............................................................................................................................................ 1
Rule 4# - Proses pemotongan awalan ........................................................................................... 1
Pemotongan akhiran ................................................................................................................................. 3
Rule #1 ............................................................................................................................................ 3
Rule 2# ............................................................................................................................................ 3
Rule 3# ............................................................................................................................................ 3
Rule 4# ............................................................................................................................................ 3
Rule 5# ............................................................................................................................................ 4
Hasil Stemming ............................................................................................................................................. 4
Analisa Hasil Stemmer ................................................................................................................................. 6
Analisa Hasil stemming strategi awalan akhiran ........................................................................ 12
Analisa Hasil stemming strategi akhiran-awalan ........................................................................... 12
Program Perl Stemming Algorithm tanpa kamus kata dasar ................................................................... 13


Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

1

Penjelasan mengenai Algoritma yang digunakan
1. Stemming strategi awalan akhiran
Stemming strategi ini dilakukan dengan 2 tahap yang berurutan yaitu
a. Pemotongan awalan hingga tidak ada lagi awalan yang ditemukan, kemudian
b. Pemotongan akhiran hingga tidak ada lagi akhiran yang ditemukan

2. Stemming strategi akhiran awalan
Stemming strategi ini dilakukan dengan 2 tahap yang berurutan yaitu
a. Pemotongan akhiran hingga tidak ada lagi akhiran yang ditemukan, kemudian
b. Pemotongan awalan hingga tidak ada lagi awalan yang ditemukan
Pada dasarnya, algoritma pemotongan awalan maupun akhiran pada kedua strategi sama saja. Namun,
urutan eksekusi menjadikannya berbeda. Berikut penjelasannya :
Pemotongan awalan
Rule 1 #
Jika kata yang akan di stemming berjumlah 2 karakter saja, maka proses stemming tidak
dilakukan.
Rule 2#
Pemotongan awalan me-, be-, pe-, di-, ke-, te-, se-, hanya dilakukan satu kali saja tidak
boleh berulang.
Rule 3#
Jika kata hasil proses stemming berjumlah 2 karakter, maka algoritma akan
menggembalikan kata sebelum stemming dilakukan.
Rule 4# - Proses pemotongan awalan
a. Awalan me-
1. Jika kata diawali dengan pola mem-(b atau f atau v atau p) maka awalan mem
dibuang. Contoh : membasmi mem-basmi sehingga di stemming menjadi basmi
2. Jika kata diawali dengan pola mem (huruf vokal) (bukan huruf vokal) maka
awalan me dibuang dan awalan m (setelah me- dibuang) diganti dengan huruf p.
pola ini dianggap bentuk peluruhan m dengan p. contoh : memaku mem-aku
maku paku, memaksa mem-aksa aksa paksa. Namun mungkin terjadi
kesalahan seperti memakan mem-akan akan pakan padahal kata dasarnya
makan.
3. Jika kata diawali dengan pola meny- maka buang awalan me- dan ubah awalan ny-
dengan huruf s- contoh : menyapu meny-apu nyapu sapu, menyakiti
meny-akiti nyakiti sakiti. Namun, mungkin terdapat kesalahan misalnya
menyanyi meny-anyi nyanyi sanyi padahal kata dasarnya nyayi.
4. Jika kata diawali dengan pola men- (c, d, t, j, z, (a,I,u,e, atau o)y ) maka buang
awalan men-. Contoh : mencuci men-cuci cuci, mendata men-data data,
menjadi men-jadi jadi, menzalimi men-zalimi zalimi
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

2

5. Jika kata diawali dengan pola men (huruf vokal), maka buang awalan me- dan ubah
awalan n- menjadi huruf t (peluruhan). Contoh meninju men-inju ninju tinju.
6. Jika kata diawali dengan pola menge-(huruf vocal) (bukan huruf vocal ) (huruf
vocal) maka buang awalan menge. Contoh : mengesampingkan menge-
sampingkan sampingkan. Mengecam menge-cam tidak dibuang.
7. Jika kata diwali dengan pola meng- (huruf vocal) (k, g, h, atau (bukan huruf vocal
berurutan 2 kali) , maka buang awalan meng. Contoh : mengkambinghitamkan
meng-kambinghitamkan kambinghitamkan, menggambar meng-gambar
gambar, menghasilkan meng-hasilkan hasilkan, mengkhawatirkan meng-
khawatirkan khawatirkan.
8. Selain aturan diatas, maka potong awalan me- jika kata tersebut mengandung pola
awalan me-
b. Awalan be-
1. Jika kata mengandung pola, bel- ajar, maka buang awalan bel. Contoh belajar bel-
ajar ajar
2. Jika kata mengandung pola awalan be huruf apapun er, maka buang huruf be-.
Contoh : bekerja be-kerja kerja.
3. Jika kata mengandung pola awalan be r huruf vocal , maka buang awalan be-
contoh : berasa be rasa rasa, beriak be riak riak. Namun, mungkin
terjadi kesalahan, misalnya beradu be - radu radu seharusnya adu.
4. Jika kata mengandung pola awalan ber -, maka potong awalan ber-.
5. Jika kata mengandung pola awalan be-, maka potong awalan be-
c. Awalan pe-
1. Jika kata mengandung pola, pel- ajar, maka buang awalan pel. Contoh pelajar pel-
ajar ajar
2. Jika kata mengandung pola penge bukan deretan huruf vocal huruf vocal bukan
huruf vocal maka buang awalan penge - . Contoh : pengetik penge-tik tik
3. Jika kata mengandung pola peng- (huruf vocal, k, g, h, 2 deretan bukan huruf vocal)
- maka buang awalan peng-. Contoh : pengaman peng-aman aman,
pengkhianat peng-khianat khianat, pengurus peng-urus urus. Namun
mungkin terjadi kesalahan seperti : pengirim peng-irim irim
4. Jika kata mengandung pola pen d, c, j, l maka buang awalan pen. Contoh :
pendahulu pen-dahulu dahulu
5. Jika kata mengandung pola peny- maka buang awalan pe- lalu ubah awalan ny-
menjadi s (peluluhan). Contoh : penyiar pe-nyiar nyiar siar.
6. Jika kata mengandung pola pem b, p maka buang awalan pem . Contoh :
pembeda pem- beda beda.
7. Jika kata mengandung pola per a,I,u,e,o maka buang awalan per. Contoh :
peristri per-istri istri. Namun, mungkin terdapat kesalahan seperti peringan
per-ingan ingan, seharusnya ringan
8. Jika kata mengandung pola per- maka buang awalan per
9. Jika kata mengandung pola pe l, r, w, y maka buang awalan pe-. Contoh :
pelamun pe-lamun lamun, pewayang pe-wayang wayang
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

3

10. Jika kata mengandung pola pe m, n, ng, ny a,I,u,e,o maka buang awalan pe-.
Contoh pemenang pe-menang menang.
d. Awalan di-
1. Jika kata mengandung pola di maka buang awalan di-. Contoh : dimaksud di-
maksud maksud
e. Awalan ke-
1. Jika kata mengandung pola ke- maka buang awalan ke-
f. Awalan te-

Sumber: Stemming Indonesian, Jelita Asian Hugh E., Williams S.M.M., Tahaghoghi
(Nazief and Adriani's Algorithm).
Table diatas adalah aturan untuk awalan te, pada mulanya awalan te- dibuang, kemudian
di cek apakah awalan selanjutnya adalah r, atau bukan r ata huruf vocal (lihat kolom set
1), kemudian jika termasuk salah satu diatas maka lihat kolom set-2, dan seterusnya
berdasarkan table diatas.
g. Awalan se-
1. Jika kata mengandung pola se- maka buang awalan se-.
Pemotongan akhiran
Rule #1
Jika kata yang akan di stemming berjumlah 2 karakter saja, maka proses stemming tidak
dilakukan.
Rule 2#
Pemotongan akhiran dibagi atas 3 kategori yaitu Derivation Suffix, Possessive pronouns,
dan Particles. Pemotongan masing-masing kategori hanya boleh dilakukan satu kali
saja. Yang termasuk Derivation Suffix adalah akhiran an dan I, sedangkan yang
termasuk Possessive pronouns adalah ku, -mu, -nya. Dan yang termasuk Particles
adalah kah, -lah, -tah, -pun.
Rule 3#
Jika kata hasil proses stemming berjumlah 2 karakter, maka algoritma akan
menggembalikan kata sebelum stemming dilakukan.
Rule 4#
Jika kata termasuk dalam akhiran an atau I (termasuk wan, -wati, atau kan), maka
terlebih dahulu cek apakah terdapat awalan yang tidak boleh ada. Aturan tersebut adalah
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

4


Sumber: Stemming Indonesian, Jelita Asian Hugh E., Williams S.M.M., Tahaghoghi
(Nazief and Adriani's Algorithm).
Rule 5#
Jika kata mengandung pola akhiran kan, -wan, -wati, -an, -I, -lah, -kah, tah, -nya, -mu, -ku,
atau -pun maka buang akhiran tersebut. Urutan pengecekan dimulai dari kiri ke kanan
(misalnya : cek dulu akhiran kan baru cek awalan wan, dan seterusnya hingga akhiran
pun).
Sumber Algoritma diatas :
http://massofa.wordpress.com/2009/04/22/bab-2-kemampuan-dalam-pemenggalan-kata-berimbuhan-
siswa-kelas-v-son-005-kampung-satu-tarakan/
Stemming Indonesian, Jelita Asian, Hugh E. Williams, S.M.M. Tahaghoghi
http://id.wikipedia.org/wiki/Prefiks

Hasil Stemming
Kata Imbuhan Awalan - Akhiran Akhiran - Awalan Kata Dasar
bepergian gian pergi pergi
berada rada rada ada
berahasia rahasia rahasia rahasia
beratnya rat rat berat
berhenti hent henti henti
berjabatan jabat jabat jabat
berkecukupan cukup cukup cukup
berkedudukannya dudu dudu duduk
beroda roda roda roda
berpendidikan dikan didi didik
berpengetahuan tahu tahu tahu
diabaikan abai abai abaik
diadili adil adil adil
diagendakan agenda agenda agenda
dibangunkan bangun bangun bangun
dibanjiri banjir banjir banjir
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

5

dibiayainya biaya biaya biaya
diganti gant gant ganti
diinformasikannya informasi informasi informasi
dikatakannya kata kata kata
dimanipulasi manipulas manipulas manipulasi
dipelopori lopor lopor lopor
diperluas luas luas luas
keadaan ada ada ada
kebersamaan sama sama sama
keberuntungannya runtung runtung untung
keimigrasian imigrasi imigrasi imigrasi
kekasih kasih kasih kasih
kenali nal nali kenal
kenangan nang nang kenang
kepemerintahannya rin rin perintah
kepemudaan muda muda muda
kesaktiannya sakti sakti sakti
kesantaian santai santai santai
melambungkannya lambung lambung lambung
melampaui lampau lampau lampau
memaafkan maaf maaf maaf
memagari pagar pagar pagar
memainkannya main main main
memanggilnya panggil panggil panggil
membandingkannya banding banding banding
membekali kal kal bekal
memenjarakan jara jara penjara
memiliki pilik pilik milik
mempelajari ajar ajar ajar
memperbandingkan banding banding banding
menyepakati pakat pakat sepakat
pekerjaannya pekerja pekerja kerja
pelecehan leceh leceh leceh
peledak ledak ledak ledak
pemasukan masu masu masuk
pematung matung matung patung
pembakaran bakar bakar bakar
pembantu bantu bantu bantu
pemelihara lihara lihara pelihara
pemogokan mogo mogo mogok
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

6

penampung nampung nampung tampung
penayangannya nayang nayang tayang
seangkatan angkat angkat angkat
secukupnya cukup cukup cukup
sederajat derajat derajat derajat
seekor ekor ekor ekor
sekelilingnya liling liling keliling
sekolahnya kolah seko sekolah
sekumpulan kumpul kumpul kumpul
seperangkat angkat angkat angkat
sepi sepi sepi sepi
serumah rumah rumah rumah
syukuran syukur syukur syukur
terakhir akhir akhir akhir
terasa asa asa rasa
terbang bang bang terbang
terbentuknya ntuk ntuk bentuk
terhindarkan hindar hindar hundar
terindah indah indah hindar
terkotori kotor kotor kotor
terlewatkan lewat lewat lewat
ternilai nila nila nilai
tersebar bar bar sebar
terukir ukir ukir ukir

Analisa Hasil Stemmer
a. Strategi Awalan Akhiran

Awalan -
Akhiran
Kata
Dasar
Kategori Hasil Stemmer
gian pergi Overstemming
rada ada Recoding ambiguity (rule related)
rahasia rahasia Exact Match
rat berat Overstemming
hent henti Overstemming
jabat jabat Exact Match
cukup cukup Exact Match
dudu duduk Recoding ambiguity (rule related)
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

7

roda roda Exact Match
dikan didik Mis-stemming
tahu tahu Exact Match
abai abai Exact Match
adil adil Exact Match
agenda agenda Exact Match
bangun bangun Exact Match
banjir banjir Exact Match
biaya biaya Exact Match
gant ganti Overstemming
informasi informasi Exact Match
kata kata Exact Match
manipulas manipulasi Overstemming
lopor lopor Exact Match
luas luas Exact Match
ada ada Exact Match
sama sama Exact Match
runtung untung Recoding ambiguity (rule related)
imigrasi imigrasi Exact Match
kasih kasih Exact Match
nal kenal Overstemming
nang kenang Overstemming
rin perintah Overstemming
muda muda Exact Match
sakti sakti Exact Match
santai santai Exact Match
lambung lambung Exact Match
lampau lampau Exact Match
maaf maaf Exact Match
pagar pagar Exact Match
main main Exact Match
panggil panggil Exact Match
banding banding Exact Match
kal bekal Overstemming
jara penjara Overstemming
pilik milik Recoding ambiguity (rule related)
ajar ajar Exact Match
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

8

banding banding Exact Match
pakat sepakat Overstemming
pekerja kerja Understemming
leceh leceh Exact Match
ledak ledak Exact Match
masu masuk Recoding ambiguity (rule related)
matung patung Recoding ambiguity (rule related)
bakar bakar Exact Match
bantu bantu Exact Match
lihara pelihara Overstemming
mogo mogok Recoding ambiguity (rule related)
nampung tampung Recoding ambiguity (rule related)
nayang tayang Recoding ambiguity (rule related)
angkat angkat Exact Match
cukup cukup Exact Match
derajat derajat Exact Match
ekor ekor Exact Match
liling keliling Overstemming
kolah sekolah Overstemming
kumpul kumpul Exact Match
angkat angkat Exact Match
sepi sepi Exact Match
rumah rumah Exact Match
syukur syukur Exact Match
akhir akhir Exact Match
asa rasa Recoding ambiguity (rule related)
bang terbang Overstemming
ntuk bentuk Overstemming
hindar hindar Exact Match
indah indah Exact Match
kotor kotor Exact Match
lewat lewat Exact Match
nila nilai Overstemming
bar sebar Overstemming
ukir ukir Exact Match


Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

9

Kategori Hasil Stemmer Hasil Perhitungan
Exact Match 50
Overstemming

18
Recoding ambiguity (rule related) 10
Understemming 1
Mis-stemming 1
Total 80


b. Strategi Akhiran Awalan
Akhiran - Awalan Kata Dasar Kategori Hasil Stemmer
pergi pergi Exact Match
rada ada Recoding ambiguity (rule related)
rahasia rahasia Exact Match
rat berat Overstemming
henti henti Exact Match
jabat jabat Exact Match
cukup cukup Exact Match
dudu duduk Recoding ambiguity (rule related)
roda roda Exact Match
didi didik Recoding ambiguity (rule related)
tahu tahu Exact Match
abai abai Exact Match
adil adil Exact Match
agenda agenda Exact Match
bangun bangun Exact Match
banjir banjir Exact Match
biaya biaya Exact Match
gant ganti Overstemming
informasi informasi Exact Match
kata kata Exact Match
manipulas manipulasi Overstemming
lopor lopor Exact Match
luas luas Exact Match
ada ada Exact Match
sama sama Exact Match
runtung untung Recoding ambiguity (rule related)
imigrasi imigrasi Exact Match
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

10

kasih kasih Exact Match
nali kenal Overstemming
nang kenang Overstemming
rin perintah Overstemming
muda muda Exact Match
sakti sakti Exact Match
santai santai Exact Match
lambung lambung Exact Match
lampau lampau Exact Match
maaf maaf Exact Match
pagar pagar Exact Match
main main Exact Match
panggil panggil Exact Match
banding banding Exact Match
kal bekal Overstemming
jara penjara Overstemming
pilik milik Recoding ambiguity (rule related)
ajar ajar Exact Match
banding banding Exact Match
pakat sepakat Overstemming
pekerja kerja Understemming
leceh leceh Exact Match
ledak ledak Exact Match
masu masuk Recoding ambiguity (rule related)
matung patung Recoding ambiguity (rule related)
bakar bakar Exact Match
bantu bantu Exact Match
lihara pelihara Overstemming
mogo mogok Recoding ambiguity (rule related)
nampung tampung Recoding ambiguity (rule related)
nayang tayang Recoding ambiguity (rule related)
angkat angkat Exact Match
cukup cukup Exact Match
derajat derajat Exact Match
ekor ekor Exact Match
liling keliling Overstemming
seko sekolah Overstemming
kumpul kumpul Exact Match
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

11

angkat angkat Exact Match
sepi sepi Exact Match
rumah rumah Exact Match
syukur syukur Exact Match
akhir akhir Exact Match
asa rasa Recoding ambiguity (rule related)
bang terbang Overstemming
ntuk bentuk Overstemming
hindar hindar Exact Match
indah indah Exact Match
kotor kotor Exact Match
lewat lewat Exact Match
nila nilai Overstemming
bar sebar Overstemming
ukir ukir Exact Match

Kategori Hasil Stemmer Hasil Perhitungan
Exact Match 52
Overstemming 16
Recoding ambiguity (rule related) 11
Understemming 1
Mis-stemming 0
Total 80

Keterangan mengenai Kategori Hasil stemmer
1. Exact Match
Merupakan hasil yang menyatakan bahwa hasil yang diperoleh dari proses stemmer
dengan kata dasar sebenarnya suda sama.
2. Overstemming
Merupakan kesalahan yang diakibatkan terjadinya proses pemotongan secara
berlebihan. Misalnya kata terbang ketika di proses dengan algoritma stemmer menjadi
kata bang. Terjadinya pemotongan te- disini seharusnya tidak perlu.
3. Recoding ambiguity (rule related)
Merupakan kesalahan yang diakibatkan ambiguitas dari rule-rule yang didefinisikan
dalam algoritma. Sebagai contoh kata terasa dengan kata dasar rasa, di stem menjadi
asa. Hal ini dikarenakan dalam algoritma dinyatakan bahwa setiap kata diawali dengan
huruf te r [aiueor] dianggap ter- luluh sehingga imbuhan ter dibuang.
4. Understemming
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

12

Kesalahan yang diakibatkan kurangnya pemotongan kata menjadi suatu kata dasar.
Sebagai contoh kata setelah hasil stem adalah pekerja, padahal seharusnya kata dasarnya
adalah kerja. Dalam kasus ini seharusnya dilakukan pemotongan kembali imbuhan pe-
sehingga menghasilkan kata stem yang tepat.
5. Mis-stemming
Kesalahan yang diakibatkan karena kesalahan pemotongan kata dasarnya, misalnya kata
pendidikan (pen-didik-an). Dengan algoritma stemmer awalan-akhiran, kata ini dipotong
dari awal dengan urutan sebagai berikut : pen- di-. Pemotongan imbuhan di yang
merupakan bagian dari kata dasar didik dipotong sehingga kategori untuk kesalahan ini
adalah Mis-stemming.
Analisa Hasil stemming strategi awalan akhiran
Kategori Hasil Stem Persentase
Exact Match 62,50%
Overstemming 22,50%
Recoding ambiguity (rule related) 12,50%
Understemming 1,25%
Mis-stemming 1,25%
Total 100,00%

Dari perhitungan persentase diatas, meskipun algoritma yang diterapkan tanpa menggunakan kata dasar,
hasil yang diperlihatkan pun cukup memuaskan yaitu tingkat akurasinya > 50% yaitu 62.5%. Jenis
kesalahan yang paling besar dilakukan adalah Overstemming yaitu 22.5%. Sedangkan yang paling kecil
adalah mis-stemming dan understemming dengan masing-masing persentase adalah 1.25%. Kesalahan
dalam recoding ambiguity sebesar 12.5% dikarenakan ketidaktepatan dalam melakukan proses peluruhan
kata.
Analisa Hasil stemming strategi akhiran-awalan
Kategori Hasil Stem Persentase
Exact Match 65%
Overstemming 20%
Recoding ambiguity (rule related) 13.75%
Understemming 1.25%
Mis-stemming 0%
Total 100,00%

Dari perhitungan diatas, hasil stemming strategi ini cenderung lebih baik dibandingkan algoritma awalan-
akhiran dengan melihat hasil exact match yang diperoleh yaitu 65% banding 62.5%. Proses overstemming
pun dapat dikurangi sebesar 1.25% dibandingkan dengan strategi awalana-akhiran. Kesalahan akibat mis-
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

13

stemming pun berhasil dikurangi sebesar 1,25%. Namun, kesalahan recoding ambiguity bertambah
sebesar 1,25%.
Keterangan : Data yang digunakan adalah data yang diberikan di scele (Student Center E-Learning)
Fakultas Ilmu Komputer, UI.
Kesimpulan dari hasil analisa ini adalah Proses stem strategi akhiran awalan lebih baik dibandingkan
strategi awalan akhiran berdasarkan algoritma yang diterapkan.
Program Perl Stemming Algorithm tanpa kamus kata dasar
open(my $input, "<", "imbuhan.txt") or die "Can't open imbuhan.txt: $!";

my @lines = <$input>;

print "Kata Imbuhan; Hasil Stemming Awalan - Akhiran ; Hasil Stemming Akhiran - Awalan\n";
foreach $line (@lines)
{
chomp($line);
print $line .";". &stemmingAwalanAkhiran($line) .";".&stemmingAkhiranAwalan($line);
print "\n";
}

sub stemmingAwalanAkhiran()
{
my $word = $_[0];
my $temporary;
my @numberOfStemAwalan = (0, 0, 0, 0, 0, 0, 0);
my @numberOfStemAkhiran = (0, 0, 0);
my @temp;

# Preffix Disallowed suffixes
# be- -i
# di- -an
# ke- -i, -kan
# me- -an
# se- -i,-kan
# te- -an

do
{
$temporary = $word;

#me, be, pe, di, ke, te, se
@temp = &stemmingAwalan($temporary, $numberOfStemAwalan[0],
$numberOfStemAwalan[1], $numberOfStemAwalan[2], $numberOfStemAwalan[3],
$numberOfStemAwalan[4], $numberOfStemAwalan[5], $numberOfStemAwalan[6]);
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

14


$index = 0;
foreach $i(@temp)
{
if($index != $#temp){
$numberOfStemAwalan[$index] = $temp[$index];
}
else{
$word = $temp[$index];
}
$index++;
}
}while ($word !~ $temporary);

do
{
$temporary = $word;
@temp = &stemmingAkhiran($temporary, $numberOfStemAkhiran[0],
$numberOfStemAkhiran[1], $numberOfStemAkhiran[2]);

$index = 0;
foreach $i(@temp)
{
if($index != $#temp){
$numberOfStemAkhiran[$index] = $temp[$index];
}
else{
$word = $temp[$index];
}
$index++;
}
}while ($word !~ $temporary);

return $word;

}

sub stemmingAkhiranAwalan()
{
my $word = $_[0];
my $temporary;
my @numberOfStemAwalan = (0, 0, 0, 0, 0, 0, 0);
my @numberOfStemAkhiran = (0, 0, 0);
my @temp;

do
{
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

15

$temporary = $word;
@temp = &stemmingAkhiran($temporary, $numberOfStemAkhiran[0],
$numberOfStemAkhiran[1], $numberOfStemAkhiran[2]);

#me, be, pe, di, ke, te, se

$index = 0;
foreach $i(@temp)
{
if($index != $#temp){
$numberOfStemAkhiran[$index] = $temp[$index];
}
else{
$word = $temp[$index];
}
$index++;
}
}while ($word !~ $temporary);

do
{
$temporary = $word;
@temp = &stemmingAwalan($temporary, $numberOfStemAwalan[0],
$numberOfStemAwalan[1], $numberOfStemAwalan[2], $numberOfStemAwalan[3],
$numberOfStemAwalan[4], $numberOfStemAwalan[5], $numberOfStemAwalan[6]);

$index = 0;
foreach $i(@temp)
{
if($index != $#temp){
$numberOfStemAwalan[$index] = $temp[$index];
}
else{
$word = $temp[$index];
}
$index++;
}
}while ($word !~ $temporary);

return $word;

}

sub stemmingAwalan()
{
# The same affix cannot be repeatedly applied. For example, after a word is preffixed with \te-" or
# one of its variations, it is not possible to repeat the preffix \te-" or any of those variations
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

16


my $word = $_[0];
my $temp = $word;
#me, be, pe, di, ke, te, se
my @awalan = ($_[1], $_[2], $_[3], $_[4], $_[5], $_[6], $_[7]);

#~ If a word has one or two characters, then stemming is not attempted.
if(length $word <= 2){
return $word;
}

#stemming awalan me
if($word =~ /^me/ && $awalan[0] == 0){
$word = stemmingAwalanMe($word);
$awalan[0]++;
}
#stemming awalan be
elsif($word =~ /^be/ && $awalan[1] == 0){
$word = stemmingAwalanBe($word);
$awalan[1]++;
}
#stemming awalan pe
elsif($word =~ /^pe/ && $awalan[2] == 0){
$word = stemmingAwalanPe($word);
$awalan[2]++;
}
#stemming awalan di
elsif($word =~ /^di/ && $awalan[3] == 0){
$word = stemmingAwalanDi($word);
$awalan[3]++;
}
#stemming awalan ke
elsif($word =~ /^ke/ && $awalan[4] == 0){
$word = stemmingAwalanKe($word);
$awalan[4]++;
}
#stemming awalan te
elsif($word =~ /^te/ && $awalan[5] == 0){
$word = stemmingAwalanTe($word);
$awalan[5]++;
}
#stemming awalan se
elsif($word =~ /^se/ && $awalan[6] == 0){
$word = stemmingAwalanSe($word);
$awalan[6]++;
}

Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

17

if(length $word <= 2){
$word = $temp;
}

push @awalan, $word;
return @awalan;
}

sub stemmingAwalanMe()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/^mem(b|f|v|p)(.)/$1$2/i;
if($temp !~ $word)
{
return $temp;
}

$temp =~ s/^mem([aiueo][^aiueo])(.)/p$1$2/i; #peluruhan p
if($temp !~ $word)
{
return $temp;
}

#me + kata dasar dengan huruf awal s berubah menjadi meny-
$temp = $word;
$temp =~ s/^meny(.*)/s$1/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^men(c|d|t|j|z|[a-zA-Z]y)(.)/$1$2/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^men([^aiueo][aiueo][^aiueo])$/$1/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

18

$temp =~ s/^men([aiueo])(.)/t$1$2/i; #peluruhan t
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^menge([^aiueo]+[aiueo][^aiueo])$/$1/i;
if($temp !~ $word)
{
return $temp;
}

#me + kata dasar dengan huruf awal huruf vokal, g, h
$temp = $word;
$temp =~ s/^meng([aiueo]|k|g|h|[^aiueo][^aiueo])(.)/$1$2/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^me(.)/$1$2/i;

if($temp !~ $word)
{
return $temp;
}

return $word;
}

sub stemmingAwalanBe()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/^bel(ajar)/$1/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^be([a-zA-Z]er)/$1/i;
if($temp !~ $word && $temp)
{
return $temp;
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

19

}


$temp = $word;
$temp =~ s/^be(r[aiueo])(.)/$1$2/i;
if($temp !~ $word && $temp)
{
return $temp;
}

$temp = $word;
$temp =~ s/^be(r)(.)/$2/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^be(.)/$1/i;
if($temp !~ $word)
{
return $temp;
}

return $word;
}

sub stemmingAwalanPe()
{
my $word = $_[0];
my $temp = $word;

$temp =~ s/^pel(ajar)/$1/i;
if($temp !~ $word)
{
return $temp;
}

$temp =~ s/^penge([^aiueo]+[aiueo][^aiueo])/$1/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^peng([aiueo]|k|g|h|[^aiueo][^aiueo])(.)/$1$2/i;
if($temp !~ $word)
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

20

{
return $temp;
}

$temp = $word;
$temp =~ s/^pen(d|c|j|l)(.)/$1$2/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^peny(.)/s$1/i;
if($temp !~ $word)
{
return $temp;
}
$temp = $word;
$temp =~ s/^pem(b|p)(.)/$1$2/i;
if($temp !~ $word)
{
return $temp;
}

#aturan untuk per
$temp = $word;
$temp =~ s/^per([aiueo].)/$1/i;
if($temp !~ $word)
{
return $temp;
}
$temp = $word;
$temp =~ s/^per(.)/$1/i;
if($temp !~ $word)
{
return $temp;
}

$temp = $word;
$temp =~ s/^pe(l|r|w|y)(.)/$1$2/i;
if($temp !~ $word)
{
return $temp;
}
$temp = $word;
$temp =~ s/^pe(m|n|ng|ny)([aiueo])(.)/$1$2$3/i;
if($temp !~ $word)
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

21

{
return $temp;
}

return $word;
}

sub stemmingAwalanDi()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/^di(.)/$1/i;
if($temp !~ $word)
{
return $temp;
}
return $word;
}

sub stemmingAwalanKe()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/^ke(.)/$1/i;
if($temp !~ $word)
{
return $temp;
}
return $word;
}

sub stemmingAwalanTe()
{
my $word = $_[0];
my $temp = $word;
$word =~ s/^te(.)/$1/i;
if($word =~ /^r/)#set 1
{
$word =~ s/^r(.)/$1/i;
if($word =~ /^r/i)#set 2
{
#rule 1 - none
return $temp;
}
elsif($word =~ /^[raiueo]/i)#set 2
{
#rule 2 - ter-luluh
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

22

return $word;
}
elsif($word =~ /^[^raiueo]/i)#set 2
{
$word =~ s/^[^raiueo](.)/$1/i;
if($word =~ /^er/) #set 3
{
$word =~ s/^er(.)/$1/i;
if($word =~ /^[aiueo]/i)
{
$temp =~ s/^ter(.)/$1/i;
return $temp;
}
elsif($word =~ /^[^aiueo]/i)
{
return $temp;
}
}
elsif($word !~ /^er/) #set 3
{
$temp =~ s/^ter(.*)/$1/i;
return $temp;
}
}

}
elsif($word =~ /^[^raiueo]/)
{
$word =~ s/^[^raiueo](.)/$1/i;
if($word =~ /^er/)
{
$word =~ s/^er(.)/$1/i;
if($word =~ /^[aiueo]/)
{
return $temp;
}
if($word !~ /^[aiueo]/)
{
$temp =~ s/^te(.)/$1/i;
return $temp;
}
}
}

return $temp;
}

Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

23

sub stemmingAwalanSe()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/^se(.)/$1/i;
if($temp !~ $word)
{
return $temp;
}
return $word;
}

sub stemmingAkhiran()
{
my $word = $_[0];
my $temp = $word;
#root-word [[+DS][+PP][+P]]
my @akhiran = ($_[1], $_[2], $_[3]);

if(length $word <= 2)
{
return $word;
}

#derivation suffix, hanya sekali saja.
if(($word =~ /an$/ || $word =~ /i$/) && $akhiran[0] == 0)
{
$akhiran[0]++;
if(($word =~ /^me/ && $word =~ /[^k]an$/) | ($word =~ /^be/ && $word =~ /i$/) |($word =~
/^di/ && $word =~ /[^k]an$/) | ($word =~ /^ke/ && ($word =~ /i$/ || $word =~
/kan$/)) | ($word =~ /^te/ && $word =~ /[^k]an$/) | ($word =~ /^se/ && ($word =~
/i$/ || $word =~ /kan$/))){
return $word;
}

if($word =~ /kan$/){
$word = stemmingAkhiranKan($word);
}
elsif($word =~ /an$/){
$word = stemmingAkhiranAn($word);
}
elsif($word =~ /i$/){
$word = stemmingAkhiranI($word);
}
}

#Possessive pronouns, hanya sekali saja
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

24

elsif(($word =~ /ku$/ || $word =~ /mu$/ || $word =~ /nya$/) && $akhiran[1] == 0)
{
$akhiran[1]++;
if($word =~ /ku$/){
$word = stemmingAkhiranKu($word);
}
elsif($word =~ /mu$/){
$word = stemmingAkhiranMu($word);
}
elsif($word =~ /nya$/){
$word = stemmingAkhiranNya($word);
}
}

#Particles, hanya sekali saja.
elsif(($word =~ /kah$/ || $word =~ /lah$/ || $word =~ /tah$/ || $word =~ /pun$/) && $akhiran[2] == 0)
{
$akhiran[2]++;
if($word =~ /lah$/){
$word = stemmingAkhiranLah($word);
}
elsif($word =~ /kah$/){
$word = stemmingAkhiranKah($word);
}
elsif($word =~ /tah$/){
$word = stemmingAkhiranTah($word);
}
elsif($word =~ /pun$/){
$word = stemmingAkhiranPun($word);
}
}

if(length $word <= 2)
{
$word = $temp;
}

push @akhiran, $word;
return @akhiran;
}

sub stemmingAkhiranKan()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)kan$/$1/i;

Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

25

return $temp;
}

sub stemmingAkhiranWan()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)wan$/$1/i;

return $temp;
}

sub stemmingAkhiranWati()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)wati$/$1/i;

return $temp;
}

sub stemmingAkhiranAn()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)an$/$1/i;

return $temp;
}

sub stemmingAkhiranI()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)i$/$1/i;

return $temp;
}

sub stemmingAkhiranLah()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)lah$/$1/i;

return $temp;
}
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

26


sub stemmingAkhiranKah()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)kah$/$1/i;

return $temp;
}

sub stemmingAkhiranTah()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)tah$/$1/i;

return $temp;
}

sub stemmingAkhiranNya()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)nya$/$1/i;

return $temp;
}

sub stemmingAkhiranMu()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)mu$/$1/i;

return $temp;
}

sub stemmingAkhiranKu()
{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)ku$/$1/i;

return $temp;
}

sub stemmingAkhiranPun()
Nama : Abdullah Hafidh
NPM : 0706271380
Mata Kuliah : Perolehan Informasi

27

{
my $word = $_[0];
my $temp = $word;
$temp =~ s/(.)pun$/$1/i;

return $temp;
}

Anda mungkin juga menyukai

  • Fakih
    Fakih
    Dokumen1 halaman
    Fakih
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • Surat Kuasa NPWP
    Surat Kuasa NPWP
    Dokumen1 halaman
    Surat Kuasa NPWP
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • Cover Note Nur
    Cover Note Nur
    Dokumen2 halaman
    Cover Note Nur
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • Cover Note Nur
    Cover Note Nur
    Dokumen2 halaman
    Cover Note Nur
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • 230 Kedawung Makmur
    230 Kedawung Makmur
    Dokumen19 halaman
    230 Kedawung Makmur
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • Pajak
    Pajak
    Dokumen2 halaman
    Pajak
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • Pajak
    Pajak
    Dokumen10 halaman
    Pajak
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • CV Bromo Patra
    CV Bromo Patra
    Dokumen12 halaman
    CV Bromo Patra
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • BAUTI
    BAUTI
    Dokumen1 halaman
    BAUTI
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • 04d3e3bb011039f40f6146c307f983cd
    04d3e3bb011039f40f6146c307f983cd
    Dokumen15 halaman
    04d3e3bb011039f40f6146c307f983cd
    munifsyahrul
    Belum ada peringkat
  • 9 Monev
    9 Monev
    Dokumen8 halaman
    9 Monev
    andrib1n4ndr13
    Belum ada peringkat
  • Surat Perjanjian
    Surat Perjanjian
    Dokumen1 halaman
    Surat Perjanjian
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat
  • Ipi 109847
    Ipi 109847
    Dokumen5 halaman
    Ipi 109847
    Dephi SiCepplosnya Stsetia Hernandez
    Belum ada peringkat