Anda di halaman 1dari 5

Pemrosesan Bahasa Alami

Tugas 1 Statistik Teks

Disusun oleh :

Cynthia Octaria

1317051016

Qory Aprilarita

1317051049

Jurusan Ilmu Komputer


Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Lampung
2015

open (IN, "korpus.txt") || die; #memproses file korpus.txt


open(OUT, ">output.txt"); #mengoutputkan hasil running perl ke dalam
output.txt

$start = 0; #inisialisasi awal nilai variabel start


$gagalpanen = 0; #inisialisasi nilai variabel gagalpanen
my $semua="";
#memulai proses dari tag <TEXT> sampai tag </TEXT> saja
while($line = <IN>)
{
$semua=$semua.$line;
if($line=~ /\<\/TEXT\>/){
$start=0;
}
if($start==1){
$text = $text.$line;
}
if($line=~ /\<TEXT\>/){
$start=1;
}
#menghitung frasa gagal panen
if($line =~ /gagal panen/||/Gagal Panen/){
$gagalpanen +=1;
}
}
my @doc = split(/<DOC>/,$semua); #menghitung banyak dokumen
my @count = split(/tani/,$text); #menghitung banyak kata yang mengandung
kata unik tani

$text=~ tr/[A-Z]/[a-z]/;
$text=~ s/[^A-Za-z]/ /g;

#menghilangkan numerik

@new = split/\s+/,$text;
array new

#memasukkaan kata yang sudah diproses dalam

foreach $kata(@new){
$kata =~ s/[0-9]*//g;

#menghilangkan numerik

$kata =~ tr/[A-Z]/[a-z]/;

#mengubah huruf jadi lowercase

$kata =~ s/[.,"?:;'!%&)([]*|//g; #menghilangkan tanda baca


$kata =~ s/-+//g;

#membuang tanda plus (+) dan minus (-)

$kata =~ s/\/*//g; #membuang semua garis miring (/)


$kata =~ s/^\-*//g;

#Membuang tanda kurang (-) di depan kata

#menghilangkan stopwords
$kata =~
s/\buntuk\b||\bdari\b||\bdi\b||\byang\b||\bdan\b||\bini\b||\bitu\b||\batau\
b||\bpada\b||\bke\b||\badalah\b||\bsetelah\b||\bselalu\b||\bdaripada\b||\bd
engan\b||\bdalam\b||\bakan\b||\bjuga\b||\btidak\b||\bkarena\b||\btersebut\b
||\bada\b||\bbisa\b||\bsebagai\b||\bsudah\b||\bsaat\b||\boleh\b||\bharus\b|
|\bmenjadi\b||\bsecara\b||\blast\b||\bmodified\b||\blebih\b||\bhanya\b||\bp
ara\b||\btelah\b||\bseperti\b||\bsementara\b||\bkepada\b||\bnamun\b||\bsang
at\b||\blalu\b||\bbelum\b||\bbagi\b||\btak\b||\bkalau\b||\bbahwa\b||\btetap
i\b||\bdapat\b||\bantara\b||\bbanyak\b||\bkembali\b||\bsaja\b||\batas\b||\b
hingga\b||\bmelalui\b||\bterjadi\b||\btapi\b||\bsampai\b||\btentang\b||\bsa
ma\b||\bagar\b||\bmemang\b||\blagi\b||\bselama\b||\bmencapai\b||\bterus\b||
\byakni\b||\bthe\b||\bterhadap\b||\bketika\b||\bmerupakan\b||\bsehingga\b||
\bsebuah\b||\bjika\b||\bbukan\b||\bjadi\b||\bsejumlah\b||\bsejak\b||\bperlu
\b||\bmulai\b||\bjelas\b||\bpun\b||\bmasih\b||\bmengatakan\b||\bmenurut\b||
\bsekitar\b||\blain\b||\bmelakukan|b||\bbaru\b||\bbeberapa\b||\bhal\b//g;

if ($kata=~ /^[a-z]/){
$freq{$kata}+=1;
}

}
print OUT "NLP Tugas 1 - Statistik Teks\n\n";
print OUT "Cynthia Octaria (1317051016)\n";
print OUT "Qory Aprilarita (1317051049)\n\n";
print OUT "1. Jumlah dokumen dalam korpus : $#doc \n\n";
print OUT "2. Urutan kata yang memiliki frekuensi terbanyak dalam
korpus\n";
$n=1;
print OUT
"=============================================================\n";

#mengurutkan 20 kata berdasarkan frekuensi kemunculan terbanyak


@listing = (sort { $freq{$b} <=> $freq{$a} } keys %freq)[0..19];
foreach my $kata (@listing ) {
print OUT "

$n. $kata = $freq{$kata}\n";

$n++;
};
print OUT
"=============================================================\n\n";
foreach $key (sort{$freq{$b}<=>$freq{$a}}keys %freq){
#menghitung jumlah seluruh kata
$jumlah_kata+=$freq{$key};

#menghitung banyaknya kata unik


if($freq{$key}==1){
push(@kata_unik, "\t$key = $freq{$key}\n");
$unik= @kata_unik;
}
}
print OUT "3. Jumlah seluruh kata dalam korpus :$jumlah_kata\n\n";
print OUT "4. Jumlah seluruh kata unik dalam korpus : $unik \n\n";
print OUT "5. Jumlah kata unik yang mengandung kata tani dalam korpus :
$#count\n\n";

#menghitung jumlah kalimat


my @kalimat1 = split /\.\n/, $semua;
my @kalimat2 = split /\. /, $semua;
my @kalimat3 = split /\?\n/, $semua;
my @kalimat4 = split /\? /, $semua;
my @kalimat5 = split /\!\n/, $semua;
my @kalimat6 = split /\! /, $semua;
my $jumlah_kalimat+=$#kalimat1+$#kalimat2+$#kalimat3+$#kalimat4+$#kalimat5+
$#kalimat6;
print OUT "7. Jumlah kalimat dalam korpus : $jumlah_kalimat\n\n";

print OUT "8. Jumlah frase yang mengandung kata gagal panen dalam korpus :
$gagalpanen";

close(IN);
close(OUT);

Output :

NLP Tugas 1 - Statistik Teks


Cynthia Octaria (1317051016)
Qory Aprilarita (1317051049)
1. Jumlah dokumen dalam korpus : 21
2. Urutan kata yang memiliki frekuensi terbanyak dalam korpus
=============================================================
1. pertanian = 97
2. urung = 68
3. flu = 67
4. petani = 59
5. eras = 54
6. vaksin = 54
7. impor = 50
8. tanaman = 40
9. pangan = 36
10. ayam = 36
11. unggas = 36
12. indonesia = 36
13. ilegal = 35
14. negara = 34
15. kata = 34
16. pemerintah = 33
17. tahun = 31
18. air = 31
19. dilakukan = 30
20. kita = 30
=============================================================
3. Jumlah seluruh kata dalam korpus :6703
4. Jumlah seluruh kata unik dalam korpus : 1087
5. Jumlah kata unik yang mengandung kata tani dalam korpus : 160
7. Jumlah kalimat dalam korpus : 503
8. Jumlah frase yang mengandung kata gagal panen dalam korpus : 6