Pages

Jumat, 20 Juni 2014

Part-of-speech Relation Rule pattern matching untuk kalimat bahasa Indonesia

Semantic relationship extractor relex-id sedang dalam proses penambahan mekanisme untuk mendefinisikan relation rules.

Tahapan natural language processing (NLP) yang dibutuhkan untuk melakukan ekstraksi keterhubungan semantik sebagai berikut:

  1. Preprocessing. Menghilangkan whitespace tidak perlu, mengabaikan simbol-simbol/punctuation tak bermakna, normalisasi kapitalisasi, normalisasi accent, menghilangkan repetisi (mantaaaaap -> mantap), substitusi slang (mantab -> mantap), substitusi alay (4l4y -> alay), dsb. Saat ini relex-id tidak melakukan preprocessing sama sekali.
  2. Lexing/scanning/tokenization. Dalam NLP, tokenization biasanya sangat sederhana (context-free-grammar), karena tidak ada konsep keywords seperti dalam programming language processing. relex-id melakukan tokenisasi berdasarkan kelas karakter, yang terbagi menjadi: WORD, WHITESPACE, PUNCTUATION_FULL_STOP, PUNCTUATION_COMMA, PUNCTUATION_QUESTION, dan PUNCTUATION_EXCLAMATION.
  3. Parsing. Mengenali pola-pola dalam tokens menjadi struktur kalimat. Kebalikan dari programming language parsing, dalam NLP justru parsingnya jauh lebih kompleks, dengan algoritma pattern matching dan bisa juga ditambahkan probabilistic, certainty value, dan/atau priority queue. Hal ini karena NLP tidak selalu eksak, ada ambiguitas. Kalau di programming language, ambiguitas itu dilarang. Sedangkan di NLP, ambiguitas itu perlu dikodekan sebagai bagian integral dari pengenalan.
  4. Part-of-speech Relation extractor. Menganalisa keterhubungan secara tata bahasa/linguistik.
  5. Semantic relationship extractor. Menganalisa keterhubungan secara semantik (abstrak) antara konsep-konsep yang disebut dalam kalimat.
  6. Antecedent analysis. Menganalisa arti sebenarnya dari pronoun, dan bisa jadi merujuk ke kalimat-kalimat sebelumnya atau historis. Misalnya dalam kalimat "Ani suka peuyeum. Dia gemar makanan Sunda." Kata "dia" di kalimat kedua menunjuk ke noun "Ani" di kalimat pertama.
(Setelah pengolahan secara linguistik selesai maka dapat dilanjutkan ke pengolahan secara logika / reasoning / inference / deduction yang sifatnya cenderung language-independent.)

Pada tahap parsing, kalimat "aku cinta kamu" diparsing menjadi struktur:

(S (PP i) (VP dbpedia:Love (PP you_o)) . )

Pada tahap part-of-speech relation extractor, struktur di atas dianalisa lagi menjadi:

_subj(dbpedia:Love, i)
_obj(dbpedia:Love, you_o)

Sehingga sistem mengetahui, bahwa dari verb dbpedia:Love yang disebutkan dalam kalimat, subjeknya adalah Pronoun "i" dan objeknya adalah Pronoun "you_o".

Semoga proof of concept part-of-speech relation extractor di relex-id dapat diimplementasi dengan sukses. Amiiin :)