Prolog en başından itibaren dil işlemek için tasarlanmıştı. Sistemle birlikte gelen arama ve birleştirme mekanizmaları formel dilbilim modellerinin şık ve kısa kod yazacak şekilde uygulanmasına olanak tanır. "Definite Clause Grammar" (DCG) ile cümle çözümlemek Prolog içinde arama yapmaya karşılık gelir. Prolog kuralları yükleme esnasında tanır ve bunları yantümcelere çevirir. Böylece Prolog motoru cümle çözümleme işlemini daha fazla program yazmaya gerek kalmadan halleder.
Gerek akademide gerekse piyasadaki pek çok doğal dil işleme sistemi Prolog ile yazılmıştır. Perl, Python, Java veya C++ gibi diller de artık doğal dil işleme mühendisliğinde yaygın olarak kullanılır hale gelmiştir ancak bu dillerde bir fikri ya da dilbilim teorisini uygulamak hala çok kod yazmayı gerektirmektedir. Prolog ise sadece birkaç satır kodlama ile problemin özüne odaklanmayı mümkün kılar. Böylece bizleri işin hamallığından olabildiğince kurtarıp temel kavramları yakalamamızı sağlar.
Pierre M. Nugues'in "An Introduction to Language Processing with Perl and Prolog - An Outline of Theories, Implementation, and Application with Special Consideration of English, French, and German" kitabının Phrase-Structure Grammars in Prolog başlıklı 8. bölümü yukarıdaki sözlerle açılıyor.
Bilgisayarla doğal dil işleme alanındaki pek çok konuya değinen, 2006 yılında çıkmış bu 500 sayfalık kapsamlı kitap derlem (corpus) oluşturmaktan entropiye, n-gram modellerinden istatistiksel yöntemlere, POS (Part-Of-Speech) etiketlemeden sözdizim çözümlemeye; semantik, söylem ve diyalog modellemeye kadar hemen hemen tüm DDİ kavramlarını ele alıyor. Bu konularla ilgili teorik bilgiler gayet açık, sade ve akıcı bir dille verildikten sonra somut olarak Perl ve Prolog ile somut uygulamalar sunuluyor.
Benim açımdan kitabın faydaları arasında bu aralar üzerinde çalıştığımız projelerden biri olan doğal dil damgalama bağlamında karşıma epey sık çıkan dependency grammar konusunu daha iyi anlamak vardı mesela. Buna ek olarak belki de aklımda en çok kalacak bölümlerden biri de şimdiye dek gördüğüm en güzel "encoding" (Unicode, UTF-8), "locale" ve "collation" kavramlarının, çeşitli karakter setlerinin farklı ortamlarda neye göre sıralama algoritmasına tabi tutulduklarının anlatıldığı kısım. Şimdiye dek gördüğüm en güzel anlatımlardan biri. O kadar hoşuma gitti ki etrafımdaki yazılımcı arkadaşlarıma şu soruyu sormaya başladım:
Bir metin editörü açtınız, 500 karakterlik bir Türkçe yazı (bu 500e boşluk, noktalama, vs. dahil olsun yani 500 tuş vuruşluk) yazdınız, UTF-8 olarak kaydettiniz. Kaç byte yer tutar o dosya?
Henüz ilk seferinde bu soruya doğru cevabı veren biri ile karşılaşmadım (kendim dahil :))
"An Introduction to Language Processing with Perl and Prolog"u, NLP yani Natural Language Processing yani DDİ yani Doğal Dil İşleme ile uğraşan bilgisayarcılara, dilbilimcilere ve hevesli araştırmacılara gönül rahatlığı ile tavsiye edebilirim. Ayrıca bu kitabın bir parçası olduğu Cognitive Technologies serisine genel olarak bakmakta fayda var. Mesela serideki Artificial General Intelligence kitabı bilişsel bilimler, yapay zekâ, vb. konularda çalışan araştırmacılara faydalı olabilecek önemli kitaplardan biri. kitaplardan biri.