Showing posts with label Bahasa Indonesia. Show all posts
Showing posts with label Bahasa Indonesia. Show all posts

Friday, 10 May 2013

Translator untuk Melestarikan Bahasa Daerah

Saat ini penggunaan bahasa daerah di masyarakat sudah mulai berkurang dan semakin berubah akibat kemajuan zaman terutama perkembangan teknologi. Semakin lama penutur bahasa daerah semakin sedikit sehingga dikhawatirkan punahnya bahasa daerah.
Diperkirakan hanya separuh dari seluruh bahasa yang dituturkan oleh manusia dunia sekarang ini yang masih akan eksis pada tahun 2100 nanti.
National geographic bahkan merinci lebih jelas bahwa satu bahasa  punah setiap 14 hari dan sebelum berganti abad dunia akan kehilangan separuh dari sekitar 7.000 bahasa  ibu yang masih ada di bumi saat ini. UNESCO yang memiliki kekhawatiran sama juga memperkirakan sekitar 3000 bahasa akan punah di akhir abad ini.
Menurut Summer Institute of Linguistic yang melakukan penelitian pada tahun 2006, jumlah bahasa daerah di Indonesia mencapai 742 ragam yang menempatkan Indonesia pada urutan ke-2 sedunia sebagai laboratorium keanekaragaman bahasa setelah Papua Nugini yang memiliki 867 ragam bahasa
Berbagai cara dilakukan untuk mencegah kepunahan bahasa daerah, dari mulai memasukkannya ke dalam kurikulum sekolah, mengadakan seminar-seminar bahasa daerah, membuat dokumen-dokumen dalam bahasa daerah dan lain-lain.
Salah satu cara yang belum banyak ditempuh adalah dengan membangun mesin penerjemah. Meskipun sudah ada, tapi hanya sebatas bahasa tertentu saja, perlu dibangun sebuah sistem penerjemah yang mampu mengakomodir semua bahasa daerah di Indonesia.

Secara garis besar, ada dua pendekatan sistem mesin penerjemah, yaitu berbasis aturan (rule) dan statistik. Salah satu kelebihan mesin penerjemah berbasis aturan adalah kecepatan proses nya, sayangnya untuk setiap bahasa selalu memiliki aturan yang berbeda sehingga memerlukan pengetahuan tentang bahasa tersebut.
Kelebihan utama dari mesin penerjemah berbasis statistik adalah bersifat lebih umum sehingga untuk membangunnya tidak diperlukan pengetahuan bahasa, cukup dengan bermodalkan korpus paralel antara dua bahasa yang akan diterjemahkan. Kekurangannya adalah dalam segi kecepatan proses, yang salah satu cara mengatasinya dalah dengan menggunakan mesin berkecepatan tinggi. Cara lain untuk mengatasi kelemahan tersebut adalah dengan menggabungkan kedua pendekatan tersebut.

Prototype penggabungan aturan dan statistik mesin penerjemah untuk mereduksi kelemahan masing-masing pendekatan sedang kami bangun dengan memilih salah satu bahasa daerah yaitu bahasa Melayu Pontianak.

Translator Nusantara
Translator bahasa Indonesia ke bahasa Melayu Pontianak
Translator bahasa daerah (Melayu Pontianak, Melayu Sambas, Sunda, Jawa)
Penerjemah dokumen : detik.com dalam bahasa Melayu Pontianak
detik.com dalam bahasa Melayu Pontianak

 

Friday, 19 April 2013

Kumpulan Korpus Bahasa Indonesia

Untuk yang memerlukan monokorpus Bahasa Indonesia, silahkan diunduh disini :

Wikipedia
1. Wiki1 = Sumber : wikipedia indonesia
2. Wiki2 = Sumber : wikipedia indonesia
3. Wiki3 = Sumber : wikipedia indonesia
4. Wiki4 = Sumber : wikipedia indonesia
5. Wiki5 = Sumber : wikipedia indonesia
6. Wiki6 = Sumber : wikipedia indonesia
7. Wiki7 = Sumber : wikipedia indonesia

Berita
1. Berita1 = Sumber : detik
2. Berita2 = Sumber : detik
3. Berita3 = Sumber : detik

Bahan mentah korpus paralel :
BBC dwi bahasa (English-Indonesian) = Sumber : BBC
Berita dwi bahasa (English) = Sumber : Berita Jakarta
Berita dwi bahasa (Indonesian) = Sumber : Berita Jakarta

Semua korpus di atas masih mentah, belum di-"cleaning", hasil crawling dari berbagai sumber di internet.

herry_sujaini@yahoo.com

Wednesday, 2 May 2012

Part of Speech Bahasa Indonesia


Berbagai set PoS bahasa Indonesia telah digunakan dalam penelitian-penelitian bidang pemrosesan bahasa alami (PBA), diantaranya lewat PAN Localization Project, khusus untuk bahasa Indonesia telah dikembangkan PoS khusus untuk terjemahan ke bahasa Inggris pada tahun 2009 (Adriani, 2009). PoS tersebut dibangun berdasarkan Penn Treebank PoS tag sets  terdiri dari 29 PoS tags. PoS utama Bahasa Indonesia adalah kata kerja (verb), kata sifat (adjective), kata keterangan (adverb), kata benda (noun), and kata tugas (function words), berdasarkan 5 (lima) PoS utama tersebut dan observasi data, Pisceldo dkk. (2009) mendefinisikan 37 tag untuk Bahasa Indonesia. Wicaksono dkk. (2010) dalam penelitiannya menggunakan 35 tag hasil dari modifikasi tagset yang dihasilkan oleh Adriani, (2009) dan Pisceldo dkk. (2009). Terakhir, Larasati dkk. (2011) menggunakan hanya 19 tag dalam penelitiannya.

Detail set PoS yang digunakan lebih detail dapat dilihat di :
Adriani, Mirna (2009), “Developing Postag for Bahasa Indonesia”, Diakses pada 1 April 2012 dari http://www.panl10n.net/Presentations/Laos/ RegionalConference/CorpusCollection/Tagset_Tagging_for_Bahasa_Idonesia.pdf
Larasati, Septina Dian, KuboĊˆ V, dan Zeman D. (2011). Indonesian Morphology Tool (MorphInd): Towards an Indonesian Corpus. SFCM 2011. Springer CCIS proceedings of the Workshop on Systems and Frameworks for Computational Morphology, Zurich.

Pisceldo, Femphy, Mirna Adriani, dan Ruli Manurung. (2009). Probabilistic Part of Speech Tagging for Bahasa Indonesia, Third International Wokshop on Malay and Indonesian Language Engineering, Singapore.
Wicaksono, Alfan Farizki dan Ayu Purwarianti. (2010). HMM Based Part-of-Speech Tagger for Bahasa Indonesia, The 4th International Malindo Wokshop, Jakarta.

Yang mana yang paling baik ? Saya sendiri sedang dalam proses mencari jawabannya. Semoga membantu.

Saturday, 31 March 2012

Akurasi Terjemahan Google


Seorang teman bertanya kepada saya, “Seberapa akurat hasil terjemahan google untuk Bahasa Inggris ke Indonesia dan sebaliknya?”. Saya coba searching tapi tak menemukan jawaban (mungkin kurang serius mencarinya). Daripada tidak ada jawaban sama sekali, saya mencoba menemukan jawabannya sendiri. Mencoba mencari sejumlah kalimat bahasa Indonesia dan terjemahannya dalam bahasa Inggris, mencoba menerjemahkannya dengan google, kemudian memberikan scoring dengan algoritma standar untuk evaluasi mesin penerjemah.

Bahan yang diperlukan adalah korpus paralel, yaitu sepasang korpus yang berisi kalimat-kalimat dalam suatu bahasa dan terjemahannya. Pada percobaan ini akan menggunakan korpus paralel bahasa Indonesia dan bahasa Inggris. Apa itu korpus? Silahkan tanya ke tante wiki http://en.wikipedia.org/wiki/Text_corpus

Bagaimana cara mendapatkan bahan tersebut? Banyak caranya, dan gratis, diantaranya kita dapat :
  1. Mengunduh korpus paralel yang yang terpublikasi
  2. Mengunduh dokumen-dokumen yang tersedia dalam dua bahasa (Indonesia dan Inggris)
  3. Mengunduh teks film (movie subtitles) yang tersedia dalam dua bahasa (Indonesia dan Inggris)
  4. dll.
Untuk percobaan ini saya menggunakan korpus dari bppt lewat PAN Localization Project. Terdapat 4 (empat) domain korpus yang tersedia, yaitu domain ekonomi, sport, science, dan internasional. Silahkan unduh di http://panl10n.net/english/OutputsIndonesia2.htm

Saya mengambil salah satu korpus paralel tersebut, yaitu korpus domain ekonomi, korpus tersbut terdiri dari dua file, file pertama berisi kalimat-kalimat dalam bahasa Indonesia yang terdiri dari 157619 kata, 6544 kalimat, file kedua berisi kalimat-kalimat terjamahan dari file pertama dalam bahasa Inggris yang terdiri dari 173641 kata, 6544 kalimat.
Setelah siap, terjemahkan 2 file tersebut dengan google translator. File pertama untuk terjemahan Indonesia-Inggris, yang kedua untuk terjemahan Inggris-Indonesia.

Untuk alatnya, saya menggunakan algoritma BLEU (Bilingual Evaluation Understudy). Penjelasannya ada di http://en.wikipedia.org/wiki/BLEU
Jika ingin tahu lebih jauh silahkan baca paper Papineni, K., Roukos, S., Ward, T., and Zhu, W.-J. (2002). BLEU: a method for automatic evaluation of machine translation, In Proceedings of the 40th Annual Meeting of the Association of Computational Linguistics (ACL).
Scriptnya tersedia di http://www.itl.nist.gov/iad/mig//tests/mt/2008/scoring.html

Hasil percobaannya seperti gambar berikut ini (saya gunakan OS Ubuntu):


Hasil terjemahan Indonesia-Inggris :

BLEU = 92.99, 94.4/93.9/93.7/93.5 (BP=0.990, ratio=0.990, hyp_len=163820, ref_len=165398)

Hasil terjemahan Inggris-Indonesia :

BLEU = 92.73, 94.1/93.6/93.3/93.0 (BP=0.992, ratio=0.992, hyp_len=150560, ref_len=151771)


Apa arti nilai-nilai tersebut ?

Contoh hasil yang terakhir :

92.73 = score akhir

94.1 = presisi 1-gram

93.6 = presisi 2-gram

93.3 = presisi 3-gram

93.0 = presisi 4-gram

BP (brevity penalti) = min(1,jumlah kata output/jumlah kata ref)

ratio = jumlah kata output/jumlah kata ref

hyp_len = jumlah kata hasil terjemahan

ref_len = jumlah kata refrensi

Jangan pusing2 dengan nilai2 tersebut, lihat saja score akhirnya.


Salah satu contoh kalimat hasil terjemahan :

Terjemahan Inggris-Indonesia

Minister of Finance Sri Mulyani Indrawati said that a sharp correction of the composite inde x by up to 4 pct in Wedenesday?s trading was a mere temporary effect of regional factors like decline in plantation commodity prices and the financial crisis in Thailand.

Terjemahannya

Menteri Keuangan Sri Mulyani mengatakan koreksi tajam pada Indeks Harga Saham Gabungan IHSG hingga sekitar 4 persen dalam perdagangan Rabu 10/1 hanya efek sesaat dari faktor-faktor regional seperti penurunan harga komoditi perkebunan dan krisis finansial di Thailand.

Terjemahan Google

Menteri Keuangan Sri Mulyani Indrawati mengatakan bahwa koreksi tajam dari x merdeka komposit hingga 4 persen di Wedenesday trading adalah? Efek sementara hanya faktor regional seperti penurunan harga komoditas perkebunan dan krisis keuangan di Thailand.

Sebaliknya untuk terjamahan Indonesia-Inggris, google menghasilkan terjemahan :

Finance Minister Sri Mulyani said the sharp correction in stock index Composite Stock Price Index by about 4 percent in trading Wednesday 10/1 only a momentary effect of regional factors such as the decline in farm commodity prices and financial crisis in Thailand.

Boleh percaya, boleh tidak, setidaknya saya sudah bisa menjawab pertanyaan teman saya:

Akurasi terjemahan Indonesia-Inggris untuk 6544 kalimat dalam satu domain adalah sebesar 92.99% dan untuk Inggris-Indonesia sebesar 92.73%.



Sunday, 16 May 2010

Kelas Kata bahasa Indonesia

Sejak sekolah dasar kita sudah dikenalkan dengan istilah kata benda, kata kerja, kata sifat dan lain-lain, itu adalah sebgian yang dikenal dengan kelas kata. Dalam bahasa Inggris dikenal dengan nama Part of Speech (PoS), sedangkan kumpulan PoS disebut dengan PoS set. Ternyata beberapa literatur Bahasa Indonesia tidak seragam dalam mendefinisikan PoS set ini, ada yang terdiri dari 8 kelas, 9 kelas sampai 13 kelas.
Ernawati Waridah dalam bukunya yang bejudul "EYD dan Seputar Kebahasa-Indonesiaan" membagi kelas kata bahasa Indonesia menjadi 13 yang terdiri dari :

1. Kata Kerja (Verba)
Kata kerja adalah kata yang menyatakan makna perbuatan, pekerjaan, tindakan, proses, atau keadaan. Misalnya makan, minum, menari dan lain-lain.

2. Kata Sifat (Adjektiva)
Kata sifat adalah kata yang menerangkan kata benda. Misalnya pintar, berkurang, pahit, musnah, berkurang dan lain-lain.

3. Kata Benda (Nomina)
Kata benda adalah kata yang mengacu pada manusia, binatang, benda, dan konsep atau pengertian. Misalnya singa, kursi, karyawan, dan lain-lain.

4. Kata Bilangan (Numeralia)
Kata Bilangan adalah kata yang dipakai untuk menghitung banyaknya benda (orang, binatang, atau barang) dan konsep. Misalnya satu, dua, setengah, seluruh, beberapa dan lain-lain.

5. Kata Ganti (Pronomina)
Kata ganti adalah kata yang berfungsi menggantikan orang, benda atau sesuatu yang dibendakan. Misalnya aku, saya, dia, mereka dan lain-lain.

6. Kata Keterangan (Adverbia)
Kata keterangan adalah kata yang memberi keterangan pada kata lainnya. Misalnya alangkah, amat, barangkali, belum, terlampau, diam-diam dan lain-lain.

7. Kata Tunjuk (Demonstrativa)
Kata tunjuk adalah kata yang dipakai untuk menunjuk atau menandai orang atau benda secara khusus. Misalnya ini, itu, berikut, di sini dan lain lain.

8. Kata Tanya (Interogativa)
Kata tanya adalah kata yang digunakan untuk menanyakan sesuatu, berdasarkan jenis dan pemakaiannya. Misalnya apa, apakah, bagaimana, mengapa dan lain-lain.

9. Kata Sandang (Artikula)
Kata sandang adalah kata yang dipakai untuk membatasi kata benda. Misalnya sang, si, kaum, umat dan lain-lain.

10. Kata Depan (Preposisi)
Kata depan adalah kata tugas yang berfungsi sebagai unsur pembentuk frasa preposisional. Misalnya di, ke, dari, untuk, oleh dan lain-lain.


11. Kata Seru (Interjeksi)
Kata seru adalah kata tugas yang mengunggapkan rasa hati manusia. Misalnya aduhai, amboi,asyik, alhamdulillah dan lain-lain.

12. Kata Penghubung (Konjungsi)
Kata penghubung adalah kata tugas yang menghubungkan dua klausa, kalimat, atau paragraf. Misalnya dan, atau, tetapi, sebab, karena dan lain-lain.

13. Kata Ulang (Reduplikasi)
Kata ulang adalah kata yang mrngalami proses pengulangan. Misalnya mobil-mobil, sayur-mayur, warna-warni, tolong-menolong dan lain-lain.

Setiap bahasa memiliki kelas kata yang berbeda-beda, kelas kata untuk bahasa Yunani telah didefinisikan oleh Dionysius Thrax pada tahun 100 SM yang terdiri atas delapan kelas kata, yaitu : noun, verb, pronoun, preposition, adverb, conjunction, particle, dan article.

Saat ini kelas kata untuk berbagai bahasa telah dikembangkan untuk keperluan komputerisasi, salah satunya adalah Penn Treebank oleh LINC Laboratory, Computer and Information Science Department, University of Pennsylvania yang terdiri dari 48 PoS tags.

Lewat PAN Localization Project, khusus untuk bahasa Indonesia telah dikembangkan kelas kata khusus untuk terjemahan ke bahasa Inggris pada tahun 2009 yang terdiri dari 29 PoS tags.

Friday, 4 September 2009

Konversi Bilangan Bahasa Indonesia ke bentuk Numerik

Kita bersama tahu bahwa "Seribu Sembilan Ratus Empat Puluh Lima" dalam Bahasa Indonesia adalah 1945. Penyebutan bilangan ini sudah dipelajari sejak sekolah dasar sehingga anak-anak pun dapat menterjemahkan bilangan dalam Bahasa Indonesia ke bentuk numerik.

Bagaimana dengan komputer? tentu saja kita harus membuat sebuah algoritma untuk keperluan tersebut. Tentu saja beragam algoritma bisa diterapkan, salah satu yang saya gunakan adalah seperti penjelasan berikut :

Kata yang menunjukkan bilangan dalam Bahasa Indonesia cukup sistematis, tapi perlu lebih disistematiskan untuk mempermudah proses perubahan.

Untuk bilangan puluhan dalam Bahasa Indonesia kata pertama menunjukkan bilangan puluhan dan kata terakhir menunjukkan bilangan satuan, diantara kata tersebut terdapat kata “puluh”. Misalnya dua puluh sembilan, kata pertama adalah dua (2) dan kata terakhir adalah sembilan (9), dan diantara kata-kata tersebut terdapat kata puluh. Jika satuannya sama dengan nol (0) maka kata terakhir dihilangkan.

Aturan di atas berlaku untuk semua bilangan puluhan, kecuali pada bilangan dengan puluhan sama dengan satu. Pada kasus ini, untuk bilangan 10 didefinisikan dengan “sepuluh”, bilangan 11 didefinisikan dengan “sebelas”, sedangkan bilangan 12 sampai 19, kata pertama menunjukkan satuan dan kata kedua dituliskan dengan kata “belas”. Misalnya kata “tiga belas”, kata pertama adalah tiga (3) dan kata keduanya adalah belas (puluhan = 1), jadi bilangan yang dimaksud adalah 13.

Aturan dalam Bahasa Indonesia juga menunjukkan bahwa jika dalam suatu kata bilangan dua huruf pertamanya adalah “se”, maka hal itu berarti “satu”. Misalnya kata “seratus” berarti “satu ratus”, “sejuta” berarti “satu juta” dan lain sebagainya.

Langkah pertama metode pengubahan kalimat yang menunjukkan bilangan dalam Bahasa Indonesia ke dalam bentuk numerik adalah merestruktur kembali kata-kata yang terdapat dalam kalimat tersebut dengan 2 tahap seperti di bawah ini.
  1. Mengubah kata yang mengandung suku kata “se” diawalnya menjadi “satu” ditambah dengan suku-suku kata selanjutnya kecuali kata “sembilan”. Misalnya kata “seratus” menjadi “satu ratus”.
  2. Merestruktur kata “belas” dengan mengubahnya menjadi kata “satu”, kemudian menukar posisi kata “satu” tersebut dengan kata yang berada di depan kata “belas”, selanjutnya diantara dua kata tersebut ditambahkan kata “puluh”. Misalnya kata “dua belas” menjadi “satu puluh dua”.
Jika metode di atas dilakukan, maka kalimat yang menunjukkan bilangan dalam Bahasa Indonesia akan menjadi seperti Tabel berikut :









BilanganBahasa IndonesiaTahap 1Tahap 2
10SepuluhSatu Puluh-
11SebelasSatu BelasSatu Puluh Satu
12Dua Belas-Satu Puluh Dua
19Sembilan Belas-Satu Puluh Sembilan
100SeratusSatu Ratus-
1000SeribuSatu Ribu-
dst...dst...dst...dst...



Setelah kalimat direstruktur, kemudian dilanjutkan pada langkah berikutnya yaitu pengubahan kebentuk numerik.

- Satuan
Untuk mencari bilangan satuan dalam suatu kalimat yang telah direstruktur, cukup dilihat pada kata terakhir. Jika kata terakhir menunjukkan kata bilangan dari “satu” sampai “sembilan”, maka bilangan satuannya adalah bilangan yang ditunjukkan kata tersebut, jika tidak, maka satuannya adalah 0 (nol).
Misalnya kalimat “empat belas ribu dua ratus tiga belas” (14213), setelah direstruktur menjadi “satu puluh empat ribu dua ratus satu puluh tiga”. Kata terakhirnya adalah “tiga”, jadi satuannya adalah 3, sedangkan kalimatnya tinggal menjadi “satu puluh empat ribu dua ratus satu puluh”.

- Puluhan
Kalimat dari hasil yang telah didapatkan dari langkah “satuan” dilihat kata terakhirnya, jika kata tersebut “puluh” maka puluhannya adalah kata didepan kata “puluh” tersebut, jika tidak, maka puluhannya adalah 0 (nol).
Seperti pada contoh kalimat di atas, kata terakhirnya adalah “puluh”, maka puluhannya adalah kata didepan kata “puluh” yaitu “satu”. Jadi puluhannya adalah 1, sedangkan kalimatnya tinggal menjadi “satu puluh empat ribu dua ratus”.

- Ratusan
Kalimat dari hasil yang telah didapatkan dari langkah “puluhan” dilihat kata terakhirnya, jika kata tersebut “ratus” maka ratusannya adalah kata di depan kata “ratus” tersebut, jika tidak, maka ratusannya adalah 0 (nol).
Seperti pada contoh kalimat di atas, kata terakhirnya adalah “ratus”, maka ratusannya adalah kata didepan kata “ratus” yaitu “dua”. Jadi ratusannya adalah 2, sedangkan kalimatnya tinggal menjadi “satu puluh empat ribu”.

- Ribuan
Kalimat dari hasil yang telah didapatkan dari langkah “ratusan” dilihat kata terakhirnya, jika kata tersebut “ribu” maka ribuannya adalah kata di depan kata “ribu” tersebut, jika tidak, maka ribuannya adalah 0 (nol).
Seperti pada contoh kalimat di atas, kata terakhirnya adalah “ribu”, maka ribuannya adalah kata didepan kata “ribu” yaitu “empat”. Jadi ribuannya adalah 4, sedangkan kalimatnya tinggal menjadi “satu puluh ribu”.

Tahap-tahap tersebut di atas dapat dilanjutkan sampai pada batasan yang diperlukan dengan cara yang sama. Hasil akhir dari tahap ini didapatkan dengan menjumlahkan hasil semua tahap yang dilakukan. Seperti contoh di atas, hasil akhirnya adalah :
1 x 104 + 4 x 103 + 2 x 102 + 1 x 101 + 3 x 100 = 14213.