Implementasi Algoritma Cocke -Younger-Kasami (CYK) Dan Levenshtein Untuk Merekomendasikan Perbaikan Struktur Kalimat Dan Kesalahan Pengetikkan Bahasa Indonesia

(1)

1 1.1. Latar Belakang Masalah

Bahasa merupakan alat komunikasi lingual manusia baik secara lisan maupun tulisan. Dalam membuat suatu karya ilmiah, penggunaan Bahasa Indonesia harus sesuai dengan EYD (Ejaan yang Disempurnakan). Struktur atau pola kalimat yang disusun dari kata-kata yang dibentuk harus dapat membuat pembaca mudah mengerti maksud dari tulisan pada karya ilmiah tersebut. Kesalahan dalam pengetikkan dapat membuat kesalahpahaman para pembaca. Kesalahan struktur kalimat seperti tidak diketahui subjeknya juga dapat membuat pembaca tidak mengetahui siapa pelaku yang disebutkan dalam kalimat tersebut.

Berdasarkan sebuah penelitian [1], pemeriksaan kesalahan pengetikkan biasa dilakukan ketika tulisan telah selesai dibuat. Tidak sulit jika pemeriksaan dilakukan terhadap ukuran teks yang pendek. Apabila ukuran teks sudah mencapai lebih dari ratusan atau bahkan ribuan akan menyulitkan pemeriksaan. Dengan penerapan sebuah program, masalah tersebut dapat diatasi. Tidak hanya kesalahan kata, pemeriksaan pola kalimat dalam sebuah karya ilmiah pun perlu dilakukan.

Terdapat penelitian [2] yang telah melakukan perbaikan kata pada kesalahan pengetikkan menggunakan algoritma Levenshtein dengan mekanisme penambahan, penyisipan, dan penghapusan karakter. Algoritma Levenshtein merupakan algoritma yang digunakan untuk mencari jumlah operasi string yang paling sedikit untuk mentransformasikan suatu string menjadi string yang lain [3]. Algoritma ini menggunakan tabel dua dimensi dalam melakukan pengecekkan

string. Jumlah operasi string disebut sebagai edit distance. Edit distance diambil dari hasil akhir (baris dan kolom terakhir) pada tabel. Hasil inilah yang akan digunakan untuk melihat apakah suatu string dapat diubah menjadi string lain. Apabila hasil akhir bernilai 0, maka tidak ada yang perlu diperbaiki. Jika nilai hasil akhir lebih dari 0, maka terdapat kesalahan dalam string. Semakin kecil nilai edit


(2)

pengecekkan masih sebatas pengecekkan kesalahan pengetikkan, bukan pengecekkan pola kalimat Berbahasa Indonesia. Sehingga belum diketahui cara perbaikan pola kalimat menggunakan algoritma Levenshtein.

Pada penelitian lain [4] terdapat cara untuk mengenali pola kalimat dengan menggunakan algoritma CYK. Algoritma CYK adalah algoritma untuk menentukan apakah suatu untai dapat diterima oleh suatu tata bahasa bebas-konteks (CFG) yang sudah dinormalkan dalam bentuk Chomsky Normal Form (CNF). Pengecekkan dilakukan dengan mengelompokkan setiap kata sesuai dengan KBBI (Kamus Besar Bahasa Indonesia). Aturan-aturan pengelompokkan kata dapat dibuat dalam bentuk CNF.

Oleh karena itu dalam penelitian ini akan dilakukan implementasi dari kedua algoritma yaitu algoritma CYK dan Levenshtein untuk memperbaiki struktur kalimat dan kesalahan pengetikkan Bahasa Indonesia pada suatu karya ilmiah. Algoritma CYK digunakan untuk mengenali pola kalimat dan algoritma Levenshtein digunakan sebagai bantuan untuk memperbaiki pola kalimat dan kesalahan pengetikkan Bahasa Indonesia.

1.2. Rumusan Masalah

Berdasarkan uraian latar belakang diatas, maka rumusan masalah dari penelitian ini adalah bagaimana mengimplementasikan algoritma CYK dan Levenshtein untuk memperbaiki struktur kalimat dan kesalahan pengetikkan Bahasa Indonesia pada suatu karya ilmiah.

1.3. Maksud dan Tujuan

Adapun maksud dari penelitian ini adalah mengimplementasikan algoritma CYK dan Levenshtein ke dalam sebuah simulator perbaikan struktur kalimat dan kesalahan pengetikkan.

Tujuan dari penelitian ini untuk mengetahui sejauh mana algoritma CYK dan Levenshtein dapat memberikan rekomendasi perbaikan kata dan pola kalimat Bahasa Indonesia pada suatu karya ilmiah.


(3)

1.4. Batasan Masalah

Agar pembahasan menjadi lebih jelas dan terarah, maka permasalahan dibatasi terhadap masalah-masalah berikut:

1. Pemeriksaan kalimat hanya terbatas pada Bahasa Indonesia saja.

2. Aturan produksi dibuat dalam bentuk CNF agar dapat dilakukan parsing oleh algoritma CYK.

3. Kamus dan pengelompokkan kata diambil berdasarkan POS Tag Indonesia. 4. Seluruh kata dalam Bahasa Inggris akan dianggap sebagai istilah, artinya

seluruh istilah termasuk ke dalam kelompok kata nomina.

5. Kalimat yang diperiksa berupa inputan dari file dengan ekstensi .doc atau .docx 6. Pengecekkan sintaksis hanya berupa frase, klausa, dan kalimat.

7. Pengecekkan kalimat hanya berupa kalimat sederhana dan kalimat luas. 8. Pengecekkan kalimat tidak termasuk mengenali kalimat yang ambigu.

9. Data uji yang digunakan adalah dokumen abstrak skripsi dari Teknik Informatika Unikom.

10. Bahasa pemrograman yang digunakan adalah C#. 1.5. Metodologi Penelitian

Tahapan penelitian dari tugas akhir yang akan dilalui yaitu: Pengumpulan Data

Analisis

Perancangan

Implementasi

Pengujian


(4)

1. Pengumpulan Data

Tahap ini merupakan tahap awal dari penelitian. Pada tahap ini dilakukan pengumpulan data dengan menggunakan metode studi literatur dan wawancara. Pengumpulan data meliputi teori tentang Bahasa Indonesia dan sintaksisnya, algoritma CYK, algoritma Levenshtein, dan bahasa pemrograman C#.

2. Analisis

Pada tahap ini dilakukan analisis terhadap kedua algoritma yaitu CYK dan Levenshtein. Analisis dimulai dari memahami sintaksis Bahasa Indonesia, membuat bentuk CNF dari sintaksis yang sudah dianalisis, memahami cara kerja algoritma CYK dan Levenshtein, hingga menganalisis cara penggabungan kedua algoritma.

3. Perancangan

Tahap ini merupakan tahap untuk perancangan simulator yang akan dibuat berdasarkan analisis yang telah dilakukan. Pada tahap ini dilakukan perancangan diagram UML (Unified Language Model) dan perancangan antarmuka (user interface).

4. Implementasi

Tahap ini menerjemahkan hasil perancangan yang telah dibuat ke dalam bahasa pemrograman. Tools yang digunakan yaitu Visual Studio 2012 dengan bahasa pemrograman C#.

5. Pengujian

Setelah simulator dibuat maka selanjutnya melakukan pengujian algoritma melalui simulator yang telah dibuat. Pengujian dilakukan dengan memasukkan dokumen abstrak skripsi ke simulator dengan menghasilkan keluaran yaitu saran perbaikan kata dan pola kalimat.

1.6. Sistematika Penulisan

Sistematika penulisan penelitian ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan laporan penelitian ini adalah sebagai berikut:


(5)

BAB I PENDAHULUAN

Bab ini berisi penjelasan tentang latar belakang masalah yang menjadi bahan penelitian, merumuskan masalah, menentukan batasan masalah, memaparkan maksud dan tujuan dari penelitian yang dilakukan, menjelaskan metodologi penelitian dan sistematika penulisan.

BAB II LANDASAN TEORI

Bab ini berisi tentang pembahasan teori sintaksis Bahasa Indonesia, mempelajari teori bahasa dan automata dengan melihat pada hirarki Chomsky, mengenal tata bahasa bebas konteks dan penyederhanaannya, penyederhanaan bentuk CNF, definisi Algoritma CYK berikut dengan cara kerjanya, definisi Algoritma Levenshtein berikut dengan cara kerjanya, pengenalan pemrograman berbasis objek, dan konsep dasar dari UML (Unified Modelling Language).

BAB III ANALISIS DAN PERANCANGAN

Pada bab ini dibahas mengenai kebutuhan algoritma CYK dalam

mem-parsingstring agar dapat dikenali struktur kalimatnya. Pada bab sebelumnya telah

dibahas mengenai sintaksis Bahasa Indonesia. Bab ini juga menjelaskan bagaimana sintaksis tersebut akan diolah menjadi bentuk CNF agar algoritma CYK dapat melakukan parsing string. Bab ini juga membahas kebutuhan algoritma Levenshtein dalam memperbaiki struktur kalimat serta mengoreksi kesalahan ejaan pada dokumen Berbahasa Indonesia yang pengujiannya akan dilakukan pada abstrak skripsi di Teknik Informatika Unikom. Selain itu, perancangan UML hingga perancangan antarmuka dari simulator yang akan dibuat dibahas secara detil pada bab ini.

BAB IV IMPLEMENTASI DAN PENGUJIAN

Pada bab ini akan dijelaskan tahapan-tahapan implementasi dari kebutuhan algoritma dan pengujian berdasarkan analisis yang sudah dilakukan sebelumnya. Mulai dari input dokumen, kemudian sistem (simulator) akan mengecek setiap kata dan mengelompokkannya sesuai dengan diksi atau kelompok katanya dengan bantuan POS Tag Bahasa Indonesia. Apabila sistem menemukan kata yang termasuk ke dalam kelompok kata X (unknown), kata tersebut akan dicek dengan


(6)

cara membandingkannya dengan kata yang ada pada kamus menggunakan algoritma Levenshtein. Pada saat yang bersamaan algoritma Levenshtein akan memberikan saran untuk kalimat yang termasuk ke dalam kelompok kata X digantikan sesuai dengan bentuk CNF yang telah dianalisis dari sintaksis Bahasa Indonesia. Hasil akhir dari pengecekkan sistem akan memberikan output berapa banyak saran perbaikan kata dan pola kalimat.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi mengenai kesimpulan dari hasil pengujian algoritma yang telah dilakukan. Kekurangan dari implementasi ini dibahas pada bab ini agar dapat dilakukan pengembangan yang lebih baik. Bab ini juga berisi saran-saran yang diberikan untuk perbaikan.


(7)

7 2.1 Sintaksis Bahasa Indonesia

Sintaksis membicarakan penataan dan pengaturan kata-kata ke dalam satuan yang lebih besar, yang disebut satuan-satuan sintaksis, yakni kata, frase, klausa, kalimat, dan wacana.

2.1.1 Penyusunan Frase

Frase adalah satuan sintaksis yang tersusun dari dua buah kata atau lebih, yang didalam klausa menduduki fungsi-fungsi sintaksis. Dilihat dari kedudukan kedua unsurnya, dibedakan adanya frase koordinatif dan frase subordinatif. Frase koordinatif yaitu yang kedudukan kedua unsurnya sederajat, sedangkan frase subordinatif, yaitu yang kedudukan kedua unsurnya tidak sederajat. Ada yang berkedudukan sebagai unsur atasan yang disebut sebagai inti frase dan ada yang berkedudukan sebagai bawahan, yang disebut tambahan penjelas frase [5]. Frase dibagi menjadi beberapa kelompok:

1. Frase Nomina Koordinatif 2. Frase Nomina Subordinatif 3. Frase Verba Koordinatif 4. Frase Verba Subordinatif 5. Frase Ajektifa Koordinatif 6. Frase Ajektifa Subordinatif 7. Frase Preposisional

2.1.1.1 Penyusunan Frase Nomina

Frase Nomina (FN) adalah frase yang dapat mengisi fungsi subjek atau objek di dalam klausa. Menurut strukturnya dapat dibedakan adanya frase nomina koordinatif (FNK) dan frase nomina subordinatif (FNS).


(8)

1. Penyusunan Frase Nomina Koordinatif FNK dapat disusun dari:

a. Dua buah kata berkategori nomina yang merupakan pasangan dan antonim relasional. Contoh: ayah ibu, pembeli penjual, guru murid, pembicara pendengan, siang malam, penatar petatar.

b. Dua buah kata berkategori nomina yang merupakan anggota dari suatu medan makna. Contoh: sawah ladang, kampung halaman, cabe bawang, ayam itik, tikar bantal, semen pasir.

2. Penyusunan Frase Nomina Subordinatif

Frase nomina subordinatif dapat disusun dari nomina + nomina (N + N), nomina + verba (N + V), nomina + ajektifa (N + A), adverbia + nomina (Adv + N), nomina + adverbia (N + Adv), nomina + numeralia (N + Num), numeralia + nomina (Num + N), dan nomina + demonstratifa (N + Dem).

a. FNS yang berstruktur N + N

Beberapa contoh dari FNS yang berstruktur N + N dapat dilihat pada tabel 2.1.

Tabel 2.1 Contoh frase nomina (N + N)

Makna Gramatikal Contoh Frase

milik rumah paman

bagian awal tahun

asal bahan cincin emas

asal tempat jeruk bali

campuran roti keju

hasil lukisan Afandi

jenis mobil sedan

gender anak laki-laki

seperti jamur kuping

model topi koboi

memakai kereta listrik

peruntukkan pensil alis

ada di angkatan darat


(9)

letak pintu belakang

dilengkapi kursi roda

sasaran perluasan kota

pelaku pemberian kakek

alat perang mulut

b. FNS yang berstruktur N + V

Beberapa contoh dari FNS yang berstruktur N + V dapat dilihat pada tabel 2.2.

Tabel 2.2 Contoh frase nomina (N + V)

Makna Gramatikal Contoh Frase

tempat halaman parkir

kegunaan pisau cukur

yang di sambal goreng

yang biasa melakukan tukang copet c. FNS yang berstruktur N + A

Beberapa contoh dari FNS yang berstruktur N + A dapat dilihat pada tabel 2.3.

Tabel 2.3 Contoh frase nomina (N + A)

Makna Gramatikal Contoh Frase

keadaan mobil rusak

derajat sekolah dasar

rasa kecap manis

bentuk rumah mungil

d. FNS yang berstruktur Adv + N

Beberapa contoh dari FNS yang berstruktur Adv + N dapat dilihat pada tabel 2.4.


(10)

Tabel 2.4 Contoh frase nomina (Adv + N)

Makna Gramatikal Contoh Frase

ingkar tanpa usaha

kuantitas semua penduduk

batas hanya nasi

e. FNS yang berstruktur N + Adv

Sejauh ini FNS yang berstruktur N + Adv hanya bermakna

gramatikal ‘pembatasan’. Dalam hal ini hanya ada sebuah adverbia

pembatasan yaitu ‘saja’. Contoh: Air saja (tak ada yang lain), Uang saja

(bukan benda lain), Dia saja (orang lain tak ada), Garam saja (tanpa bumbu lain), Pensil saja (tidak pakai pena).

f. FNS yang berstruktur Num + N

Beberapa contoh frase FNS yang berstruktur Num + N dapat dilihat pada tabel 2.5.

Tabel 2.5 Contoh frase nomina (Num + N)

Makna Gramatikal Contoh Frase

banyaknya sepuluh rumah

himpunan kelima rumah

g. FNS yang berstruktur N + Num

Sejauh ini FNS yang berstruktur N + Num memiliki makna

gramatikal ‘tingkat’. Contoh: Juara kedua, Kursi ketiga, Rumah kelima,

Simpangan kedua, Anak kelima. h. FNS yang berstruktur N + Dem

Sejauh ini FNS yang berstruktur N + Dem memiliki makna

gramatikal ‘penentu’, dapat disusun apabila N-nya memiliki komponen

makna (+ benda umum) dan unsur kedua berkategori pronomina deomnstratifa. Contoh: Anak itu, Topi ini, Mereka itu, Pegawai ini, Universitas itu.


(11)

2.1.1.2 Penyusunan Frase Verba

Frase verba adalah frase yang mengisi atau menduduki fungsi predikat pada sebuah kalusa. Dilihat dari kedudukan di antara kedua unsur pembentuknya dibedakan adanya frase verba koordinatif (FVK) dan frase verba subordinatif. 1. Penyusunan Frase Verba Koordinatif (FVK)

Frase verba koordinatif dapat disusun dari:

a. Dua buah kata berkategori verba yang merupakan anggota dari antonim

relasional dan memiliki makna gramatikal ‘menggabungkan’ sehingga di

antara keduanya dapat disisipkan kata ‘dan’. Contoh: Tambah kurang, Jual beli, Pulang pergi, Mundur maju, Naik turun.

b. Dua buah kata berkategori verba yang merupakan anggota dari satu medan

makna dan memiliki makna gramatikal ‘menggabungkan’ sehingga di

antara keduanya dapat disisipkan kata ‘dan’. Contoh: Makan minum, Usap raba, Peluk cium, Makan pakai, Dengar lihat.

2. Penyusunan Frase Verba Subordinatif (FVS)

Frase verba subordinatif dapat disusun dari adverbia + verba (Adv + V), verba + adverbia (V + Adv), verba + nomina (V + N), verba + ajektifa (V + A). a. FVS yang berstruktur Adv + V

Beberapa contoh dari FVS yang berstruktur Adv + V dapat dilihat pada tabel 2.6.

Tabel 2.6 Contoh frase verba (Adv + V)

Makna Gramatikal Contoh Frase

ingkar tidak membayar

frekuensi sering muncul

kuantitas sedikit bicara

waktu sudah mandi

keinginan akan mandi

keselesaian sedang bertemu

keharusan wajib hadir

kepastian pasti hadir


(12)

b. FVS yang berstruktur V + Adv

Beberapa contoh dari FVS yang berstruktur V + Adv dapat dilihat pada tabel 2.7.

Tabel 2.7 Contoh frase verba (V + Adv)

Makna Gramatikal Contoh Frase

berulang makan lagi

ikut serta minum juga

c. FVS yang berstruktur V + N

Beberapa contoh dari FVS yang berstruktur V + N memiliki makna

gramatikal ‘alat’, dapat disusun apabila unsur pertama berkategori verba

yang memiliki komponen makna (+ tindakan) atau (+ perbuatan), sedangkan unsur kedua berkategori nomina yang memiliki komponen makna (+ alat). Contoh: terjun payung, lempar cakram, lari gawang, lompat galah, uji materi.

d. FVS yang berstruktur V + A

FVS yang berstruktur V + A memiliki makna gramatikal ‘keadaan’ atau ‘sifat’ dapat disusun apabila unsur pertama berkategori verba yang

memiliki komponen makna (+ tindakan) atau (+ perbuatan), sedangkan unsur kedua berkategori ajektifa yang memiliki komponen makna (+ keadaan) atau (+ sifat). Contoh: lompat jauh, loncat indah, terjun bebas, jalan cepat, membaca nyaring.

2.1.1.3 Penyusunan Frase Ajektifa

Frase ajektifa adalah frase yang mengisi atau menduduki fungsi predikat dalam sebuah klausa ajektifa. Dilihat dari kedudukan kedua unsurnya dibedakan adanya frase ajektifa koordinatif (FAK) dan frase ajektifa subordinatif (FAS). 1. Penyusunan Frase Ajektifa Koordinatif (FAK)

Frase ajektifa koordinatif (FAK) dapat disusun dari:

a. Dua buah kata berkategori ajektifa yang merupakan anggota dari antonim


(13)

kedua dapat disisipkan kata ‘atau’. Contoh: baik buruk, tua muda, jauh dekat, lama baru.

b. Dua buah kata berkategori ajektifa yang merupakan anggota dari pasangan

bersinonim, dan memiliki makna gramatikal ‘sangat’. Contoh: tua renta,

terang benderang, cantik molek, muda belia, segar bugar.

c. Dua buah kata berkategori ajektifa yang maknanya sejalan tidak

bertentangan dan memiliki makna gramatikal ‘himpunan’ sehingga di

antara keduanya dapat disisipkan kata ‘dan’. Contoh: bulat panjang,

gemuk pendek, tinggi kurus, kecil mungil, lurus mulus.

d. Dua buah kata berkategori ajektifa yang maknanya tidak sejalan

(bertentangan) dan memiliki makna ‘berkebalikan’ sehingga di antara

kedua unsurnya harusnya disisipkan kata ‘tetapi’. Contoh: murah tetapi

bagus, besar tetapi jelek, kecil tetapi mungil, repot tetapi menyenangkan, sedih tapi senang.

2. Penyusunan Frase Ajektifa Subordinatif (FAS)

Frase ajektifa subordinatif disusun dengan struktur A + N, A + A, A + V, Adv + A, dan A + Adv. Aturannya sebagai berikut:

a. FAS yang berstruktur A + N dan memiliki makna gramatikal ‘seperti’

apabila unsur pertama berketegori ajektifa dan memiliki komponen makna (+ warna) dan unsur kedua berkategori nomina dan memiliki komponen makna (+ perbandingan), sehingga di antara kedua unsrunya dapat

disisipkan kata ‘seperti warna’. Contoh: merah darah, kuning emas, hijau

daun, biru langit, kuning gading.

b. FAS yang berstruktur A + A dan memiliki makna gramatikal ‘jenis warna’

dapat disusun dari:

1. Unsur pertama berkategori ajektifa dan berkomponen makna (+ warna) dan unsur kedua berkategori ajektifa dan berkomponen makna (+ cahaya). Contoh: merah terang.

2. Unsur pertama berketegori ajektifa dan memiliki komponen makna (+ warna), sedangkan unsur kedua berkategori ajektifa dan berkomponen makna (+ warna) dan (+ benda). Contoh: kuning kehijau-hijauan.


(14)

c. FAS yang berstruktur A + V dan bermakna gramatikal ‘untuk’ dapat disusun aabila unsur pertama berkategori ajektifa dan memiliki komponen makna (+ sikap batin), sedangkan unsur kedua berkategori verba dan memiliki komponen makna (+ tindakan) atau (+ kejadian). Contoh: berani datang, takut pulang, malu bertanya, siap berjuang, berani mati.

d. FAS yang berstruktur Adv + A dan memiliki makna gramatikal ‘ingkar’

dapat disusun apabila unsur pertama berkategori adverbia yang berkomponen makna (+ ingkar) dan unsur kedua berkategori ajektifa dan berkomponen makna (+ keadaan) atau (+ sikap batin). Contoh: tidak takut, tidak berani, tidak malu.

e. FAS yang berstruktur Adv + A dan bermakna gramatikal ‘derajat’ dapat

disusun bilsa unsur pertama berkategori adverbia dan berkomponen makna (+ derajat) atau (+ tingkat), sedangkan unsur kedua berkategori ajektifa dan berkomponen makna (+ keadaan) atau (+ sifat). Contoh: sangat indah, kurang bagus, lebih baik, cukup pandai.

f. FAS yang berstruktur A + Adv dan bermakna gramatikal ‘sangat’ atau

‘tingkat superlatif’ dapat disusun apabila unsur pertama berkategori

ajektifa dan bermakna gramatikal (+ keadaan), sedangkan kedua berkategori adverbia dan berkomponen makna (+ paling) dalam bentuk

kata ‘sekali’. Contoh: indah sekali, bagus sekali, panas sekali.

2.1.1.4 Penyusunan Frase Preposisional

Frase preposisional adalah frase yang berfungsi sebagai pengisi fungsi keterangan di dalam sebuah klausa. Frase preposisional ini buka frase koordinatif maupun subordinatif, melainkan fase eksosentrik. Jadi, di dalam frase ini tidak ada unsur inti dan unsur tambahan. Kedua unsurnya merupakan satu kesatuan yang utuh.

Frase preposisional tersusun dari kata berkategori preposisi dan kata atau frase berkategori nomina. Contoh: di pasar, ke dalam kamar, dari rumah sakit, dengan pensil warna, oleh ibu tiri.


(15)

2.1.2 Penyusunan Klausa

Klausa adalah satuan sintaksis yang bersifat prediktif. Artinya, di dalam satuan atau konstruksi itu terdapat sebuah predikat, bila di dalam satuan tidak terdapat predikat, maka satuan itu bukan disebut klausa. Kedudukan predikat ini sangat penting, sebab jenis dan kategori dari predikat itulah yang menentukan hadirnya fungsi subjek (S), fungsi objek (O), fungsi pelengkap, dan sebagainya [5].

Berdasarkan kategori yang mengisi fungsi P dapat dibedakan menjadi: 1. Klausa verba

2. Klausa nomina 3. Klausa ajektifa 4. Klausa preposisional 5. Klausa numeral

2.1.2.1 Penyusunan Klausa Verba

Secara semantik ada tiga buah jenis verba, yaitu verba tindakan, verba kejadian, dan verba keadaan.

1. Klausa Verba Tindakan

Klausa Verba tindakan dibagi menjadi beberapa kategori: a. Klausa Verba Tindakan Bersasaran Tak Berpelengkap

Klausa tindakan bersasaran tak berpelengkap dapat disusun dari sebuah verba berkomponen makna (+ tindakan) dan (+ sasaran), sehingga klausanya memiliki fungsi sintaksis S, P, O. Dalam hal ini komponen makna V yang mengisi fungsi P harus sejalan dengan komponen makna yang dimiliki fungsi S dan fungsi O. Contoh dapat dilihat pada tabel 2.8.

Tabel 2.8 Contoh klausa verba tindakan bersasaran tak berpelengkap Kalimat Pak Lurah membaca koran

Sintaksis S P O

Makna (+ manusia) (+ manusia) -


(16)

b. Klausa Verba Tindakan Bersasaran Berpelengkap

Klausa tindakan bersasaran berpelengkap dapat disusun dari sebuah verba berkomponen makna (+ tindakan), (+ sasaran), dan (+ pelengkap), sehingga klausanya memiliki fungsi S, P, O, dan Pel. Dalam hal ini tentu saja komponen makna yang dimiliki P harus sejalan dengan komponen makna yang dimiliki fungsi-fungsi lain. Contoh dapat dilihat pada tabel 2.9.

Tabel 2.9 Contoh klausa verba tindakan bersasaran berpelengkap

Kalimat Saya membukakan ayah pintu

Sintaksis S P Pel O

Makna

(+ manusia) (+ manusia) - -

- (+ pembuka) (+ dibukakan) -

- (+ bukaan) (+ bukaan) -

c. Klausa Verba Tindakan Tak Bersasaran

Klausa verba tindakan tidak bersasaran dapat disusun dari sebuah verba yang memiliki komponen makna (+ tindakan) dan (- sasaran), sehingga klausanya hanya memiliki fungsi S dan fungsi P. Dalam hal ini tentu saja komponen makna yang dimiliki P harus sejalan dengan komponen makna yang dimiliki S. Contoh: Anak-anak itu menari, Anjing mengonggong, Mereka sedang berlibur di Bali.

2. Klausa Verba Kejadian

Klausa verba kejadian dapat disusun dari predikat verba yang memiliki komponen makna (+ kejadian). Dalam hal fungsi sintaksis yang wajib hadir adalah fungsi S dan fungsi P. Fungsi S berupa nomina yang mengalami kejadian seperti disebutkan oleh predikat. Contoh dapat dilihat pada tabel 2.10.

Tabel 2.10 Contoh klausa verba kejadian Kalimat Kompor gas baru itu meledak

Sintaksis S P


(17)

3. Klausa Verba Keadaan

Klausa Verba keadaan dapat disusun dari predikat verba yang memiliki komponen makna (+ keadaan). Dalam hal ini fungsi sintaksis yang muncul hanyalah fungsi S dan fungsi P. Fungsi S berupa nomina yang mengalami keadaan seperti yang disebutkan oleh predikat. Contoh dapat dilihat pada tabel 2.11.

Tabel 2.11 Contoh klausa verba keadaan

Kalimat Kami malu dengan kejadian semalam

Sintaksis S P

Makna yang mengalami keadaan 2.1.2.2 Penyusunan Klausa Nomina

Klausa nomina hanya memiliki fungsi wajib S dan P. Klausa nomina ini dapat disusun dari fungsi S yang berupa kata atau frase berkategori nomina dan P yang berupa kata atau frase berkategori nomina. Klausa nomina, antara lain, dapat disusun jika:

1. Nomina yang mengisi fungsi S merupakan jenis (spesifik) dari nomina pengisi fungsi P (generik). Contoh dapat dilihat pada tabel 2.12.

Tabel 2.12 Contoh pertama penyusunan klausa nomina Kalimat Anjing itu binatang

Sintaksis S P

2. Nomina yang mengisi fungsi S mempunyai nama pada nomina pengisi fungsi P. Contoh dapat dilihat pada tabel 2.13.

Tabel 2.13 Contoh kedua penyusunan klausa nomina Kalimat Petani itu Pak Ridwan

Sintaksis S P

3. Nomina pengisi fungsi P adalah profesi (jabatan, pekerjaan) bagi nomina pengisi fungsi S. Contoh dapat dilihat pada tabel 2.14.


(18)

Tabel 2.14 Contoh ketiga penyusunan klausa nomina Kalimat Ibunya dokter gigi di puskesmas itu Sintaksis S P

4. Nomina pengisi fungsi P adalah relasi bagi nomina pengisi fungsi S. Contoh dapat dilihat pada tabel 2.15.

Tabel 2.15 Contoh keempat penyusunan klausa nomina Kalimat Mereka itu murid Pak Rahmat

Sintaksis S P

5. Nomina pengisi fungsi S mempunyai ciri atau sifat khas yang disebutkan oleh nomina pengisi fungsi S. Contoh dapat dilihat pada tabel 2.16.

Tabel 2.16 Contoh kelima penyusunan klausa nomina Kalimat Kereta api kendaraan murah

Sintaksis S P

2.1.2.3 Penyusunan Klausa Ajektifa

Klausa ajektifa memiliki fungsi wajib S dan P. Klausa ajektifa dapat disusun dari fungsi S yang berkategori N dan fungsi P yang berkategori A. Klausa ajektifa ini dapat disusun jika:

1. Fungsi P yang berkategori ajektifa memiliki komponen makna (+ keadaan fisik). Contoh dapat dilihat pada tabel 2.17.

Tabel 2.17 Contoh pertama klausa ajektifa Kalimat Gadis itu tinggi sekali

Sintaksis S P

2. Fungsi P yang berkategori ajektifa memiliki komponen makna (+ sifat batin). Contoh dapat dilihat pada tabel 2.18.

Tabel 2.18 Contoh kedua klausa ajektifa Kalimat Pemuda desa itu sangat berani


(19)

3. Fungsi P yang berkategori ajektifa memiliki komponen makna (+ perasaan batin). Contoh dapat dilihat pada tabel 2.19.

Tabel 2.19 Contoh ketiga klausa ajektifa Kalimat Saya khawatir dengan keadaanmu Sintaksis S P

2.1.2.4 Penyusunan Klausa Preposisional

Klausa preposisional adalah klausa yang fungsi P nya diisi oleh frase preposisional. Contoh dapat dilihat pada tabel 2.20.

Tabel 2.20 Contoh pertama klausa preposisional Kalimat Ibu dan Ayah ke pasar

Sintaksis S P

Klausa preposisional ini lazim digunakan dalam bahasa ragam lisan dan ragam bahasa nonformal. Dalam ragam formal fungsi P akan diisi oleh sebuah verba dan frase preposisinya menjadi fungsi keterangan. Contoh dapat dilihat pada tabel 2.21.

Tabel 2.21 Contoh kedua klausa preposisional Kalimat Mereka datang dari Medan

Sintaksis S P Ket

2.1.2.5 Penyusunan Klausa Numeral

Klausa numeral adalah klausa yang fungsi P nya diisi oleh frase numeral. Contoh dapat dilihat pada tabel 2.22.

Tabel 2.22 Contoh klausa numeral Kalimat Mobil pejabat itu empat buah

Sintaksis S P

2.1.3 Penyusunan Kalimat

Satuan bahasa yang menjadi inti dalam pembicaraan sintaksis adalah kalimat yang merupakan satuan di atas klausa dan di bawah wacana. Kalimat adalah satuan sintaksis yang disusun dari konstituen dasar, yang biasanya berupa klausa, dilengkapi dengan konjungsi bila diperlukan, serta disertai dengan intonasi final.


(20)

Intonasi final merupakan syarat penting dalam pembentukan sebuah kalimat dapat berupa intonasi deklaratif (yang dalam bahasa ragam tulis diberi tanda titik), intonasi interogatif (yang dalam bahasa ragam tulis diberi tanda tanya), intonasi imperatif (yang dalam bahasa ragam tulis diberi tanda seru), dan intonasi interjektif (yang dalam bahasa ragam tulis diberi tanda seru). Tanpa intonasi final ini sebuah klausa tidak akan menjadi sebuah kalimat.

2.1.3.1 Kalimat Sederhana

Kalimat sederhana adalah kalimat yang dibentuk dari sebuah klausa dasar atau klausa sederhana, yaitu klausa yang fungsi-fungsi sintaksisnya hanya diisi oleh sebuah kata atau sebuah frase sederhana. Contoh: Ayah membaca koran, Kakek tidur di kamar belakang, Istrinya pegawai swasta.

Semua kalimat sederhana yang dibentuk dari klausa dasar ini adalah kalimat deklaratif positif. Lalu, berdasarkan kategori klausanya dapat disusun kalimat dasar atau kalimat sederhana yang berkategori seperti berikut:

1. Kalimat Verba Monotransitif

Kalimat verba monotransitif adalah kalimat yang predikatnya berupa verba yang memiliki komponen makna (+ tindakan) dan (+ sasaran). Contoh dapat dilihat pada tabel 2.23.

Tabel 2.23 Contoh kalimat verba monotransitif Kalimat Nenek membaca buku di kamar

Sintaksis S P O Ket

2. Kalimat Verba Bitransitif

Kalimat verba bitransitif yaitu kalimat yang predikatnya berupa verba yang memiliki komponen makna (+ tindakan), (+ sasaran), dan (+ pelengkap). Contoh dapat dilihat pada tabel 2.24.

Tabel 2.24 Contoh kalimat verba bitransitif Kalimat Kakak membelikan adik sepatu baru


(21)

3. Kalimat Verba Intransitif

Kalimat verba intransitif yaitu kalimat yang predikatnya berupa verba yang memiliki komponen makna (+ tindakan) dan (- sasaran). Contoh dapat dilihat pada tabel 2.25.

Tabel 2.25 Contoh kalimat verba intransitif Kalimat Anak-anak itu menari di aula

Sintaksis S P O

4. Kalimat Nomina

Kalimat nomina yaitu kalimat yang predikatnya berkategori nomina atau dibentuk dari sebuah klausa nomina dan intonasi final. Contoh dapat dilihat pada tabel 2.26.

Tabel 2.26 Contoh kalimat nomina Kalimat Orang itu petani

Sintaksis S P

5. Kalimat Ajektifa

Kalimat ajektifa adalah kalimat yang predikatnya berkategori ajektifa dibentuk dari sebuah klausa ajektifa dan intonasi final. Contoh dapat dilihat pada tabel 2.27.

Tabel 2.27 Contoh kalimat ajektifa Kalimat Rumahnya besar sekali

Sintaksis S P

6. Kalimat Preposisional

Kalimat prepoisisonal yaitu kalimat yang predikatnya berupa frase preposisional atau dibentuk dari sebuah klausa preposisional dan intonasi final. Contoh dapat dilihat pada tabel 2.28.

Tabel 2.28 Contoh kalimat preposisional Kalimat Anak-anak itu di masjid


(22)

7. Kalimat Numeral

Kalimat numeral adalah kalimat yang predikatnya berupa frase numeral dibentuk dari sebuah klausa numeral dan intonasi final. Contoh dapat dilihat pada tabel 2.29.

Tabel 2.29 Contoh kalimat numeral Kalimat Mobil saya tiga buah

Sintaksis S P

Namun, dalam bahasa ragam formal harus dimunculkan predikat verbanya. Contoh: Pensilnya berjumlah lima buah

2.1.3.2 Kalimat Luas

Dalam praktik berbahasa yang sebenarnya seringkali tidak cukup hanya dengan menggunakan kalimat dasar atau kalimat sederhana. Sebuah kalimat biasanya terangkum informasi lebih banyak di dalamnya dan disebut dengan kalimat luas. Beberapa cara dalam menyusun kalimat luas diantaranya:

1. Disusun dengan cara memberi fungsi keterangan lebih dari satu pada sebuah kalimat. Contoh dapat dilihat pada tabel 2.30.

Tabel 2.30 Contoh pertama kalimat luas Kalimat Semalam dengan

diam-diam

adik membaca komik di kamar Sintaksis Ket.

waktu

Ket. cara S P O Ket.

tempat 2. Disusun dengan cara memberi keterangan tambahan pada fungsi subjek, fungsi objek, atau fungsi lainnya pada kalimat tersebut. Contoh dapat dilihat pada tabel 2.31.

Tabel 2.31 Contoh kedua kalimat luas Kalimat

Preman itu

dengan brutal

membunuh Mang Karta,

seorang pedagang gorengan

di pasar Klender

Sintaksis

S Ket. cara P O Kel.

tambahan pada O


(23)

3. Disusun dengan memberi keterangan aposisi pada fungsi subjek, objek, atau fungsi lainnya pada kalimat itu. Contoh dapat dilihat pada tabel 2.32.

Tabel 2.32 Contoh ketiga kalimat luas Kalimat Jalan kereta

api,

alat transportasi masal,

akan dibangun

di pulau Kalimantan

Sintaksis S Ket. Aposisi P Pel.

4. Disusun dengan cara menyisipkan sebuah klausa pada klausa lain. Klausa yang disispkan disebut klausa sisipan, dan klausa yang tersisipi disebut klausa utama. Penyisipan dilakukan dengan menggunakan konjungsi. Contoh dapat dilihat pada tabel 2.33.

Tabel 2.33 Contoh keempat kalimat luas

Kalimat Orang yang sedang antre minyak tanah itu bukan kakak saya.

Klausa utama Orang itu bukan kakak saya

Klausa sisipan Orang itu sedang antre minyak tanah 2.2 POS Tag

POS (Part-of-Speech) Tag merupakan suatu cara pengkategorian kelas kata, seperti kata benda, kata kerja, kata sifat, dan lain-lain. POS Tagging adalah suatu aktivitas menganotasi setiap kata/token dengan nilai part-of-speech tag yang sesuai. Informasi nilai POS Tag ini merupakan hal yang mendasar bagi keperluan pengolahan bahasa manusia [6].

POS Tag yang digunakan sebagai bantuan dalam mengenali token/tag setiap kata diambil dari POS Tag Indonesia yang dibuat oleh Arawinda Dinakaramani, Fam Rashel, Andry Luthfi, dan Ruli Manurung. POS Tag diambil pada tanggal 29 Mei 2015.

POS Tag akan mengenali kata mana yang termasuk kata benda, kata kerja, kata sifat, kata keterangan, kata depan, kata sambung, kata ganti benda, dan kata bilangan. POS Tag ini menggunakan pendekatan Rule-Based berdasarkan aturan tata bahasa Indonesia. Pertama-tama, POS Tag akan melakukan tokenisasi terhadap teks menggunakan kamus bahasa Indonesia. Selanjutnya kata-kata yang termasuk ke dalam jenis closed-class word diproses. Lalu setiap kata yang ambigu diproses


(24)

menggunakan aturan-aturan yang sudah didefinisikan untuk menemukan kelas kata yang tepat. Secara garis besar, fungsionalitas POS Tagger dapat terbagi menjadi 6 modul besar [7], yaitu:

1. Multi-word Expression Tokenizer

Merupakan modul tokenisasi yang memperhatikan ekspresi frase yang terdiri lebih dari satu kata. Dokumen diproses oleh tokenizer untuk menghasilkan token-token untuk diberikan part-of-speech yang sesuai kemudian.

2. Name Entity Recognizer

Merupakan modul yang secara khusus menangani token-token entitas

(proper-noun), seperti nama orang, nama tempat, nama organisasi, dan

lain-lain.

3. Closed-Class Word Tagging

Merupakan modul yang berguna untuk menangani token-token yang termasuk ke dalam kategori closed-class word menggunakan sebuah kamus.

4. Open-Class Word Tagging

Merupakan modul yang berguna untuk menangani token-token yang termasuk ke dalam kategori open-class word dengan memanfaatkan MorphInd.

5. Rule-Based Tagging

Merupakan modul yang berguna untuk menyelesaikan token-token ambigu berdasarkan aturan-aturan yang telah didefinisikan sebelumnya.

6. Resolver

Merupakan modul yang berguna untuk memberikan tag kepada token-token yang tidak diketahui.

2.3 Teori Bahasa dan Automata

Tata bahasa (grammar) bisa didefinisikan secara formal sebagai kumpulan dari himpunan-himpunan variabel, simbol,-simbol terminal, simbol awal, yang dibatasi oleh aturan-aturan produksi. Pada tahun 1959 seorang ahli bernama Noam Chomsky melakukan penggolongan tingkatan bahasa menjadi empat, yang disebut dengan Hirarki Chomsky.


(25)

Tabel 2.34 Tabel penggolongan tingkatan bahasa menurut Chomsky [8] Bahasa Mesin Otomata Batasan Aturan Produksi Natural Language Mesin Turing Tidak ada batasan

Context Sensitive Linear Bounded Automata

| α | ≤ | β |

Bebas Konteks Push Down Automata α berupa sebuah simbol variabel.

Regular Finite State Automata

(FSA) meliputi

Deterministic Finite

Automata (DFA) &

Nondeterministic Finite

Automata (NFA)

α adalah sebuah simbol

variabel.

β maksimal memiliki

sebuah simbol variabel yang bila ada terletak di posisi paling kanan. Semua penggolongan diatas berdasarkan pembatasan yang dilakukan pada aturan produksinya. Aturan produksi merupakan pusat dari tata bahasa, yang menspesifikasikan bagaimana suatu tata bahasa melakukan transformasi suatu

string ke bentuk lainnya. Melalui aturan produksi tersebut didefinisikan suatu

bahasa yang berhubungan dengan tata bahasa tersebut. Semua aturan produksi dinyatakan dalam bentuk “αβ” (dibaca: α menghasilkan β atau α menurunkan

β). Dimana α menyatakan simbol-simbol pada ruas kiri aturan produksi dan β menyatakan menyatakan simbol-simbol pada ruas kanan aturan produksi (disebut juga sebagai hasil produksi). Simbol-simbol tersebut dapat berupa simbol terminal atau variabel. Simbol variabel masih bisa diturunkan sedangkan simbol terminal sudah tidak dapat diturunkan lagi. Simbol variabel dinyatakan dalam huruf besar sedangkan simbol terminal dinyatakan dengan huruf kecil [8].

Berdasarkan tabel 2.34 pembahasan lebih diarahkan ke bahasa bebas konteks karena algoritma CYK hanya mengenali aturan produksi dari Chomsky

Normal Form (CNF), sedangkan CNF berawal dari Context Free Grammar (CFG)

atau tata bahasa bebas konteks.

2.3.1 Tata Bahasa Bebas Konteks (TBBK)

TBBK atau CFG adalah suatu cara untuk menunjukkan bagaimana menghasilkan untai-untai dalam sebuah bahasa. Suatu CFG terdiri dari himpunan


(26)

simbol terminal dan simbol variabel. Pada CFG aturan produksinya dapat dilihat pada aturan produksi 2.1.

αβ …(2.1)

Dimana α merupakan sebuah simbol variabel dan β merupakan hasil produksi dari α. Contoh aturan produksi yang dapat dibuat dari CFG dapat dilihat pada aturan produksi 2.2.

S  aBCde

B  fGe …(2.2)

Dimana S merupakan variabel awal dan aBCde merupakan hasil produksi dari variabel S begitu juga dengan variabel B yang merupakan turunan dari variabel S. Saat menurunkan suatu string, simbol-simbol variabel akan mewakili bagian-bagian yang belum terturunkan dari string tersebut. Pada CFG letak bagian yang belum terturunkan bisa dimana saja. Saat penurunan itu telah lengkap, semua bagian yang belum terturunkan telah diganti oleh string-string (yang mungkin saja kosong) dari himpunan simbol terminal. Tata bahasa bebas konteks menjadi dasar dalam pembentukan suatu proses analisis sintaksis.

2.3.2 Penyederhanaan Tata Bahasa Bebas Konteks

Penyederhanaan ini bertujuan untuk melakukan pembatasan sehingga tidak menghasilkan aturan produksi yang rumit dan tidak berguna. Suatu tata bahasa bebas konteks dapat disederhanakan dengan cara:

1. Menghilangkan Produksi Useless (tidak berguna)

Produksi useless merupakan produksi yang memuat simbol variabel yang tidak memiliki penurunan yang akan menghasilkan terminal-terminal. Produksi ini tidak berguna karena bila diturunkan tidak akan pernah selesai. Contoh dapat dilihat pada aturan produksi 2.3.


(27)

S  Aa | B A  ab | D | ɛ

B  b | E | F C  bb

F  G

G  bc …(2.3)

Berdasarkan contoh diatas dapat dilihat bahwa variabel D dan E tidak memiliki penurunan yang menuju terminal, sehingga variabel ini dapat dihilangkan. Konsekuensinya semua variabel D dan E dihapus dari aturan produksi. Variabel C juga dapat dihapus karena tidak ada variabel yang mengarah ke variabel C. Hasil penyederhanaannya dapat dilihat pada aturan produksi 2.4.

S  Aa | B A  ab | ɛ

B  b | F F  G

G  bc …(2.4)

2. Menghilangkan Produksi Unit

Produksi unit adalah produksi dimana ruas kiri dan kanan aturan produksi hanya berupa satu simbol variabel. Keberadaan produksi unit membuat tata bahasa memiliki kerumitan yang tak perlu atau menambah panjang penurunan. Penyederhanaan ini dilakukan dengan cara mengganti aturan produksi unit. Hasil penyederhanaan dapat dilihat pada aturan produksi 2.5.

S  Aa | B A  ab | ɛ

B  b | F F  G

G  bc …(2.5)

Berdasarkan contoh aturan produksi 2.5, variabel B memiliki turunan F, variabel F memiliki turunan G dan variabel G memiliki turunan bc, sehingga dapat digambarkan bahwa B  F  G  bc. Aturan ini dapat disederhanakan


(28)

dengan cara mengganti aturan produksi dari variabel B menjadi bc. Hasil penyederhanaannya dapat dilihat pada aturan produksi 2.6.

S  Aa | B A  ab | ɛ

B  b | bc …(2.6)

3. Menghilangkan Produksi Kosong (ɛ)

Produksi ɛ atau produksi kosong dapat dihilangkan, karena produksi ini tidak menghasilkan apa-apa. Contoh aturan produksi dapat dilihat pada aturan produksi 2.7.

S  Aa | B A  ab | ɛ

B  b | bc …(2.7)

Pada aturan produksi 2.7 variabel A mengandung produksi kosong sehingga dapat dihilangkan. Hasil penyederhanaannya dapat dilihat pada aturan produksi 2.8.

S  Aa | B A  ab

B  b | bc …(2.8)

Apabila terdapat kasus seperti aturan produksi 2.9. S  Aa | B

A ɛ

B  b | bc …(2.9)

Semua variabel A yang ada didalam aturan produksi dihapus karena variabel A mengandung produksi kosong. Hasil penyederhanannya dapat dilihat pada aturan produksi 2.10.

S  a | B

B  b | bc …(2.10)

2.3.3 Chomsky Normal Form (CNF)

CNF merupakan salah satu bentuk normal yang sangat berguna untuk CFG. Bentuk CNF dapat dibuat dari sebuah CFG yang telah mengalami penyederhanaan


(29)

dengan menghilangkan produksi useless, unit, dan empty (himpunan kosong yang dilambangkan dengan ɛ).

Aturan produksi dalam bentuk normal Chomsky ruas kanannya tepat berupa sebuah terminal atau dua variabel. Contoh aturan produksi dapat dilihat pada 2.11.

A  BC A  b B  a

C  BA | d …(2.11)

Langkah-langkah dalam pembentukan CNF yaitu: 1. Biarkan aturan produksi yang sudah dalam bentuk CNF.

2. Lakukan penggantian aturan produksi yang ruas kanannya memuat simbol terminal dan panjang ruas kanan > 1.

3. Lakukan penggantian aturan produksi yang ruas kanannya memuat > 2 simbol variabel.

4. Penggantian dapat dilakukan berkali-kali sampai semua aturan produksi berada dalam bentuk CNF.

5. Selama dilakukan penggantian, kemungkinan akan memperoleh aturan-aturan produksi baru dan memunculkan simbol-simbol variabel baru.

Contoh CFG yang sudah disederhanakan dapat dilihat pada aturan produksi 2.12.

S  bC | aB | AB A  bAC | a B  aCB | b

C  cBA | c …(2.12)

Pada bentuk CFG diatas, aturan produksi yang sudah dalam bentuk CNF adalah S  AB, A  a, B  b, dan C  c. Selebihnya harus dilakukan penggantian aturan produksi. Hasil penggantian dapat dilihat pada aturan produksi 2.13.


(30)

S  bC menjadi S  V1C S  aB menjadi S  V2B A  bAC menjadi A  V1AC A  V1AC menjadi A  V1V3 B  aCB menjadi B  V2CB B  V2CB menjadi B  V2V4 C  cBA menjadi C  V5BA

C  V5BA menjadi C  V5V6 …(2.13)

Aturan produksi baru dapat dilihat pada aturan 2.14. V1  b

V2  a V3  AC V4  CB V5  c

V6  BA …(2.14)

Hasilnya dapat dilihat pada aturan produksi 2.15. S  V1C

S  V2B S  AB A  V1V3

A  V2 B  V2V4

B  V3 C  V5V6

C  V3 V1  b V2  a V3  AC V4  CB V5  c


(31)

2.3.4 Teknik-Teknik Parsing

Dalam ilmu komputer dan linguistik, parsing merupakan proses memecah

input teks menjadi token untuk menentukan pembentukan struktur kalimat. Proses

parsing bertujuan untuk menentukan apakah input tersebut dapat diturunkan dari

state awal tata bahasa yang membentuk pohon penurunan. Ada 2 teknik parsing

yang dapat digunakan diantaranya: 2.3.4.1 Top-Down Parsing

Pada teknik ini proses parsing dilakukan mulai dari root dan mencari terminal-terminal yang berupa kata-kata. Jika penelusuran pencarian terminal tidak ditemukan pada satu simbol, dapat dilakukan pencarian ulang (backtracking) pada simbol lain. Cara kerja top-down parsing dapat dilihat pada gambar 2.1. Kata yang

digunakan sebagai contoh adalah “Anak itu senang diajar”.

Langkah 1

<subjek> <predikat> <kalimat>

Langkah 2

<subjek> <predikat> <kalimat>

<frase nomina>

Langkah 3

<subjek> <predikat> <kalimat>

<frase nomina>

<nomina>

anak

Langkah 4

<subjek> <predikat> <kalimat>

<frase nomina>

<nomina>

anak

<demonstrativa>


(32)

Langkah 4

<subjek> <predikat> <kalimat>

<frase nomina>

<nomina>

anak

<demonstrativa>

itu

<frase ajektifa>

<ajektifa>

senang

Langkah 5

<subjek> <predikat> <kalimat>

<frase nomina>

<nomina>

anak

<demonstrativa>

itu

<frase ajektifa>

<ajektifa>

senang

<verba>

diajar

Gambar 2.1 Cara kerja top-down parsing [9]

Langkah-langkah pada proses parsing ini dilakukan dengan menelusuri setiap cabang yang akan mengarah ke terminal. Pada proses parsing ini terdapat metode backtracking. Apabila tidak menemukan terminal, cabang sebelumnya melakukan penelusuran dengan mengganti cabang yang dicari. Sebagai contoh pada penelusuran langkah ke-4 sebelum mencapai tag <demonstrativa> dilakukan penelusuran tag <nomina>, <verba>, <ajektiva>, <adverbia>, dan <numeralia>. Penelusuran tersebut disesuaikan dengan penyusunan frase nomina yang terdapat pada sub bab 2.1.1.1.

2.3.4.2 Bottom-Up Parsing

Teknik ini bekerja secara terbalik dibandingkan dengan top-down parsing. Pada teknik ini proses parsing dilakukan mulai dari terminal-terminal yang kemudian dirangkaikan menjadi sebuah kalimat atau hingga menuju root. Metode parsing ini digunakan oleh algoritma CYK.


(33)

Langkah 1 <nomina> anak Langkah 2 <nomina> anak <demonstrativa> itu Langkah 3 <nomina> anak <demonstrativa> itu <ajektifa> senang Langkah 4 <nomina> anak <demonstrativa> itu <ajektifa> senang <verba> diajar Langkah 5 <nomina> anak <demonstrativa> itu <ajektifa> senang <verba> diajar <frase ajektifa> Langkah 6 <nomina> anak <demonstrativa> itu <ajektifa> senang <verba> diajar <frase ajektifa> <frase nomina> Langkah 7 <nomina> anak <demonstrativa> itu <ajektifa> senang <verba> diajar <frase ajektifa> <frase nomina> <subjek> <predikat> Langkah 8 <nomina> anak <demonstrativa> itu <ajektifa> senang <verba> diajar <frase ajektifa> <frase nomina> <subjek> <predikat> <kalimat>

Gambar 2.2 Cara kerja bottom-up parsing [9]

Langkah-langkah pada proses parsing bottom-up dilakukan dengan mengenali terlebih dahulu cabang dari terminal-terminal yang ditelusuri. Pada

contoh gambar 2.2 kata “anak” merupakan terminal dari cabang <nomina>, kata

“itu” merupakan terminal dari cabang <demonstrativa>, kata “senang” merupakan

terminal dari cabang <ajektiva>, dan kata “diajar” merupakan terminal dari cabang <verba>. Pada tahap selanjutnya dilakukan penelusuran root dari cabang <ajektiva> dan <verba>. Jika ada, penelusuran berlanjut ke cabang yang ada disebelah kirinya. Penelusuran dilakukan hingga dapat mencapai root <kalimat>.

2.4 Algoritma Cocke-Younger-Kasami (CYK)

Algoritma CYK merupakan algoritma parsing dan keanggotaan


(34)

algoritma ini adalah tata bahasa harus berada dalam bentuk CNF. Tujuan dari algoritma ini adalah untuk menunjukkan apakah suatu string dapat diterima dari suatu tata bahasa.

Proses parsing untai dengan algoritma CYK menggunakan struktur data sebuah array dua dimensi dengan jumlah baris dan kolom n x n. Nilai n ditentukan dari jumlah kata dalam suatu kalimat. Proses parsing dari algoritma ini memanfaatkan hasil parsing sebelumnya untuk menentukan apakah proses yang sedang berlangsung dapat diterima atau tidak.

Sebagai contoh terdapat suatu aturan produksi 2.16 dengan variabel awal S. S  EF | EC

E  AB F  CD A  a B  b C  c

D  d …(2.16)

String yang akan diperiksa misalnya “abcd”. Langkah pertama yang

dilakukan adalah dengan membuat tabel dua dimensi seperti gambar 2.1.

a b c d

Gambar 2.3 Pembentukan tabel parsing algoritma CYK

Setiap kata yang ada pada suatu string ditempatkan pada masing-masing blok seperti gambar 2.3. Setiap blok yang kosong diisi berdasarkan variabel yang sesuai dengan aturan produksi dari CNF yang sudah dibentuk sebelumnya. Sebagai contoh pada baris pertama dan kolom pertama diisi dengan variabel yang dapat menghasilkan huruf a, yaitu variabel A. Hasilnya dapat dilihat pada gambar 2.4.


(35)

a b c d A

Gambar 2.4 Pengisian tabel dengan variabel A

Blok selanjutnya diisi dengan langkah yang sama, sehingga dapat dilihat baris pertama isiannya seperti gambar 2.5.

a b c d

A B C D

Gambar 2.5 Pengisian tabel baris pertama

Pada baris selanjutnya cara pengisian dilakukan dengan melihat variabel pada dua blok, kemudian dilihat variabel mana yang menghasilkan kedua variabel tersebut. Sebagai contoh baris kedua kolom pertama diisi dengan melihat variabel pada blok pertama dan blok dua, yaitu variabel A dan B yang termasuk ke dalam variabel E, sehingga cara pengisiannya terlihat seperti pada gambar 2.6.

a b c d

E

A B C D

Gambar 2.6 Pengisian tabel dengan variabel B

Blok selanjutnya diisi dengan langkah yang sama sesuai dengan blok yang akan diisi. Apabila pengisian dilakukan pada blok kedua, variabel diambil dari kolom kedua dan ketiga. Untuk lebih jelasnya dapat dilihat pada gambar 2.7.


(36)

a b c d

E - F

A B C D

Gambar 2.7 Pengisian tabel baris kedua

Pengisian pada baris ketiga dan selanjutnya hampir sama seperti baris kedua, namun terdapat perbedaan dari cara pengecekkan yang dilakukan. Pengisian baris ketiga dilakukan dari baris pertama hingga sebelum baris ketiga (n-1). Cara pengecekkan dapat dilihat seperti gambar 2.8 dan 2.9.

a b c d

E - F

S

A B C D

Gambar 2.8 Cara pengecekkan langkah pertama

a b c d

E - F

S

A B C D

Gambar 2.9 Cara pengecekkan langkah kedua

Warna biru menunjukkan blok yang akan diisi, sedangkan warna merah merupakan blok yang dicek variabelnya. Pada kedua gambar diatas dapat dilihat untuk baris ketiga cara pengecekkan dilakukan secara diagonal dan vertikal. Gambar pertama pada saat pengecekkan ditemukan variabel yang menghasilkan variabel E dan C. Cara pengisian untuk blok selanjutnya sama seperti gambar 2.9. Hasil akhir dari pengecekan string diatas dapat dilihat pada gambar 2.10.


(37)

a b c d

E - F

S

-S

A B C D

Gambar 2.10 Hasil parsing string dengan algoritma CYK

Dapat dilihat dari gambar diatas string“a b c d” termasuk ke dalam aturan

produksi yang sudah dibuat, artinya string tersebut dapat dikatakan sebagai kalimat dalam contoh ini. Jika baris dan kolom terakhir tidak menghasilkan tanda “-”, string

tersebut belum dapat dikenali oleh algoritma CYK. 2.5 Algoritma Levenshtein

Algoritma Levenshtein merupakan algoritma pencarian jumlah perbedaan

string yang ditemukan oleh Vladimir Levenshtein, seorang ilmuwan Rusia, pada

tahun 1965. Algoritma ini digunakan secara luas dalam berbagai bidang, misalnya mesin pencari, pengecek ejaan (spell checking), pengenalan pembicaraan (speech

recognition), pengucapan dialek, analisis DNA, dan lain-lain.

Dua buah string dibandingkan untuk mengetahui nilai edit distance-nya.

Edit distance adalah suatu pengukuran (metrik) yang dihasilkan melalui

perhitungan jumlah perbedaan yang terdapat pada dua string. Edit distance antara

dua string didefinisikan sebagai jumlah minimum perubahan yang diperlukan untuk

mengganti suatu string dengan string lain, dengan operasi penambahan (insert), operasi penggantian (substitute), operasi penghapusan (delete).

Algoritma ini menggunakan matriks dua dimensi dalam membandingkan kedua string. Algoritma ini berjalan mulai dari pojok kiri atas hingga ke pojok kanan bawah. Seluruh baris pertama diisi dengan nilai berurut mulai dari 0 hingga n begitu juga dengan kolom pertama. Cara pengisiannya dapat dilihat pada gambar 2.9.


(38)

0 1 2 3

1 2 3

T O P

T O P

4 I

Gambar 2.11 Inisialisasi awal tabel levenshtein

Pada gambar diatas kata “top” akan dilakukan perbandingan dengan kata

“topi” untuk melihat nilai edit distance-nya. Pengisian dilakukan mulai dari blok [1,1] dengan membandingkan karakter yang ada pada blok [0,1] dan blok [1,0]. Apabila karakter yang dibandingkan sama, turunkan nilai yang ada pada blok [0,0] yaitu angka 0. Nilai edit distance-nya dapat dilihat pada gambar 2.12.

0 1 2 3

1 0

2 3

T O P

T O P

4 I

Gambar 2.12 Penurunan angka 0 ke baris 1 kolom 1

Pengisian blok berikutnya dilakukan dengan membandingkan karakter dengan baris yang sama. Apabila karakter yang dibandingkan tidak sama, maka nilai blok [0,2] ditambahkan dengan angka 1. Sama halnya dengan blok[1,1] dan blok [0,1]. Setelah itu lakukan perbandingan nilai dari blok [0,2], [1,1], dan [0,1] untuk mencari nilai minimumnya. Selanjutnya simpan pada blok [1,2]. Hasilnya dapat dilihat pada gambar 2.13.


(39)

0 1 2 3 1 0 2 1 3 T O P

T O P

4 I

+1 +1

+1

Gambar 2.13 Pengisian blok [1,2]

Langkah selanjutnya isi semua blok sampai akhir dengan langkah yang sama. Hasil akhir dari pengisian tabel Levenshtein diatas dapat dilihat pada gambar 2.14. 0 1 2 3 1 0 1 2 2 1 0 1 3 2 1 0 T O P

T O P

4 3 2 1

I

Gambar 2.14 Hasil akhir pengisian tabel Levenshtein

Nilai edit distance dapat dilihat dari baris dan kolom terakhir, yaitu angka 1. Nilai inilah yang akan mengetahui seberapa banyak perbedaan karakter antara dua string.

2.6 Pemrograman Berorientasi Objek

Metodologi berorientasi objek adalah suatu strategi pembangunan perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan objek yang berisi data dan operasi yang diberlakukan terhadapnya. Metodologi berorientasi objek merupakan suatu cara bagaimana sistem perangkat lunak dibangun melalui pendekatan objek secara sistematis. Metode berorientasi objek didasarkan pada penerapan prinsip-prinsip pengelolaan kompleksitas.

Keuntungan menggunakan metodologi berorientasi objek adalah sebagai berikut:


(40)

1. Meningkatkan produktivitas

Kelas dan objek yang ditemukan dalam suatu masalah masih dapat dipakai ulang untuk masalah lainnya yang melibatkan objek tersebut (reusable). 2. Kecepatan pengembangan

Sistem yang dibangun dengan baik dan benar pada saat analisis dan perancangan akan menyebabkan berkurangnya kesalahan pada saat pengkodean.

3. Kemudahan pemeliharaan

Pola-pola yang cenderung tetap dan stabil dapat dipisahkan dan pola-pola yang mungkin sering berubah-ubah.

4. Adanya konsistensi

Sifat pewarisan dan penggunaan notasi yang sama pada saat analisis, perancangan, maupun pengkodean.

5. Meningkatkan kualitas perangkat lunak

Pendekatan pengembangan lebih dekat dengan dunia nyata dan adanya konsistensi pada saat pengembangannya, perangkat lunak yang dihasilkan akan mampu memenuhi kebutuhan pemakai serta mempunyai sedikit kesalahan. Beberapa konsep dasar dari pemrograman berorientasi objek adalah: 1. Kelas (Class)

Kelas adalah kumpulan objek-objek dengan karakteristik yang sama. Sebuah kelas akan mempunyai sifat (attribut), tingkah laku (operasi/metode), hubungan (relationship) dan arti. Secara teknis, kelas adalah sebuah struktur tertentu dalam pembuatan perangkat lunak. Kelas merupakan bentuk struktur pada kode program yang menggunakan metodologi berorientasi objek. Kelas secara fisik adalah berkas atau file yang berisi kode program, dimana kode program merupakan semua hal yang terkait dengan nama kelas.

2. Objek (Object)

Objek adalah abstrak dan sesuatu yang mewakili dunia nyata seperti benda, manusia, satuan organisasi, tempat, kejadian, struktur, status, atau hal-hal lain yang bersifat abstrak. Objek merupakan suatu entitas yang mampu menyimpan informasi dan mempunyai operasi yang dapat diterapkan atau dapat


(41)

berpengaruh pada status objeknya. Secara teknis, sebuah kelas saat program dieksekusi maka akan dibuat sebuah objek. Objek dilihat dari segi teknis adalah elemen pada saat runtime yang akan diciptakan, dimanupulasi, dan dihancurkan saat eksekusi sehingga sebuah objek hanya ada saat sebuah program dieksekusi.

3. Metode (Method)

Metode pada sebuah kelas hampir sama dengan fungsi atau prosedur pada metodologi struktural. Sebuah kelas boleh memiliki lebih dari satu metode. Metode berfungsi untuk memanipulasi objek itu sendiri. Metode merupakan fungsi atau transformasi uang dapat dilakukan terhadap objek atau yang dilakukan objek. Metode dapat berasal dari event, aktivitas atau keadaan, fungsi, atau tingkah laku. Contohnya seperti read, write, move, copy, dan sebagainya.

4. Atribut

Atribut adalah variabel yang dimiliki sebuah kelas. Atribut dapat berupa nilai atau elemen-elemen data yang dimiliki oleh objek dalam kelas objek. Atribut dipunyai secara individual oleh sebuah objek, misalnya seperti berat, jenis, nama, dan sebagainya.

5. Abstrak (Abstract)

Abstrak prinsip untuk merepresentasikan dunia nyata yang kompleks menjadi satu bentuk model yang sederhana dengan mengabaikan aspek-aspek lain yang tidak sesuai dengan permasalahan.

6. Enkapsulasi

Enkapsulasi merupakan pembungkusan atribut data dan layanan (operasi-operasi) yang dimiliki objek untuk menymbunyikan implementasi dan objek sehingga objek lain tidak mengetahui cara kerjanya.

7. Pewarisan

Pewarisan merupakan mekanisme yang memungkinkan satu objek mewarisi sebagian atau seluruh definisi objek lain sebagai bagian dari dirinya.


(42)

8. Antarmuka (Interface)

Interface sangat mirip dengan kelas, tetapi tanpa atribut kelas dan memiliki

metode yang dideklarasikan tanpa isi. Deklarasi metode dari sebuah interface

dapat diimplementasikan oleh kelas lain. Sebuah kelas dapat mengimplementasikan lebih dari satu interface.

2.7 Unified Modelling Language (UML)

UML adalah sebuah tools atau alat yang banyak digunakan di dunia industri untuk mendefinisikan kebutuhan, membuat analisis & design, serta menggambarkan arsitektur dalam pemrograman berorientasi objek.

2.7.1 Use Case Diagram

Use case diagram merupakan pemodelah untuk mengetahui tingkah laku

(behaviour) sistem yang akan dibuat. Use case mendeskripsikan sebuah interaksi

antara satu atau lebih aktor dengan sistem yang akan dibuat. Use case, digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem dan siapa saja yang berhak menggunakan sistem fungsi-fungsi itu.

Syarat penamaan pada use case adalah nama didefinisikan sesingkat dan sejelas mungkin agar dapat dipahami. Ada dua hal dalam membuat sebuah use case, yaitu:

1. Aktor

Aktor merupakan orang, proses, atau sistem lain yang berinteraksi dengan sistem utama yang akan dibuat. Meskipun simbol aktor itu adalah orang, tetapi belum tentu aktor itu adalah orang.

2. Use Case

Use case merupakan fungsionalitas yang disediakan sistem sebagai unit-unit

yang saling bertukar pesan antar unit atau aktor. 2.7.2 Class Diagram

Class diagram atau kelas diagram menggambarkan struktur sistem dari segi

pemdefinisian kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut atribut dan metode. Diagram kelas dibuat agar pembuat


(43)

program atau programmer membuat kelas-kelas sesuai rancangan di dalam diagram kelas agar antara dokumentasi perancangan dan perangkat lunak dapat sinkron.

Susunan struktur kelas yang baik pada diagram kelas sebaiknya memiliki jenis-jenis kelas berikut:

1. Kelas main

Kelas main merupakan kelas yang mempunyai fungsi awal yang dieksekusi ketika sistem dijalankan.

2. Kelas yang menangani tampilan sistem (view)

Kelas ini mendefinisikan dan mengatur tampilan ke pengguna. 3. Kelas yang diambil dari pendefinisian use case (controller)

Kelas ini menangani fungsi-fungsi yang harus ada diambil dari pendefinisisan use case. Kelas ini biasanya disebut dengan kelas proses yang menangani proses bisnis pada perangkat lunak.

4. Kelas yang diambil dari pendefinisian data (model)

Kelas ini digunakan untuk memegang atau membungkus data menjadi sebuah kesatuan yang diambil maupun akan disimpan ke basis data. Semua tabel yang dibuat di basis data dapat dijadikan kelas.

2.7.3 Activity Diagram

Activity diagram atau diagram aktivitas mengambarkan workflow atau

aktivitas dari sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak. Perlu diperhatikan bahwa diagram aktivitas menggambarkan aktivitas sistem bukan apa yang dilakukan aktor, jadi aktivitas yang dapat dilakukan oleh sistem.

Diagram aktivitas juga banyak digunakan untuk mendefinisikan hal-hal berikut:

1. Rancangan proses bisnis dimana setiap urutan aktivitas yang digambarkan merupakan proses bisnis sistem yang didefinisikan

2. Urutan atau pengelompokkan tampilan dari sistem/user interface dimana setiap aktivitas dianggap memiliki sebuah rancangan antarmuka tampilan.

3. Rancangan pengujian dimana setiap aktivitas dianggap memerlukan sebuah pengujian yang perlu didefinisikan kasus ujinya.


(44)

2.7.4 Sequence Diagram

Sequence diagram atau diagram sekuen menggambarkan kelakuan objek

pada use case dengan mendeskripsikan waktu hidup objek dan pesan yang dikirimkan dan diterima antar objek. Untuk menggambarkan diagram sekuen harus diketahui metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu.


(45)

45 3.1 Analisis Sistem

Analisis metode dilakukan dengan tujuan mendapatkan analisis yang sesuai dengan bidang ilmu yang diteliti. Analisis dijelaskan secara detil mulai dari analisis masalah, analisis data masukkan, analisis sintaksis untuk pembentukan aturan produksi, analisis kebutuhan non-fungsional, dan analisis kebutuhan fungsional dari studi kasus yang diteliti.

3.1.1 Analisis Masalah

Berdasarkan hasil penelitian tentang EYD, algoritma CYK dan algoritma Levenshtein, maka masalah yang dihadapi pada penelitian yang membahas tentang algoritma Levenshtein [2] adalah belum diketahui cara memperbaiki pola kalimat yang keliru. Oleh karena itu, pada penelitian ini akan dilakukan perbaikan pola kalimat yang dimulai dari pemeriksaan kata dengan membagi ke dalam kelompok-kelompok kata, pemeriksaan kalimat menggunakan algoritma CYK, sampai perbaikan pola kalimat menggunakan algoritma Levenshtein.

3.1.2 Analisis Data Masukkan

Data masukan untuk simulator ini berupa dokumen dengan ekstensi .doc atau .docx. Setiap kalimat dalam dokumen diperiksa satu persatu dan setiap kata yang ada pada kalimat digolongkan ke dalam kelompok kata. Pengelompokkan kata diambil dari kamus menggunakan POS Tag Indonesia. Pengelompokkan kata dengan POS Tag dapat dilihat pada tabel 3.1.


(46)

Tabel 3.1 Pengelompokkan kata berdasarkan POS Tag Indonesia [6]

No. Tag Deskripsi Contoh

1 CC Konjungsi koordinatif adalah konjungsi yang menghubungkan dua buah konstituen yang kedudukannya sederajat.

dan, tetapi, namun, lalu, sedangkan.

2 CD Numeralia kardinal yaitu numeralia yang

menjadi jawaban atas pertanyaan “berapa?”. dua juta, enam, 900, 0.25, banyak, ratusan.

3 OD Numeralia ordinal menyatakan urutan dan menjadi jawaban atas pertanyaan “yang keberapa?”

kedua, ke-3, pertama

4 DT Artikula bertugas membatasi makna nomina para, sang, si 5 FW Kata yang berasal dari bahasa asing yang

belum diserap ke dalam bahasa Indonesia. Pada dasarnya, kata bahasa asing adalah kata yang tidak terdapat di dalam kamus bahasa Indonesia.

Jika sebuah kata bahasa asing menjadi bagian dari proper noun atau nama, kata bahasa asing tersebut dimasukkan ke dalam kelompok kata NNP.

climate change,

terms and

condition

6 IN Preposisi menghubungkan kata atau frasa dengan konstituen di depan preposisi tersebut sehingga terbentuk frasa preposisional.

dalam, dengan, di, oleh, pada

7 JJ Ajektifa adalah kata yang memberikan keterangan khusus tentang sesuatu yang dinyatakan oleh nomina dalam kalimat.

bersih, marah, lebar, suram, pintar

8 MD Verba modal atau verba bantu boleh, harus, sudah, perlu

9 NEG Kata ingkar tidak, jangan,

belum 10 NN Nomina yaitu kata yang mengacu pada

manusia, binatang, benda, konsep, atau pengertian.

kera, sekarang, bawah

11 NNP Proper Noun adalah nama spesifik dari

seseorang, sesuatu, atau sebuah tempat.

Boediono,

Indonesia, Bank Mandiri, Lord of the Rings


(47)

12 NND Penggolong atau nomina ukuran. Penggolong menempatkan nomina ke dalam sebuah kelompok tertentu dalam jumlah tertentu. Nomina ukuran merujuk pada ukuran, jarakm volume, kecepatan, berat, atau temperatur.

orang, ton, helai, lembar

13 PR Demonstrativa atau pronomina penunjuk ini, itu, disini, disitu

14 PRP Pronomina persona, yaitu pronomina yang dipakai untuk mengacu pada orang atau kata ganti orang tunggal atau jamak.

saya, kami, dia, mereka

15 RB Adverbia atau disebut juga kata keterangan. sangat, hanya, seluruh, cukup 16 RP Partikel yang digunakan untuk menegaskan

kalimat interogatif, imperatif, atau deklaratif.

pun, -lah, -kah 17 SC Konjungsi subordinatif adalah kkonjungsi

yang menghubungkan dua buah konstituen yang kedudukannya tidak sederajat.

sebab, jika, meskipun, supaya

18 SYM Simbol IDR, +, %

19 UH Interjeksi mengungkapkan rasa hati atau perasaan pembicara dan secara sintaksis tidak berhubungan dengan kata-kata lain di dalam kalimat.

oh, aduh, ayo, mari

20 VB Verba atau kata kerja dapat berupa verba transitif, verba intransitif, verba aktif, verba pasif, dan kopula. Jika kata dasar dari verba berimbuhan berupa kata asing, verba tersebut tetap dimasukkan ke dalam kelompok kata VB, misalnya di-accept.

merancang, mengatur, pergi, bekerja,

terbangun

21 WH Pronomina penanya atau disebut juga kata tanya. Pronomina penanya digunakan dalam kalimat interogatif sebagai pemarkah pertanyaan. Klausa tanya yang ada di kalimat deklaratif merupakan klausa subordinatif sehingga pronomina penanya yang menghubungkan kata tanya dengan klausa lain di dalam kalimat deklaratif menjadi konjungsi subordinatif.

siapa, apa, kemana, di mana, berapa

22 X Kata atau bagian yang tidak diketahui atau belum diketahui secara pasti kategorinya.

Statemen


(48)

3.1.3 Analisis Sintaksis untuk Aturan Produksi

Berdasarkan pembahasan tentang sintaksis Bahasa Indonesia dan pengelompokkan kata dengan POS Tag Indonesia, selanjutnya pada bagian ini akan dijelaskan bagaimana membuat aturan produksi dalam bentuk CNF. Sebelumnya, seluruh penamaan kelompok kata harus diubah ke dalam aturan POS Tag agar tidak sulit dalam mengecek aturan produksinya. Perubahannya dapat dilihat pada tabel 3.2.

Tabel 3.2 Tabel penamaan kelompok kata ke dalam POS Tag

Nama Kelompok Kata Diubah Menjadi

Noun / Kata Benda (N) NN, NNP, NND, PRP, atau WH

Adjective / Kata Sifat (A) JJ

Verb / Kata Kerja (V) VB

Adverb / Kata Keterangan (Adv) RB

Numeralia (Num) OD dan CD

Preposisi (P) IN

Demonstrative (Dem) PR

3.1.3.1 Aturan Produksi untuk Frase Nomina (FN)

Pada pembahasan tentang sintaksis Bahasa Indonesia untuk frase nomina (FN) dapat diketahui bahwa susunan kelompok kata yang dapat dibentuk adalah N + N, N + V, N + A, N + Adv, Adv + N, N + Num, Num + N, N + Dem. Bentuk aturan produksinya digambarkan dalam statechart dan dapat dilihat pada gambar 3.1.


(49)

NN

NN

VB

JJ

RB

DEM NUM

Gambar 3.1 Statechart untuk aturan produksi frase nomina

Aturan penamaan kelompok kata disesuaikan dengan tag dari POS Tag Indonesia (berdasarkan tabel 3.2) agar tidak perlu lagi ada perubahan pada saat pengecekkan kelompok kata. Pemberian tag untuk nomina pada gambar 3.1 digeneralisasi menjadi NN. Tag NN bisa disebut sebagai NND, NNP, NND, PRP, atau WH.

3.1.3.2 Aturan Produksi untuk Frase Verba (FV)

Susunan kelompok kata yang dapat dibentuk dari frase verba adalah V + Adv, Adv + V, V + N, V + A. Aturan produksinya dapat dilihat pada gambar 3.2.

VB

RB

NN

JJ


(50)

3.1.3.3 Aturan Produksi untuk Frase Ajektifa (FA)

Susunan kelompok kata yang dapat dibentuk dari frase ajektiva adalah A + N, A + A, A + V, Adv + A, A + Adv. Aturan produksinya dapat dilihat pada gambar 3.3.

JJ

NN

JJ

VB

RB

Gambar 3.3 Statechart untuk aturan produksi frase ajektiva 3.1.3.4 Aturan Produksi untuk Frase Preposisional (FP)

Susunan untuk frase preposisional hanya P + N saja. Nomina bisa berupa kata atau frase. Apabila variabel P disesuaikan dengan tag yang ada pada POS Tag, hasilnya akan seperti pada gambar 3.4.

IN

NN

NND

NNP

PRP


(51)

3.1.3.5 Aturan Produksi untuk Klausa Verba (KV)

Secara umum aturan produksi untuk klausa verba dapat dilihat pada gambar 3.5.

NN VB

NN

VB

JJ

RB

DEM NUM NN

Gambar 3.5 Statechart untuk aturan produksi klausa verba 3.1.3.6 Aturan Produksi untuk Klausa Nomina (KN)

Penyusunan aturan produksi untuk klausa nomina wajib memiliki fungsi S dan P. Fungsi P diisi dengan kategori nomina. Aturan produksinya dapat dilihat pada gambar 3.6.


(52)

NN

NN

VB

JJ

RB

DEM NUM

NN DEM

Gambar 3.6 Statechart untuk aturan produksi klausa nomina 3.1.3.7 Aturan Produksi untuk Klausa Ajektiva (KA)

Penyusunan aturan produksi untuk klausa ajektiva wajib memiliki fungsi S dan P. Fungsi N diisi dengan kategori nomina dan P diisi dengan kategori ajektiva. Aturan produksinya dapat dilihat pada gambar 3.7.

JJ

JJ

NN

RB VB

NN DEM RB


(53)

3.1.3.8 Aturan Produksi untuk Klausa Preposisional

Penyusunan aturan produksi untuk klausa preposisional wajib memiliki fungsi S dan P. Fungsi P diisi oleh frase preposisional. Aturan produksinya dapat dilihat pada gambar 3.8.

IN

NN

NND

NNP

PRP NN

Gambar 3.8 Statechart untuk aturan produksi klausa preposisional 3.1.3.9 Aturan Produksi untuk Klausa Numeral

Penyusunan aturan produksi untuk klausa nomina wajib memiliki fungsi S dan P. Fungsi P diisi oleh frase numeral. Aturan produksinya dapat dilihat pada gambar 3.9.

NUM

NN DEM

Gambar 3.9 Statechart untuk aturan produksi klausa numeral 3.1.3.10 Aturan Produksi untuk Kalimat Sederhana

Secara umum gambaran aturan produksi dari kalimat sederhana sama seperti klausa. Kalimat sederhana dapat terbentuk dari klausa nomina, klausa verba, klausa ajektiva, klausa preposisional, atau klausa numeral.


(54)

3.1.3.11 Aturan Produksi untuk Kalimat Luas

Secara umum gambaran aturan produksi dari kalimat luas dalam hal ini adalah gabungan dari kedua klausa dengan menggunakan kata sambung antar klausa.

NN VB

NN

VB

JJ

RB

DEM NUM

NN SC VB NN

NN

VB

JJ

RB

DEM NUM NN

DEM DEM

IN IN

Gambar 3.10 Statechart untuk aturan produksi kalimat luas 3.1.3.12 Aturan Produksi yang Terbentuk

Hasil aturan produksi yang terbentuk dari statechart yang sudah digambarkan dapat dilihat pada lampiran A.

3.1.4 Analisis Algoritma CYK dan Levenshtein pada Perbaikan Kalimat Pada tahap ini dilakukan langkah-langkah analisis mengenai cara agar sebuah kalimat dapat dilakukan perbaikan pola kalimat berdasarkan analisis aturan produksi yang telah dibuat sebelumnya. Alur dari proses ini dapat dilihat pada gambar 3.1.


(55)

Start Dokumen Abstrak Skripsi Proses pemecahan paragraf menjadi kalimat Kumpulan Kalimat Proses pemecahan kalimat menjadi kata Kumpulan Kata Proses pengelompokkan jenis kata berdasarkan kamus

dari POS Tag

TAG Kata Apakah terdapat TAG X? Proses pengecekan TAG Proses perbaikan kata menggunakan algoritma Levenshtein Ya Kata yang sudah diperbaiki Pembentukan TAG kata menjadi pola kalimat Tidak Pola Kalimat Apakah parsing berhasil? Perbaikan pola kalimat dengan algoritma Levenshtein Tidak End Pemeriksaan pola kalimat menggunakan algoritma CYK Saran perbaikan Pola Kalimat Hasil rekomendasi pola kalimat Apakah masih ada pola? Ya Tidak Ya Proses pemilihan kata Kata yang dipilih Menampilkan seluruh pola kalimat


(56)

3.1.4.1 Proses Pemecahan Paragraf

Pada tahap awal dokumen abstrak yang akan diberi rekomendasi perbaikan akan dipecah paragrafnya menjadi kalimat kemudian kalimat menjadi kata. Proses pemecahan paragraf dibagi menjadi 2 tahap, yaitu:

1. Paragraf menjadi Kalimat

Pada tahap ini akan diketahui ada berapa kalimat dalam satu paragraf abstrak yang diuji. Cara memecah paragraf menjadi kalimat dapat menggunakan regex. Tanda yang dilihat antar kalimat adalah titik. Titik menjadi penanda akhir kalimat namun tidak semua titik merupakan penanda akhir sebuah kalimat. Pola yang dibentuk dari regex adalah [karakter][tanda_titik][spasi].

Tahap awal pengecekan dilakukan dengan menelusuri karakter demi karakter yang ada pada paragraf abstrak. Sebagai contoh paragraf yang akan diperiksa dapat dilihat pada tabel 3.3.

Tabel 3.3 Paragraf pada abstrak

Kualitas barng adalah merupakan hal yang terpenting dalam sebuah perdagangan. Sitem otomatis yang dibuat untuk menjaga kualitas barang yaitu berbasis embedded system mikrokontroler. Karena pengantar barang tidak perlu repot untuk turun dan menutp atap mobil truk ktika hujan turun karena dengan embedded system alat akan bekerja secara otomatis menutup atap mobil sesuai dengan kondisi cuaca. Data sensor suhu, sensor cahasya dan sensor air akan diolah dengan bantuan bahasa tingkat tinggi arduino pada mikrokontroler demi mendapatkan suatu tindakan yang tepat dan cepat.

Pada saat penelusuran setiap karakter diperiksa dengan pola regex. Apabila pola tersebut sama dengan pola regex, string tersebut merupakan penanda dari akhir kalimat. Pecahan kalimat yang terbentuk dari pemisahan paragraf dapat dilihat pada tabel 3.4.


(57)

Tabel 3.4 Pecahan kalimat yang terbentuk

No. Kalimat

1 Kualitas barng adalah merupakan hal yang terpenting dalam sebuah perdagangan.

2 Sitem otomatis yang dibuat untuk menjaga kualitas barang yaitu berbasis embedded system mikrokontroler.

3 Karena pengantar barang tidak perlu repot untuk turun dan menutp atap mobil truk ktika hujan turun karena dengan embedded system alat akan bekerja secara otomatis menutup atap mobil sesuai dengan kondisi cuaca.

4 Data sensor suhu, sensor cahasya dan sensor air akan diolah dengan bantuan bahasa tingkat tinggi arduino pada mikrokontroler demi mendapatkan suatu tindakan yang tepat dan cepat.

2. Kalimat menjadi Kata

Pada tahap ini, kalimat-kalimat yang sudah terbentuk akan dipisahkan berdasarkan spasi. Tanda titik yang ikut dalam pemisahan kalimat akan dibuang untuk menghindari kesalahan pemeriksaan saat melakukan pengelompokkan kata.

3.1.4.2 Pengelompokkan Kata

Pada tahap ini setiap kata dikelompokkan sesuai dengan kamus yang diambil berdasarkan aturan dari POS Tag. Tanda titik pada akhir kalimat harus disertakan juga untuk proses pembentukan pola kalimat. Pengelompokkan kata yang terbentuk dapat dilihat pada tabel 3.5.

Tabel 3.5 Pengelompokkan kata

Kalimat ke Kata Tag

Kalimat ke-1

Kualitas NN

barng X

adalah VB

merupakan VB

hal NN

yang SC

terpenting VB

dalam IN


(58)

perdagangan NN

. Z

Kalimat ke-2

Sitem X

otomatis NN

yang SC

dibuat VB

untuk IN

menjaga VB

kualitas NN

barang NN

yaitu CC

berbasis VB

embedded NNP

system NNP

mikrokontroler NNP

. Z

Kalimat ke-3

Karena SC

pengantar NN

barang NN

tidak NEG

perlu RB

repot JJ

untuk IN

turun VB

dan CC

menutp X

atap NN

mobil NN

truk NN

ktika X

hujan NN

turun VB

karena SC

dengan SC


(59)

system NNP

alat NN

akan RB

bekerja VB

otomatis NN

menutup VB

atap NN

mobil NN

sesuai JJ

dengan SC

kondisi NN

cuaca NN

. Z

Kalimat ke-4

Data NN

sensor NN

suhu NN

sensor NN

cahasya X

dan CC

sensor NN

air NN

akan RB

diolah VB

dengan SC

bantuan NN

bahasa NN

tingkat NN

tinggi JJ

arduino NNP

pada IN

mikrokontroler NNP

untuk SC

mendapatkan VB

suatu CD


(1)

107

DAFTAR PUSTAKA

[1] M. Bahari Ilmy, N. Rahmi and R. Bu'ulolo, Penerapan Algoritma Levenshtein Distance untuk Mengoreksi Kesalahan Pengejaan pada Editor Teks, p. 1, 2006.

[2] N. Made muni Adriyani, I. Wayan santiyasa and A. Muliantara, Implementasi Algoritma Levenshtein Distance dan Metode Empiris untuk Menampilkan Saran Perbaikan Kesalahan Pengetikan Dokumen Berbahasa Indonesia, pp. 1-7.

[3] B. M. D. Adiwidya, "Algoritma Levenshtein dalam Pendekatan Approximate String Matching," p. 1, 2009.

[4] I. Luthfi, "Aplikasi Program Dinamis dalam Algoritma Cocke-Younger-Kasami (CYK)," p. 1, 2007.

[5] A. Chaer, Sintaksis Bahasa Indonesia (Pendekatan Proses), Jakarta: Rineka Cipta, 2009.

[6] A. Dinakaramani, F. Rashel, A. Luthfi and R. Manurung, "POS Tag Indonesia," 20 October 2014. [Online]. Available: http://bahasa.cs.ui.ac.id/postag/corpus. [Accessed 20 March 2015].

[7] F. Rashel, A. Luthfi, A. Dinakaramani and R. Manurung, "POS Tag Indonesia (Part of Speech khusus Bahasa Indonesia)," 20 October 2014. [Online]. Available: http://bahasa.cs.ui.ac.id/postag/tagger. [Accessed 2 May 2015]. [8] F. Utdirartatmo, Teori Bahasa dan Automata, Yogyakarta: Graha Ilmu, 2005. [9] I. B. Hariyanto MT., Teori Bahasa, Otomata, dan Komputasi serta Terapannya,


(2)

iii

KATA PENGANTAR

Alhamdulillah, segala puji dan syukur penulis panjatkan kehadirat Allah SWT. Berkat rahmat dan karunia-Nya penulis dapat menyelesaikan skripsi ini. Shalawat beserta salam semoga senantiasa terlimpah curahkan kepada Nabi Muhammad SAW., kepada keluarganya, para sahabatnya, hingga kepada umatnya hingga akhir zaman.

Penulisan skripsi ini diajukan untuk memenuhi salah satu syarat memperoleh gelar sarjana pada program studi Teknik Informatika, fakultas Teknik dan Ilmu Komputer, Universitas Komputer Indonesia. Dalam penyusunan dan penulisan skripsi ini tidak terlepas dari bantuan, bimbingan, serta dukungan dari berbagai pihak. Oleh karena itu, penulis ingin menyampaikan rasa terima kasih yang sebesar-besarnya kepada:

1. Allah SWT yang telah memberikan rahmat, karunia, dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi ini dengan baik.

2. Ayah dan Ibu atas jasa-jasanya, kesabaran, doa, dan tidak pernah lelah dalam mendidik dan memberi cinta dan kasih sayangnya kepada penulis. 3. Prof. Dr. Cece Sobarna yang telah membantu dalam mempelajari tata

Bahasa Indonesia.

4. Bapak Alif Finandhita, S.Kom. selaku dosen wali yang telah memberikan nasehat, semangat, dan dukungan terhadap pembuatan skripsi ini.

5. Ibu Ednawati Rainarli, S.Si., M.Si. selaku pembimbing yang telah banyak memberikan masukkan dan nasehat dalam pembuatan skripsi ini.

6. Ibu Utami Dewi W., S.Kom., M.Kom. selaku ketua penguji yang telah memberikan masukkan terhadap skripsi yang penulis buat.

7. Ibu Dian Dharmayanti, S.T., M.Kom. selaku penguji yang telah memberikan masukkan terhadap skripsi yang penulis buat.

8. Rekan-rekan kantor yang telah memberikan doa serta dukungannya selama penulis menyelesaikan skripsi sehingga penulisan skripsi ini berjalan lancar.


(3)

iv

9. Rudi Yusuf sebagai partner penulis yang telah ikut membantu memberikan ide dalam penyusunan skripsi ini.

10. Sahabat-sahabat dan teman-teman atas kebersamaan dan bantuannya yang sangat berarti bagi penulis.

11. Semua pihak yang telah banyak membantu penulis dalam menyelesaikan skripsi ini.

Akhir kata penulis hanya berharap semoga skripsi ini dapat bermanfaat bagi penulis khususnya dan bagi para pembaca pada umumnya.

Bandung, Agustus 2015 Penulis


(4)

LEMBAR PENGESAHAN

IMPLENffi NTASI

ALGORITMA

COCKE.YOUI{GER-KASAMI

DAN LEVENSHTEIN

TI1YTUK

MEREKOMENDASI

PERBAIKAN STRUKTUR

KALIMAT

DAN

KESALAIIAN

PENGETIKKAN BAHASA INDONESL{

MOCHAMAD

FARAS

WAHYUDIPRAJA

NIM.

10111945

Telah disetujui dan disahkan di Bandung sebagai Tugas Skripsi padatanggal'

I9 Aeustus 2015

Menyetujui, Pembimbing

Ednawati Rainarli. S.Si.. M.Si.

NW.41277006125

Dekan Fakultas

Teknik dan I[mu Komputer

Ketua Program Studi

l?-c(oMP(/IF\

"+ffipffi'ru.\-f

'uffil7-l*iilH*,

?

'i


(5)

SURAT KETERANGAN

PERSEruJUAN

PUBUKASI

Bahwa yang bertandatangan di bawah, Menyetujui:

"Untuk

memberikan kepada Universitas Komputer lndonesia

Hak

Bebas RovalW Noneksklusilatas penelitian ini dan bersedia untuk di-online-kan sesuai dengan ketentuan

yang berlaku untuk kepentingan riset dan pendidikan".

Bandung, 19 Agustus 2015

Penulis, Mengetahui,

Pembimbing

Mochamad FaErs Wahvudipraia

NlM.1011.1945 NtP.4L277046125


(6)

SURAT

PERNYATAAI\

TIDAK PLAGIAT

Bandung, 19 Agustus 2015

Saya yang bertanda tangandibawah ini

Nama

NIM

Mochamad Faras Wahyudipraj a

101 1 1945

Judul Skripsi : IMPLEMENTASI ALGORITMA

COCKE-YOUNGER-KASAMI (CYK) DAN LEVENSTilEIN UNTUK

MEREKOMENDASIKAN PERBAIKAN STRUKTT]R KALIMAT DAN KESALAHAN PENGETIKKAN BAHASA

INDONESIA

Menyatakan bahwa saya tidak melakukan tindakan meniru, menyalin atau menjiplak skripsi atau karya ilmiah yang telah ada. Apabila saya terbukti melakukan tindakan tersebut, maka saya bersedia untuk menerima sanksi yang

diberikan sesuai dengan ketentuan yang ditetapkan dan berlaku di Program Studi

Teknik Informatika Universitas Komputer Indonesia.

Mochamad Faras Wahyudipraj a

NIM. 10111945