Computer Science

#404: Penjelasan WordNet, Sistem Lexical Database

Post kali ini akan menjelaskan sekilas/pengantar ttg WordNet, sistem lexical database yang menurut saya paling populer dan paling bagus saat ini lho, tapi dalam Bahasa Inggris. Sebenarnya, motivasi utama dari penjelasan ini adalah sebagai sarana untuk menjelaskan kepada orang lain, sebenarnya Tugas Akhir/Skripsi saya itu berhubungan dengan apa sih. Karena, sejujurnya saya kesulitan juga menjelaskan, seperti apa WordNet / Lexical Database itu sih. Dan karena sulitnya menjelaskan itu, saya (kadang-kadang) terpaksa mengerdilkan fungsi WordNet dengan menyebut ‘seperti kamus’. Padahal, lexical database jauh lebih hebat dari kamus biasa. Perlu diingat juga, semua ini berada dalam konteks monolingual (alias bahasa tunggal), jadi sama sekali tidak berhubungan dengan proses translasi/terjemahan.

Daftar Istilah

Daftar Istilah sengaja diletakkan di atas,  supaya setidaknya terbaca dan bermanfaat dalam membaca keterangan lanjutan di bawah ini.

  • Lexical database : database (kumpulan data) yang menyimpan informasi relasi semantik antar synset (satuan dalam WordNet).
  • Relasi semantik : relasi antar makna yang dimiliki oleh kata tertentu. Contoh relasi tersebut misalkan sinonim, antonim, hipernim, hiponim, holonim, meronim, dll.
  • Synset: singkatan dari sinonim set, yaitu satuan utama yang digunakan oleh WordNet. Konsep utama pada WordNet adalah synset, di mana synset merupakan kumpulan dari 1 atau lebih kata yang memiliki makna sama (dan tentunya dapat saling menggantikan dalam konteks tertentu). Harap diingat bahwa satu synset mewakili satu makna (dalam bhs Inggris = sense) yang berbeda. Misalkan, synset XXX beranggotakan apel dengan gloss nama buah yang berwarna merah. Synset YYY juga beranggotakan apel, upacara, dengan gloss upacara kemiliteran. Dari dua contoh synset di atas, kita dapat mengetahui bahwa kata ‘apel’ memiliki dua makna yang berbeda, di mana salah satunya adalah buah, dan lainnya adalah upacara.
  • Gloss: merupakan definisi dan/atau contoh kalimat yang melengkapi keterangan suatu synset.
  • Sinonim : merupakan relasi semantik paling sederhana yang terdapat pada WordNet, bahkan menjadi dasar pembentukan synset. Sinonim adalah relasi di mana kata-kata yang bersinonim merupakan kata yang memiliki makna mirip dan dapat saling menggantikan penggunaan satu dan yg lain DALAM KONTEKS TERTENTU.
  • Antonim: relasi semantik yang menyatakan hubungan lawan kata, paling banyak terdapat dalam kelas kata adjektif (kata sifat)
  • Hipernim/Hiponim: relasi semantik antar dua kata di mana yang satu merupakan bagian yang lebih general (hipernim), sementara yg lain merupakan bagian yang lebih spesifik. Contoh, kata ‘buah’ dan ‘apel’, kata ‘buah’ merupakan hipernim dari ‘apel’ karena makna buah lebih luas dari apel, sementara apel merupakan hiponim dari buah, karena apel merupakan salah satu jenis buah.
  • Holonim/Meronim: relasi semantik antar dua kata di mana yang satu merupakan bagian dari/anggota dari yang lain (meronim), sementara yang lain merupakan bagian keseluruhan (holonim). Contoh, kata ‘ban’,’setir’, dan ‘mobil’. Ban dan setir merupakan bagian dari mobil, maka ban dan setir dapat dikatakan sebagai meronim dari mobil. Mobil merupakan bagian keseluruhan yang memiliki ban dan setir, maka mobil dapat dikatakan sebagai holonim dari ban dan setir.
  • Entailment: relasi semantik yang menyimpan hubungan sebab akibat.
  • Kelas Kata: merupakan kategori semantik dari suatu kata. Kelas kata yang terdapat dalam WordNet adalah Noun (kata benda),Verb (kata kerja), Adjective (kata sifat), Adverb (kata keterangan untuk Verb).
  • Lexicographer : para ahli bahasa

Pengantar Princeton WordNet

WordNet merupakan hasil penelitian dari Princeton University dalam bidang komputasional linguistik, dan merupakan freeware yang dapat didownload secara gratis (versi offline nya) di http://wordnet.princeton.edu/wordnet/download/ atau diakses dengan media web di http://wordnetweb.princeton.edu/perl/webwn. WordNet sudah dikembangkan sejak 1985 dengan bantuan para ahli lexicographer bahasa Inggris dari Princeton, dan dibuat secara manual oleh para ahli tersebut sehingga dapat dikatakan menjanjikan hasil yang sangat akurat dan berkualitas. Untuk ukuran sebuah software dan database, usia WordNet yang mencapai 25 tahun sudah dapat dianggap sangat stabil, dan sampai saat ini menjadi referensi utama dari berbagai sistem lexical database dalam bahasa lain (termasuk dalam Bahasa Indonesia, yang di mana salah satu tugas akhir saya merupakan task untuk mendapatkan synset-synset dalam Bahasa Indonesia). Sampai saat ini, database WordNet terbaru adalah versi 3.0 dan masih terus dikembangkan oleh tim WordNet dari Princeton University. Sepengetahuan saya, Google pun juga memanfaatkan WordNet ini, terutama untuk Google Dictionary.

Relasi Semantik Dalam WordNet

Seperti yang sudah dijelaskan di atas, WordNet menyimpan informasi tentang berbagai relasi semantik yang terjadi antar synset (bukan antar kata). Relasi-relasi tersebut juga sudah dijelaskan satu persatu di atas, yaitu

  • Antonim
  • Hipernim/Hiponim
  • Holonim/Meronim
  • dan relasi pelengkap lainnya, seperti entailment, pertainimy, dll

Semua synset dalam WordNet dilengkapi dengan gloss (definisi dan/atau contoh kalimat penggunaannya), sehingga memudahkan pengguna memahami suatu synset.

Siapa Pengguna WordNet

Pengguna WordNet secara umum dapat dibedakan menjadi dua kelompok, yaitu pengguna awam dan developer. Pengguna awam adalah pengguna yang ingin memanfaatkan WordNet untuk menambah pengetahuannya atau mencari informasi saja, misalkan tentang hipernim/hiponim atau lain-lainnya. Pengguna awam ini dapat menggunakan browser yang disediakan oleh WordNet ataupun versi website. Hanya saja, untuk versi websitenya, informasi yang disediakan hanyalah synset dan gloss saja, tidak mencakup relasi semantik lainnya.

Kelompok lain yang sering memanfaatkan WordNet adalah para peneliti dan developer yang bergerak terutama di bidang computational linguistic dan NLP (Natural Language Processing). Untuk kelompok ini, WordNet menyediakan library dasar (dengan bahasa C) untuk mengakses file databasenya tanpa melalui browser, sehingga memungkinkan untuk digabungkan dengan program/software lain. Setelah itu, mulai muncul banyak API dan database yang dapat mengakses database WordNet ini, di antaranya dalam bahasa Java (JWNL, RitaWN, JAWS), .NET (WordNet.Net), dan beberapa disimpan dalam bentuk relational database MySQL. Info lebih lengkap dapat dilihat di http://wordnet.princeton.edu/wordnet/related-projects/

Program Browser WordNet (versi Offline)

Berikut merupakan tampilan awal dari browser offline WordNet.

Lalu, semisal saya masukkan kata ‘bad’, maka tampilan akan berubah menjadi seperti di bawah ini.

Dari gambar di atas, kita dapat mengetahui, bahwa kata ‘bad’ ternyata memiliki 3 kelas kata sekaligus, yaitu Noun, Adjective, dan Adverb. Setiap synset untuk tiap kelas kata dipisahkan sesuai dengan kelas. Angka yang mengawali suatu synset dalam tanda kurung merupakan penanda jumlah kemunculan sense tersebut dalam suatu corpus (teks berukuran besar yang biasanya digunakan untuk data training dalam bidang NLP) sekaligus penanda sense ordering, di mana sense yang paling atas merupakan sense yang paling sering digunakan (berdasarkan data dari corpus yang digunakan).

Jika kita perhatikan lagi, terdapat 3 tombol di bagian ‘Searches for bad’, yaitu Noun, Adjective, dan Adverb sesuai dengan kelas katanya. Jika button ini ditekan, maka akan menampilkan jenis relasi lain yang dimiliki oleh synset tersebut. Misalkan saja, untuk noun, berikut merupakan contohnya.

Dari gambar di atas, kita dapat mengakses relasi lain nya, seperti antonim, hypernim, hyponim, dan lain-lain.

Untuk relasi hipernim, maka WordNet akan menunjukkan relasi dari suatu benda hingga ke synset yang paling atas (sudah tidak memiliki hipernim lagi), yaitu ‘Entity’. Contohnya dapat dilihat di bawah ini, di mana kata yang dicari hipernimnya adalah ‘Tiger’ atau harimau.

Dari gambar di atas, kita dapat mengetahui bahwa harimau (tiger dengan sense ke 2), merupakan turunan dari synset {big cat, cat}, {feline, felid}, {carnivore} dan seterusnya, sampai kepada {entity} yang merupakan synset paling dasar dari sistem WordNet ini.

Contoh hiponim dari tiger dapat dilihat pada gambar di bawah ini.

Harimau memiliki hiponim anak harimau, harimau Bengal (salah satu jenis harimau), dan harimau betina.

Berikut disertakan pula contoh holonim, dengan kata ‘wheel’ (roda) sebagai kata yang dicari.

dari contoh di atas, dapat dilihat bahwa wheel merupakan PART-OF dari wheeled vehicle / kendaraan bermotor.

Sementara jika kita melihat meronim dari suatu benda (dalam contoh di bawah ini adalah ‘car’ atau mobil), maka contohnya dapat dilihat pada gambar di bawah ini.

dari gambar di atas, kita dapat mengetahui bahwa mobil pada umumnya memiliki/HAS PART seperti accelerator/accelerator pedal, air bag, automobile engine, bumper, car door, dan sebagainya.

Mengakses via API

Selain dengan browser di atas, untuk developer, dapat juga mengakses langsung file lexical database yang disediakan WordNet ataupun menggunakan API yang sudah siap pakai. Dari pengalaman pribadi, saya sudah menggunakan RitaWN, yang memanfaatkan library lain JAWS di dalamnya. Contoh-contoh method yang dapat digunakan pada RitaWN contohnya adalah:

  • getSynset(synset_id) atau getSynset(word, pos)
  • getSynonims(word, pos)
  • getGloss(senseId) atau getGloss(word, pos)

dan masih banyak lagi, yang menurut saya didokumentasikan dengan cukup baik oleh developernya di halaman http://rednoise.org/rita/wordnet/documentation/index.htm

Database WordNet

Database WordNet tersimpan dalam suatu textfile yang dapat kita sebut sebagai lexical database file. File ini dapat dilihat menggunakan textpad editor biasa, namun tidak disarankan untuk mengganti isinya secara manual, karena file lexical database ini merupakan hasil compile dari file lexicographer file (dicompile menggunakan tool Grinder yang tersedia versi UNIX nya saja) dan juga sudah melalui perhitungan offset dan byte, sehingga jika diganti manual, dikhawatirkan akan terjadi error.

Secara umum, urutan langkah kerja dari pengembangan WordNet hingga menjadi database siap pakai adalah sebagai berikut.

  • Para lexicographers menyusun isi WordNet dalam bentuk lexicographer file, yaitu file yang disepakati sebagai hasil kerja dari para lexicographers dan memiliki format tertentu. File-file ini terbagi menjadi 16 file utama, di mana diawali dengan kelas kata dan memiliki extension kategori sub kelas kata. Misalkan saja contohnya adalah noun.Tops, noun.Body, verb.Acts, verb.Weather, adj.All, adv.All, dan seterusnya. Isi dari file2 itu adalah seperti berikut:

($RCSfile: noun.artifact,v $ $Revision: 7.0 $ $Date: 2006/12/11 21:42:37 $ $Name:  $ $State: Rel $)
(Copyright (c) 1988-2006 by Princeton University)
(noun.artifact)

{ aba, fabric,@ (a fabric woven from goat hair and camel hair) }
{ aba1, overgarment,@ (a loose sleeveless outer garment made from aba cloth; worn by Arabs) }
{ abacus, calculator,@ (a calculator that performs arithmetic functions by manually sliding counters on rods or in grooves) }
{ abacus1, tablet2,@ (a tablet placed horizontally on top of the capital of a column as an aid in supporting the architrave) }

  • Lalu, lexicographer file tersebut akan dicompile menjadi file lexical database menggunakan tool Grinder yang dapat didownload pada alamat http://wordnetcode.princeton.edu/tools/grind/
  • File lexical database tersusun menjadi 8 file utama, yang dapat dibagi menjadi 2 kelompok, yaitu yang diawali dengan ‘index’ untuk tiap kelas kata, yaitu file yang menyimpan index kata apa saja yang terdapat dalam kelas kata tertentu (index.noun, index.verb, index.adj, index.adv) dan file yang diawali dengan ‘data’, yaitu file yang menyimpan semua relasi semantik antar synset dalam WordNet (data.noun, data.verb, data.adj, data.adv). Selanjutnya, file lexical database inilah yang nantinya akan diakses oleh browser WordNet maupun berbagai library lain yang memanfaatkan Wordnet ini. Contoh isi file lexical database adalah :

Contoh isi index.noun

christmas_pudding n 1 1 @ 1 0 07617708
christmas_rose n 1 1 @ 1 0 11734300
christmas_star n 1 2 @ #m 1 0 12920204
christmas_stocking n 1 1 @ 1 0 03026506
christmas_tree n 5 2 @ #m 5 0 12787364 12738599 11621547 11621281 03026626
christmasberry n 2 2 @ #m 2 0 12905412 12633061
christmastide n 1 3 @ #p %p 1 0 15196537
christmastime n 1 3 @ #p %p 1 0 15196537

Contoh isi data.noun

00001740 03 n 01 entity 0 003 ~ 00001930 n 0000 ~ 00002137 n 0000 ~ 04424418 n 0000 | that which is perceived or known or inferred to have its own distinct existence (living or nonliving)

00001930 03 n 01 physical_entity 0 007 @ 00001740 n 0000 ~ 00002452 n 0000 ~ 00002684 n 0000 ~ 00007347 n 0000 ~ 00020827 n 0000 ~ 00029677 n 0000 ~ 14580597 n 0000 | an entity that has physical existence

00002137 03 n 02 abstraction 0 abstract_entity 0 010 @ 00001740 n 0000 + 00692329 v 0101 ~ 00023100 n 0000 ~ 00024264 n 0000 ~ 00031264 n 0000 ~ 00031921 n 0000 ~ 00033020 n 0000 ~ 00033615 n 0000 ~ 05810143 n 0000 ~ 07999699 n 0000 | a general concept formed by extracting common features from specific examples

Penelitian Lebih Lanjut

WordNet, di usianya yang ke 25, merupakan lexical database yang sudah sangat matang dan stabil, sehingga menjadi panutan dan referensi utama dari berbagai WordNet lainnya dalam berbagai bahasa (contohnya Korean WordNet, Thai WordNet, Romanian WordNet, dan beberapa WordNet bahasa gabungan seperti EuroWordnet dan Balkanet). Namun, tidak seperti pengembangan awal Princeton WordNet (PWN) yang dikerjakan manual sepenuhnya oleh para lexicographer, pengembangan WordNet-WordNet baru ini diusahakan menggunakan cara yang semi-otomatis, sehingga mengurangi cost yang sangat besar, yaitu waktu dan ahli bahasa.

Secara spesifik, tugas akhir saya membahas tentang pembentukan synset untuk Bahasa Indonesia, dan sampai saat ini masih dalam tahap penelitian dan penyempurnaan hasil.

Demikianlah penjelasan tentang pengantar WordNet. Saya harap, informasi yang saya tuliskan di sini dapat bermanfaat bagi anda-anda yang membaca.