DİLBİLİM VE LİNUX BULUŞMASI: MORPHIX-NLP
Emre Sevinç
Doğal Dil İşleme
DDİ (Doğal Dil İşleme, NLP - Natural Language Processing) yaklaşık son 40 yıldır önemli bir araştırma disiplini olagelmiştir. Dilbilim ve bilgisayar bilimleri yöntemlerini bir araya getiren bu alanda pek çok değişik uygulama ve çözüm bekleyen önemli problemler mevcuttur. Farklı dillerdeki çok büyük metin dosyalarını incelemek, örüntüleri (pattern) keşfetmek, dönüşümleri gerçekleştirmek, metinleri otomatik olarak sınıflandırmak, konuşma sentezlemek ve konuşmayı anlayıp metne dönüştürebilmek, bilgisayarları bizim anadilimizi anlayabilir hale getirmek yani onlara semantik yetiler kazandırmak, vs. DDİ dalındaki önemli meselelerden sadece birkaçıdır.
Turing´den bu yana bildiğimiz gibi evrensel bilgi işleme araçları olan bilgisayarlarımız aynı zamanda dilbilimsel analizdeki önemli araçlardan biri haline de gelmeye başlamıştır. Sözcüklerin, seslerin, cümlelerin ve hatta hikâyelerin derin dünyasına dalmak için pek çok yazılım geliştirilmiştir. Bu tür çalışmalarla ilgilenen bir araştırmacı başlangıçta çeşitli yazılımların bir arada bulunduğu bir platforma ihtiyaç duyacaktır. Bu bağlamda geleneksel yöntem ilgili yazılımları yapılacak araştırmanın sonucunda tespit etmek, en güncel ve önemli yazılımları bulduktan sonra bunları çekmek, derlemek, ayarlamak, vs. gibi işlemleri gerçekleştirmektir. Çekmek, derlemek, ayarlamak bir yana bu sürecin ilk adımı, yani araştırma aşaması bile başlı başına bir hamallık olarak görülebilir. Ancak DDİ çaylakları için hayat düşündüklerinden daha kolay olabilir. Çok daha kolay.
PC´yi Dilbilim Analizi İçin Boot Edelim
DDİ konusunda çalışan Çinli araştırmacı Zhang Le, dil analizi ve dil işleme konusundaki en önemli yazılımların büyük bir bölümünü tespit edip bunları tek bir bootable CD´ye yani Morphix-NLP içine yerleştirmiş. Söz konusu CD´de 640 MB´ın üzerinde DDİ işleme yazılımı mevcut ve sıkıştırılmış bir dosya sistemi kullanan CD´nin kapasitesine baktığımızda daha pek çok yazılımı içine yerleştirebilecek kadar boş yerin bulunduğunu görebiliyoruz.
CD Debian GNU/Linux tabanlı Knoppix´ten yola çıkarak hazırlanmış Morphix dağıtımına dayanıyor. İyi de bu ne anlama geliyor? Bu şu anlama geliyor: ISO dosyasını çekip favori programınızla CD´yi oluşturduktan sonra bunu CD sürücünüze takıp makinanızı doğrudan boot edebilir, başka bir deyişle açabilirsiniz. Yani makinanızdaki hard diskte hangi işletim sisteminin bulunduğunun hiçbir önemi yok çünkü bu CD de tıpkı Knoppix´te olduğu gibi doğrudan makinanızı açıyor ve sadece RAM üzerinde çalışıyor. CD´yi takıp makinanızı açtıktan birkaç saniye sonra tipik bir bash
komut satırı ile karşılaşıyorsunuz. Birkaç satır yukarıdaki basit direktifler size ilgili belgeleri nasıl okuyabileceğinize ya da gayet pratik, hızlı, kullanışlı ve şık görünümlü bir GKA (Grafik Kullanıcı Arayüzü) olan XFce´yi nasıl başlatabileceğinize dair ipucu veriyor.
startx
komutunu girip XFce GKA ortamına girdikten sonra buna benzeyen bir görüntü ile karşılaşıyoruz. Morphix-NLP sisteminde hatırı sayılır miktarda ve detayda belge HTML biçiminde mevcut ve bunu görüntülemek için tek yapmanız gereken aşağıdaki ikon panelinde en solda duran şirin kitap ikonuna tıklamak. Birkaç saniye içinde Mozilla tabanlı Phoenix tarayıcısı sizi selamlayacak ve CD içindeki yazılımları tanıtan bir belgeyi karşınıza getirecektir.
Eğer sabırsızsanız ve doğrudan kurcalayarak öğrenmeyi seven ``hacker´´ mantalitesi ile yetişmişseniz XFce sisteminin ikon panelindeki doğrudan çalıştırılabilir bazı dilbilim araçlarını hemen keşfedebilirsiniz. Bu araçlar şunlardır: Link Grammar Parser, AntConc 2.2, WordNet Browser ve CMU Festival Konuşma Sentezleme Sistemi.
Bunların tadına bakmak istiyorsanız mesela Link Grammar penceresine gidip bir İngilizce cümle girin ve bu ilginç yazılımın girdiğiniz cümleyi öznesine, nesnelerine, fiiline, vs. ayırmasını izleyin. WordNet browser penceresine gidin ve bir sözcük girin (örn. "language" ;-) sonra da arama kutusunun sağındaki düğmelere basmak sureti ile araştırdığınız sözcüğün tekabül ettiği kavramın diğer kavramlarla, nesnelerle, vs. olan ilişkisini inceleyin. "Bir motorun parçaları nedir?","Motor neyin parçasıdır?" gibi soruların cevabını WordNet ile yani Yapay Zekâ, Bilişsel Bilim gibi pek çok alanda kullanılan bu çapraz bağlantılı, çağrışımlı sistem ile bulun. Bu arada dikkat etmeniz gereken önemli bir nokta da şudur: Bakmakta olduğunuz WordNet Browser grafik arayüzü WordNet´in kullanıldığı uygulamalardan sadece birisidir. Morphix-NLP sistemi içinde bulunan Python, Perl, Tcl/Tk gibi programlama dillerini kullanarak siz de WordNet veritabanı ile etkileşime geçen yazılımları geliştirip test edebilirsiniz.
Hepimizin bildiği gibi dil sadece okuma ve yazma ile sınırlı değildir. Bunlardan çok daha önce gelen şey konuşma yetimizdir ve Morphix-NLP bunu da göz önünde bulundurmakta, bünyesinde Edinburg Üniversitesi´nde geliştirilmiş olan yazılım tabanlı meşhur bir konuşma sentezleyicisi Festival´i barındırmaktadır. İkon panelindeki hoparlör ikonuna tıklayarak bunu çalıştırabilirsiniz ve sizi "Welcome to the Morphix NLP Live CD" cümlesini söyleyerek selamladığını duyabilirsiniz ;-) Bu basit görünümlü ama arka planda bir hayli gelişmiş ve karışık algoritmalar barındıran sistemi inceledikten sonra artık konuşan oyunlar, kullanıcı arayüzleri, vs. geliştirebilirsiniz.
Şimdiye kadar göz attıklarımız buzdağının görünen kısmı idi. Asıl hazine ise şirin ve tatlı ikonlarla ulaşılabilir durumda değil, bunun için belgeleri okumanız gerekiyor ama harcanacak çabanın buna değeceğinden şüpheniz olmasın.
Gerçek bir DDİ işleme dünyasına yolculuğumuz "tokeniser" sistemleri ile başlıyor: Bir "tokeniser" bir metni parçalarına ayıran yazılımdır. Yani sözcüklerine, noktalama işaretlerine, vs. Bu ayrı ayrı öğelerin her birine "token" denir. Kısaca söylemek gerekirse bir "tokeniser" girdi olarak bir metni alır ve bunu parçalar. Genellikle çıktı satır başına bir "token" şeklindedir. Bu çıktı daha sonra diğer programlara girdi olarak verilebilir ve DDİ süreci devam eder.
Daha sonra konuşma parçası etiketleyicileri gelir. Bu programlar kendilerine girdi olarak verilen metni okurlar ve üzerinde çalıştıkları öğenin türünü belirlemeye çalışırlar (isim, fiil, noktalama işareti, vs.) Bu durumda İngilizce ile sınırlı değilsinizdir. Bu tür yazılımlar herhangi bir dildeki metni analiz etmek için ayarlanabilir. CD´de İngilizce, Almanca ve İtalyanca için çalışan örnekleri bulabilirsiniz.
Bu aşamada artık işler biraz karışık hale gelmeye başlıyor, emniyet kemerinizi bağlamanız menfaatiniz icabıdır. Belgelerin üçüncü bölümüne baktığınızda çok önemli bazı dil analiz araçlarının bulunduğunu göreceksiniz. Bunlardan bir tanesi ile az önce oynamıştınız: Link Grammar Parser. Ancak bu sistem türünün tek örneği degil. Dil analizi için geliştirilmiş pek çok farklı gramer teorisi vardır ve bunlar İngilizce (ya da Türkçe) gibi doğal bir dilin yapısını tıpkı matematik gibi formel bir sistem şeklinde açıklamayı hedefler. Morphix-NLP´yi kullanarak bunlar hakkında fikir sahibi olabilirsiniz. Örneğin LoPar sistemini kurcalayabilirsiniz: Bir tür "head-lexicalised olasılıksal bağlamdan-bağımsız gramerler için sol köşe parser"ı. Efendim? Tek bir sözcük anlamadınız mı? Hmm, dilbilimle ilgilendiğinizi sanıyordum! :) Gidip biraz Chomsky okumaya başlasanız hiç fena olmaz (yukarıdaki örnek Chomsky´nin teorilerinden biri değil, aklınızda bulunsun, söz konus bilimadamı her şeyi başlatan kişi olduğu için burada anılmıştır).
Hiç istatistiksel veri içermeyen bir bilimdalı kulağa oldukça garip geliyor değil mi? Dilbilim analizi de elbette istatistikten nasibini alan bir alan. Bu yüzden de Morphix-NLP içinde önemli dil istatistikleri üretme araçları kullanılmaya hazır ve de nazır durumda. Yığınla metin verisi içinde tekrar eden kalıpları bulup kural çıkarma sanatına hazırlanın. Sözcük frekans listeleri, bigram ve trigram sayıları, sözcüğe özel bigram ve trigram sayıları bu tür yazılımlarla uğraşırken sık duyacağınız terimlerden sadece birkaçı. "Hangi sözcükler bir arada bulunurlar?", "Aralarındaki korelasyon nedir?", "`hasta´ sözcüğünün geçtiği yerin yakınlarında büyük olasılıkla `ilaç´ sözcüğü de geçer mi?" gibi sorular bu bölümün uğraşacağı problemler arasında sayılabilir ve bunların cevabının sağlıklı olarak bulunabilmesi için milyonlarca sözcüklük verinin incelenmesi gerekmektedir. Morphix-NLP burada da bize yardımcı olacak araçları sunmaktadır.
Belgelerdeki son bölüm ise Morphix-NLP CD´si içindeki en iddialı yazılım grubuna ayrılmış durumda: Makinaların Öğrenmesi (Machine Learning). Veriyi yukarıdaki gibi analiz ettikten sonra artık binlerce belgeyi otomatik olarak anlamlı sınıflara ayırabilecek, bir sözcüğün farklı anlamlarından birini bağlama göre seçebilecek (inanın bu o kadar kolay değil, örn. `Ahmet bu evi yıkamaz.´ cümlesininin iki anlamı vardır, temizlemek ve parçalamak şeklinde. Cümle çift anlamlıdır ve aslında ikiden fazla anlamı da olabilirdi, bağlama göre bu anlamlardan ancak biri doğrudur ve bunun tespit edilmesi önemli bir problemdir, arama motorlarında karmaşık bir arama yapmış olan ve hayal kırıklığına uğramış biri ne demek istediğimi çok daha iyi anlayacaktır. Yukarıdaki örnek Türkçe cümle için dostum Memduh Er´e teşekkür ederim.), girilen bir metni sizin kriterlerinize göre değerlendirebilecek (örn. bir sınav kağıdını sizin kriterlerinize göre ama sizi yormadan otomatik olarak notlayan bir sistemi düşünün) sistemler kurmanın zamanı geldi. İddialı olduğunu söylemiştim değil mi? Bu yazılımları incelerken Zhang Le ismini bir kez daha görüyoruz bu sefer Morphix-NLP´nin derleyicisi olarak değil, "Maximum Entropy Modelling Toolkit" isimli önemli makina öğrenme sisteminin geliştiricisi olarak.
Sonuç: Dikkat Edilmesi Gereken Noktalar
Zhang Le pek çok önemli doğal dil işleme aracını böylesine kolay kullanılabilir ve değerlendirilebilir bir Morphix-NLP CD´si içinde bize sunarak bir hayli güzel bir iş çıkarmış.
CD´yi incelemek ve anlamak için yukarıda adı geçen kapsamlı belgeler en önemli kılavuz. Bu belge yapısının temiz ve gereksiz detaylarla dolu olmadığını düşünmekle birlikte daha da geliştirilebileceğine inanıyorum. Her yazılımın nasıl çalıştırılabileceğine dair ipucu verilmesi güzel bir düşünce ve CD´de söz konusu yazılımlarla ilgili detaylı belgelere bir bağlantı sunulması işleri çok daha kolaylaştıracaktı. Tabii bunların nasıl görüntülebileceğinin belirtilmesi ya da daha iyisi bunları doğrudan web tarayıcısı içinde görüntülemek çok daha şık bir hareket olacak, sistemi mükemmele bir adım daha yaklaştıracatır. Zhang ile kişisel yazışmalarımızda ortaya çıkan etkileşimli ve sık güncellenen Wiki tarzı bir belgeleme sisteminin de epey işe yarayabileceği fikrine %100 katılıyorum.
Sistemde eksikliği hissedilen en önemli yazılım türü ses tanıma, bunu yazıya dönüştürme sistemleri. PC´min benimle konuştuğunu duymak heyecan verici ancak asıl eğlence ben ona sesli olarak komut vermeye kalktığımda ve o da bunu uygun eylemleri gerçekleştirdiğinde başlamaz mı? "Hey bilgisayar, beni duyabiliyor musun?"
Bir başka ilginç ve önemli DDİ yazılım sınıfı da doğal dilden SQL´e çeviri yapabilen sistemler. Yani sizin kendi anadilinizdeki sorunuzu alıp bunu arkada çalışmakta olan veritabanının anlayabileceği SQL cümlesine dönüştürebilen yazılımlar. "Hey bilgisayar, geçen dönem LING-101 dersini alan ve geçen öğrencilerin listesini söyle!"
Son olarak bu yaratıcı fikri ve somut ürünü dünya ile paylaştığı için Zhang Le´ye teşekkür etmek istiyorum. Teşekkürü hak eden bir başka önemli detay ise epey sevimli bulduğum CD kapak tasarımı. Bu kapak CD kabınızı epey şık kılıyor desem abartmış olmam ;-)
Morphix-NLP´deki dil işleme ve analiz yazılımlarının derinliklerine dalmışken bir sonraki Morphix-NLP sürümünü sabırsızlıkla bekliyor olacağım.
Emre "FZ" Sevinç
2003-12-08
http://www.ileriseviye.org/arasayfa.php?inode=morphixnlp-tr.html