JULIO ADISANTOSO - ILKOM IPB
Pr ose s Pe r ole h a n I n for m a si Se de r h a n a
KOM 3 4 1 Te m u Ke m ba li I n for m a si
- Pem rosesan Teks • Pengant ar bahasa PERL
Pe n g e r t ia n TEKS
Kor p u s
Sekurangnya 17 ribu ayam ras m ilik pet ernak di wilayah kabupat en Kot awaringin Tim ur ( Kot im ) , Kalim ant an Tengah m at i dan kuat dugaan akibat t erserang virus avian influenza ( AI ) at au yang lagi ram ai disebut penyakit flu burung. Kasubdin Produksi Pet ernakan Dinas Pert anian Kot im Drh. Mawardi di Sam pit , Selasa m engat akan sebanyak 17 ribu ekor ayam ras yang m at i diduga t erserang flu burung it u sej ak Desem ber 2003. Dari hasil diagnosa Balai Penyelidikan dan Penguj ian Vet eriner ( BPPV) regional V Banj ar Baru Kalim ant an Selat an yang dit erim a Disnak Kot im , Senin ( 26/ 1) m enyebut kan ayam yang m at i t erserang panyakit it u hanya ada dua kem ungkinan yait u t erserang virus AI dan VVND at au t et elo. " Nam un kasus kem at ian m asal ayas ras di Kot im kem ungkinan besar akibat akibat serangan virus avian influenza yang bila m enular kepada m anusia nam anya m enj adi flu burung," ucapnya. JULIO ADISANTOSO - ILKOM IPB
V Banj ar Baru Kalim antan Selatan yang diterim a Disnak Kotim , Senin ( 26/ 1) m enyebutkan ayam yang m ati terserang panyakit itu hanya ada dua kem ungkinan yaitu terserang virus AI dan VVND atau tetelo. " Nam un kasus kem atian m asal ayas ras di Kotim kem ungkinan besar akibat akibat serangan virus avian influenza yang bila m enular kepada m anusia nam anya m enj adi flu burung," ucapnya.< / P> < / TEXT> < / DOC> JULIO ADISANTOSO - ILKOM IPB
< DOC> < DOCNO> DOC01< / DOCNO> < TI TLE> Flu Burung Menyerang Kalim antan Tengah< / TI TLE> < AUTHOR> Ark, Ant< / AUTHOR> < DATE> 7 Februari 2003 < / DATE> < TEXT> < P> Sekurangnya 17 ribu ayam ras m ilik peternak di w ilayah kabupaten Kotaw aringin Tim ur ( Kotim ) , Kalim antan Tengah m ati dan kuat dugaan akibat terserang virus avian influenza ( AI ) atau yang lagi ram ai disebut penyakit flu burung. Kasubdin Produksi Peternakan Dinas Pertanian Kotim Drh. Maw ardi di Sam pit, Selasa m engatakan sebanyak 17 ribu ekor ayam ras yang m ati diduga terserang flu burung itu sej ak Desem ber 2003.< / p> < P> Dari hasil diagnosa Balai Penyelidikan dan Penguj ian Veteriner ( BPPV) regional
Con t oh Kor p u s
Tokenisasi pada korpus Anotasi pada korpus JULIO ADISANTOSO - ILKOM IPB
KULI AH # 2
Media: teks, audio, video ( m ultim edia) I su pada korpus:
Ukuran Jenis Bahasa
Korpus adalah teks alam i yang dipilih dengan cara t ert ent u. Masalah pada perancangan korpus
JULIO ADISANTOSO - ILKOM IPB
Kum pulan artikel surat kabar yang diperoleh dari I nt ernet Kum pulan skripsi m ahasiswa yang telah dikum pulkan secara digit al oleh perpust akaan
Contoh:
Teks ≈ Korpus ≈ Koleksi dokumen yang bisa dibaca oleh m esin
JULIO ADISANTOSO - ILKOM IPB KORPU S
Con t oh Kor p u s Fr e e t e x t
XM L For m a t
M e la ca k Te k s
St a t ist ik Te k s
Operasi dasar dalam string m atching Contoh: Dapatkan sem ua baris yang dim ulai dengan kata Flu.
Jum lah Kata
Seberapa besar korpus yang ada ( N)
Jenis kata
Berapa j um lah kata yang unik? Berapa besar perbendaharaan kata pada korpus?
Token kata
Berapa j um lah kata pada korpus? Berapa frekuensi dari setiap j enis kata? Kata apa yang paling sering m uncul pada korpus? JULIO ADISANTOSO - ILKOM IPB
Pr ose d u r M e n g h it u n g Fr e k u e n si Ka t a
Fe n om e n a Fr e k u e n si Ka t a
Tokenisasi : m endapatkan kata Ubah m enj adi huruf kecil Urutkan m enurut abj ad Hitung frekuensi kem unculan kata Urutkan m enurut frekuensinya Hitung frekuensi dari frekuensi kem unculan kat a JULIO ADISANTOSO - ILKOM IPB
Sej um lah kata m erupakan kata yang sangat um um ( frekuensi sangat besar) , m isalnya “ t he” , “ of”
Kebanyakan kata sangat j arang m uncul ( frekuensi sangat kecil) . Setengah dari kata- kata pada korpus hanya m uncul sekali. JULIO ADISANTOSO - ILKOM IPB
Dapatkan sem ua baris yang dim ulai dengan kata Huruf Besar. Dapatkan sem ua baris yang m em iliki kata terdiri dari huruf besar sem ua. Hitung banyaknya kata Flu pada dokum en tersebut. dsb. JULIO ADISANTOSO - ILKOM IPB
Con t oh
H u k u m Zip f
Terdapat konstanta c sehingga f * r = c JULIO ADISANTOSO - ILKOM IPB
hitung berapa kali kata m uncul pada sem ua teks di dalam korpus ( f) . urutkan sesuai dengan frekuensi kem unculan kata m em bent uk rank ( r) .
Menj elaskan adanya hubungan antara frekuensi dan urut an/ rank ( George Kingsley Zipf) . Urutan/ Rank:
9 900 8100 br ok e 4 2000 8000 seem s 2 3000 6000 could 2 4000 8000
16 500 8000 gr oup 13 600 7800 science 11 700 7700 fam ily 10 800 8000 begin
JULIO ADISANTOSO - ILKOM IPB Ka t a Fre k ue nsi Ka t a ( f ) Pe ringk a t ( r) f * r nam e 21 400 8400 com es
Luhn ’s I de a s k a t a - k a t a y a n g p a lin g u m u m d a n p a lin g t id a k St op w or d s u m u m a d a la h t id a k sig n ifik a n u n t u k in d e x in g
STOPWORDS:
Terdapat kata yang m erupakan bagian terbesar dari t eks yang t idak perlu digunakan sebagai penciri dokum en. Terdapat banyak ragam kata yang hanya m uncul sedikit sekali di dalam suat u t eks. Contoh: to, in, form , yang, dan
Kata- kata dengan frekuensi cukup ( di bagian t engah) adalah yang paling baik digunakan JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB sebagai penciri dokum en.
Tok e n isa si
Ka t a
Pengertian : suatu tahap pem rosesan di m ana Karakter alfanumerik yang saling terhubung t eks input dibagi m enj adi unit - unit kecil yang yang dipisahkan oleh whit espace. disebut t oken, yang dapat berupa suat u kat a,
Whitespace: spasi, tab, newline suat u angka, at au suat u t anda baca. Masalah:
Konsekuensinya:
B2B, am azon.com , Micro$oft Perlu m engenali unit secara otom atis isn’t, Jum ’at Apakah suatu kata itu? pro- aktif, out- of- date Kalim at? tanda sam bung pada akhir baris Paragraf?
JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB
Se g m e n t a si k a t a Ka lim a t
Proses tokenisasi sederhana, tetapi tidak Satu atau lebih string kata yang diakhiri t erlepas dari kesalahan. dengan suat u t anda berhent i sepenuhnya, t anda t anya at au t anda seru. Contoh:
Kata m aj em uk: Jurusan Surabaya- Jakarta Contoh: Frase: tusuk j arum , keras kepala, sistem inform asi Akhir dari baris. Nom or telpon ( 0251) 8356653 + 62 251 8625584 Akhir dari suatu cerita! Apakah kam u sudah punya pacar?
I a sering m engunj ungi friendster.com .
Menj adi topik dari ekstraksi inform asi Dr. I wan pergi ke Surabaya.
JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB
Dia m engatakan “ Bohong!” .Pe m r ose sa n Te k s Ot om a t is
Ba t a s k a lim a t
Hipot esakan bahwa bat as kalim at sesudah . ? ! Pindahkan bat as kalim at sesudah t anda pet ik, buk an set el ah t i t i k .
PERL h t t p:/ / w w w .a ct iv e st a t e .com / a ct ive pe r l/ dow nloa ds
PERL
Tulis pada suat u file, m isalnya bernam a ‘t est .cgi‘ dan sim pan di folder cgi- bin. JULIO ADISANTOSO - ILKOM IPB
$KELAS) JULIO ADISANTOSO - ILKOM IPB
Nam a variabel skalar dim ulai dengan $ ( m is. $dok) Nam a variabel array dim ulai dengan @ ( m is. @kata) Nam a variabel hash dim ulai dengan % ( m is. % tabel) Nam a variabel adalah case sensitive ( $kelas ≠
Nam a variabel
Skalar Array Associative array atau hash
Tiga j enis data dalam PERL:
#!"C:\apache\xampp\perl\bin\perl.exe" print "Content-type: text/html\n\n"; print '<html>'; print '<head>'; print '<meta name="author" content="Kay Vogelgesang">'; print '<link href="/xampp/xampp.css" rel="stylesheet" type="text/css">'; print '</head>'; print "<body>&nbsp;<p><h1>GCI with MiniPerl</h1>"; print "CGI with MiniPerl is ready ...</body></html>";
#!/usr/local/bin/perl #Program untuk menulis kata 'hello' print "Hello\n";
“ Jangan am bil buku itu. Buku itu m ilik pak Budi. ” , kata ibu kepada Ani.
> perl halo.pl JULIO ADISANTOSO - ILKOM IPB
> perl halo.pl Untuk m e- run pada Windows:
Tulis pada suatu file, m isalnya bernam a ‘halo.pl‘ ( Unix) , at au ‘halo.pl ‘ ( Windows) . Untuk m e- run pada Unix/ Linux:
1987 Mengem bangkan suatu bahasa script yang lebih baik daripada Unix shell t et api t idak serum it C. Berguna untuk m em anipulasi teks yang tidak dapat dilakukan oleh inst ruksi baris unix JULIO ADISANTOSO - ILKOM IPB
Practical Extraction and Report Language Dikem bangkan oleh Larry Wall pada tahun
Bagaim ana program kom puternya? Bahasa pem rogram an apa yang digunakan? JULIO ADISANTOSO - ILKOM IPB
Pertanyaannya:
I nput : berkas teks ( bisa berupa korpus) Output : daftar kata beserta frekuensinya
Menghitung kata pada teks Mengurutkan kata Menghitung berbagai nilai statistik kata
Jangan kenali sebagai bat as j ika ada ! at au ? yang di i k ut i ol eh huruf k eci l JULIO ADISANTOSO - ILKOM IPB
Jangan gunakan t it ik j ika: Sebelum nya adalah singkatan yg um um yg biasanya bukan akhir kalim at, tp biasanya diikuti oleh nam a dengan huruf besar: Prof. Didahului oleh singkatan yang um um dan tidak diikuti oleh kata dengan huruf besar: Jr.
PERL Je n is d a t a
PERL d i w e b
PERL Sk a la r
PERL Op e r a t or
Angka digits, desim al, eksponensial dll.
$nilai = 350; $nilai = 3.50
PERL Ar r a y
PERL Ar r a y
#@a1=("aa","bb","cc","dd","ee","ff") push @a2, "gg"; #@a2=("ee","ff","gg") JULIO ADISANTOSO - ILKOM IPB
Push m enam bahkan list pada bagian akhir dari array @a1 = ("aa", "bb", "cc", "dd"); @a2 = ("ee", "ff"); push @a1, @a2;
# $satu = 1, @b=(2 3 4 5 6) ($a, $b) = ($b, $a); #tukar nilainya JULIO ADISANTOSO - ILKOM IPB
@array = ("aa", "bb", "cc", "dd"); $length = @array; #4 print $#array; #3 print $array[$#array]; #"dd" print scalar(@array) ; #4 ($a, $b) = ("satu", "dua"); ($satu, @b) = (1,2,3,4,5,6);
@kata = ("yang", "dan", "untuk"); @x = (1, 2, 3); @y = @x; # assign nilai x ke y @y = (@x 4 5); # @y=(1 2 3 4 5) $z = @y; # $z bernilai 5 (panjang @y) ($z) = @y; # $z = 1 (elemen pertama @y) @prefix = $kata[0,1]; # ("yang", "dan") JULIO ADISANTOSO - ILKOM IPB
(1, 2, 3) ("yang", "dan", "untuk") () JULIO ADISANTOSO - ILKOM IPB
Suatu array adalah suatu variabel yang berisi list Suatu array berisi nol atau lebih elem en. Tidak perlu dit ent ukan panj angnya sepert i pem rogram an lainnya. Contoh:
Repetition : x JULIO ADISANTOSO - ILKOM IPB
String : Concatenation : .
Aritm atika : + , - , / , * , % Assignm ent : = , + = , - = , + + , - -
Bilangan
print "\ Uhalo\ n"; HALO print "ha\ Ulo\ n"; haLO JULIO ADISANTOSO - ILKOM IPB
Diapit oleh tanda petik single / double; Escape character dengan backslash \ n (newline) ; \ t (t ab) ; \ U (Uppercase) ; \ L (Lower case)
Strings
PERL Ar r a y
PERL M e n g u b a h isi a r r a y
PERL M e n g u b a h isi a r r a y
PERL Associa t iv e Ar r a y s
Pop Mem buang elem en t erakhir dari list @array = ("aa","bb","cc","dd"); $elemen = pop @array;
# $elemen= "dd" # @array = ( "aa","bb","cc") JULIO ADISANTOSO - ILKOM IPB
PERL Con t r ol St r u ct u r e s
PERL Con t r ol St r u ct u r e s
{ print "$nilai{$i}\n"; } while (($kata, $freq) = each (%nilai)) { print "$kata : $freq\n"; } foreach $i (sort keys %nilai) { print "$nilai{$i}\n"; } JULIO ADISANTOSO - ILKOM IPB
%nilai=(); $nilai{"dan"}=200; $nilai{"yang"}=150; foreach $i (keys %nilai)
foreach $prefix(@kata) { print "$prefix\n"; } JULIO ADISANTOSO - ILKOM IPB
FOREACH
$prefix = $kata[$i]; print "$prefix\n"; }
for ($i = 1; $i<=10; $i++) { print "$i\n"; } @kata=("dan", "yang", "untuk"); for ($i=0 ; $i<=$#kata; $i++) {
FOR
$i = 10; until ($i <= 5) { $x = $i*$i; print "Kuadrat dari $i adalah $x\n"; $i--; } JULIO ADISANTOSO - ILKOM IPB
UNTI L
$i = 10; while ($i > 5) { $x = $i*$i; print "Kuadrat dari $i adalah $x\n"; $i--; }
WHI LE
if ($nilai >= 80) { print "A\n"; } elsif ($nilai >= 60) { print "B\n"; } else { print "Tidak lulus\n"; } JULIO ADISANTOSO - ILKOM IPB
ELSI F
unless ($nilai > 60) { print "Tidak lulus\n"; }
UNLESS
if ($nilai > 60) { print "Lulus\n"; } else { print "Tidak lulus\n"; }
I F
#@freq=(200, 150) JULIO ADISANTOSO - ILKOM IPB
@freq=values(%nilai);
#@kata=("dan", "yang")
%nilai=(); $nilai{"dan"}=200; $nilai{"yang"}=150; @kata=keys(%nilai);
Array yang m em iliki indeks bukan berupa bilangan 0 sam pai dengan n- 1, m elainkan st ring. Contoh:
PERL Con t r ol St r u ct u r e s
PERL Associa t iv e Ar r a y s
PERL PERL Sor t in g
I n p u t / Ou t p u t
Mem buka dan m enutup file
@kata = ("dan", "itu", "yang", "pada");
open(IN, "koleksi.txt");
reverse(@nama);
open(OUT, ">hasil.txt");
@stopwords = sort(@kata);
open(OUT ">>hasil txt"); append close(OUT); Mem buka dan m enutup file
Sesuai alfabet: sort {$a cmp $b} @list;
open(IN, "koleksi.txt");
Sesuai num erik: sort {$a <=> $b} @list;
open(OUT, ">hasil.txt"); while ($line = <IN>) {
Descending: sort {$b <=> $a} @list;
chop($line); # buang carriage return
Associative array
print OUT "$line\n"; }
sort {$tabel{$b} <=> $tabel{$a} }
close(IN);
(keys %tabel);
JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB
close(OUT);PERL
PERL Re g u la r Ex p r e ssion Re g u la r Ex p r e ssion
Ekspresi yang digunakan untuk \ b bat as kat a m enggam barkan pola dari suat u obyek.
\ d digit = [ 0- 9] Sering digunakan dalam pem rosesan teks. \ n newline
Bahasa yang banyak m enggunakan RE adalah \ r carriage ret urn PERL.
\ s karakt er whit e space Pem rogram an m enj adi lebih singkat dan
\ t t ab m udah. \ w karakt er alfanum erik = [ A- Za- z0- 9] ^ awal dari st ring JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB $ akhir dari st ring
PERL
PERL Re g u la r Ex p r e ssion Re g u la r Ex p r e ssion /(ab)*(de)+/
. karakt er apapun abde [ bdkp] karakt er b, d, k dan p abbde [ a- f] karakt er a sam pai f bde [ ^ a- f] sem ua karakt er kecuali a sam pai f abadde abc| def st ring abc at au st ring def ababde
- nol at au beberapa kali
/a{5}b{1,4}c{2}/
- sekali at au beberapa kali
aaaaabcc ? nol at au sat u kali aaaaabcccc aaaaabc qw( ) ( "quot e word") funct ion aaaabcc
qw( aa bb cc) ( " aa" , " bb" , " cc" )
JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB
PERL
PERL Re g u la r Ex p r e ssion Pe n g ola h a n St r in g
Pola string //
/c[ad]r/ $kata=~/tan/; car, cdr cadr, caddddr
$kata=~/^tan/; $kata=~/tan$/; /c[ad]*r/
Mengubah bagian string s///
car, cdr, caaaadr, caaadaaar $kalimat=~s/minyak/BBM/;
$kalimat=~s/minyak/BBM/g; $kalimat=~s/minyak/BBM/gi;
/[a-g][t-z][0-9]*/
Mengubah karakter tr///
au125 JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB $kata=~tr/[A-Z]/[a-z]/; PERL
PERL Fu n g si SPLI T Con t oh Pr og r a m Untuk tokenisasi, m endapatkan kata dari suatu $kalimat="Harga minyak sekarang turun
kalim at dengan pem isah ( delim it er) t ert ent u. Sebelumnya harga minyak naik. Sekarang harga minyak turun lagi"; split( / / / ) ;
$kalimat =~ tr/[A-Z]/[a-z]/; Contoh
@kata = split(/\s+/, $kalimat); $kalimat= "Petani alami gagal panen"; foreach $token(@kata) { @kata=split(/\s+/, $kalimat); print "$token\n"; m aka array
}
@kata=("Petani", "alami", "gagal", "panen")
JULIO ADISANTOSO - ILKOM IPB JULIO ADISANTOSO - ILKOM IPB
PERL Con t oh Pr og r a m
open (IN, "dokumen.txt") || die; while($line = <IN>) { chomp($line); #buang carriage return
$line =~ s/^\s*//; #buang whitespace $line =~ s/\s*$//; reset @arraykata; @arraykata = split /\s+/, $line; #untuk setiap kata foreach $kata(@arraykata) {
$kata =~ tr/[A-Z]/[a-z]/; $kata =~ s/[!.,()*]|\"//g; $freq{$kata}++; }
} # Mencetak daftar kata, sort by frekuensi foreach $key (sort{$freq{$b}<=>$freq{$a}}keys %freq){ print "$key - $freq{$key}\n"; } close(IN); JULIO ADISANTOSO - ILKOM IPB