Yazan : Şadi Evren ŞEKER
Bu yazının amacı, bilgisayar bilimlerinde, özellikle metin madenciliği veya doğal dil işleme gibi alt konularda sıkça geçen konuşma etiketleme yöntemini açıklamaktır (Part of speech tagging). Yazıya başlamadan önce belirtmek isterim ki ne yazık ki Türkçede tam başarılı kodlanmış, eğitilmiş ve çalışan bir etiketleme yazılımı bu yazıyı yazarken yoktu (veya ben bilmiyordum). Umarım yakın gelecekte bu şekilde bir çerçeve yazılım (framework) geliştirilerek bu konuda çalışan kişilere imkan sağlayacaktır.
Kelime etiketleme işlemi klasik bir gövdeleme (Stemmer) işleminden biraz daha karmaşık yapıdadır. Aslında işlem basitçe bir kelimenin tipini bilmektir. Örneğin kelime isim, fiil, sıfat, bağlaç gibi sınıflardan hangisine aitse o sınıfı etiket olarak koymak işlemidir.
Aslında basit bir işlem olarak görülmesine karşılık bu işlemde olasılıklar devreye girer. Örneğin “ koyun” kelimesinin kökü hayvan olan koyun olabileceği gibi “koy” fiilinin bir çekimi olup gövdesi “koyun” da olabilir. Ancak bu iki kelime arasındaki farkı anlamak önceki ve sonraki kelimelere bakarak mümkündür. Örneğin “kitaplarınızı masalarınızın üzerine koyun” cümlesindeki koyun kelimesinin fiil olarak etiketleneceği, buna mukabil “çoban merada tek bir koyun otlatıyordu” cümlesindeki koyun kelimesinin ise hayvan olan koyun olduğu anlaşılmaktadır.
Part of speech (POS, konuşmanın bir kısmı) kullanılarak bu etiketleme yapılabilir. Örneğin “koyun otlatıyordu” veya “üzerine koyun” şeklinde ikişer kelimenin alıntılanması aradaki farkın çözümlenmesi için yeterli olacaktır.
Bu ve benzeri durumlar için genelde kullanılan yaklaşım HMM (hidden markov model, gizli markof zinciri) yaklaşımıdır ve olasılıkların hesaplanmasına dayanır.
Örneğin İngilizce için çok daha olgun yapılan çalışmalarda bir belirtecin (determiner) ardından %40 oranında isim %40 oranında sıfat ve %20 oranında bir sayı geldiğini tespit etmişlerdir.
Bu durumda herhangi bir belirteçten sonra fiil gelmeyeceği bellidir. Örneğin ingilizcede isim olan koşu (run) veya fiil olan koşmak (run) anlamlarında kullanılan aynı kelime, “the run” şeklinde bir belirteçten sonra geliyorsa fiil olamayacak ve isim olarak sınıflandırılacaktır.
Yukarıdaki HMM yaklaşımında önemli bir ihtiyaç, doğru şekilde ve çok yüksek sayıdaki metinlerde eğitim yapılmasıdır. Yani bu oranların çıkarılması için bir insan tarafından etiketlenmiş metinlerin verilmesi ve sistemin eğitilmesi şu anda uygulanan en yaygın yöntemdir.
Ayrıca bu yöntemlerin çeşitli dinamik programlama (dynamic programming) yöntemleri ile hızlandırılması ve performans artışı mümkündür.
İncelediğim çok sayıdaki etiketleyici arasından en beğendiğim ve JAVA dilinde yazılmış olan ve bir kaç projede kullandığım stanford kütüphanesine aşağıdaki bağlantıdan erişilebilir:
http://nlp.stanford.edu/software/tagger.shtml