Fatih Üniversitesi Doğal Dil İşleme Grubu

Hakkında

FatihParser nedir?

FatihParser cümleleri hangi bileşenlere göre çözümler?

FatihParser nasıl çalışır?

Türkmenceden Bazı Örnekler

FatihParser projesi nasıl ortaya çıktı ve gelecek için neler planlanıyor?

FatihParser kaynak kodlarına erişmem mümkün mü?

FatihParser nedir?

FatihParser Türkçe ve diğer Türkî diller için tasarlanmış bir sözdizimsel çözümleyidir. Yani cümleyi sözdizimsel bileşenlerine ayıran bir araçtır. Bu bileşenler ögeler, unsurlar, kelime grupları ve kelimelerdir. FatihParser dilbilimcilerin daha aşina oldukları bir ifade ile “cümle tahlili” yapan bir yazılımdır.

FatihParser cümleleri hangi bileşenlere göre çözümler?

FatihParser cümleleri şu bileşenlere göre çözümler:

Ögeler: Özne, yüklem, belirtili nesne, belirtisiz nesne, tümleç, zarf, cümle dışı öge
Unsurlar: isim unsuru, sıfat unsuru, zarf unsuru, fiil unsuru vs.
Kelime Grupları: isim tamlaması, sıfat tamlaması, isim-fiil grubu, sıfat-fiil grubu, bileşik fiil vs.
Kelimeler: isim, fiil, sıfat, ek fiil, zamir, bağlaç vs.

Büyük oranda Leyla Karahan'ın Türkçede Söz Dizimi isimli kitabındaki tahlil metodu temel alınmıştır.

FatihParser nasıl çalışır?

Sistemin çalışma mantığını anlamak adına “Ben bu evde oturuyorum” cümlesinin çözümleniş aşamalarını inceleyelim:

1. Kelimelerin analizi

Öncelikle cümledeki her bir kelime mofolojik çözümleyici (Türkçe için Zemberek 2 kullanılmaktadır) tarafından çözümlenir. Eğer bir kelimenin birden fazla çözümü varsa, her bir çözüm için cümlenin yeni bir türevi oluşturulur. Görüldüğü gibi “ben” kelimesinin biri zamir (1. Tekil şahıs) diğeri isim (yüzdeki ben gibi) olan iki anlamı vardır. Aynı şekilde “bu” kelimesinin de sıfat ve zamir olan iki ayrı anlamı (çözümü) vardır. Diğer kelimelerin ise yalnızca bir çözümü vardır. Sonuç olarak 2x2x1x1 = 4 farklı türev aşağıdaki gibi oluşturulur.

1. Türev:

"ben/pron" "bu/pron" "ev/noun de/loc" "otur/verb uyor/tense um/1sg"

2. Türev:
"ben/pron" "bu/adj" "ev/noun de/loc" "otur/verb uyor/tense um/1sg"

3. Türev:
"ben/noun" "bu/pron" "ev/noun de/loc" "otur/verb uyor/tense um/1sg"

4. Türev:
"ben/noun" "bu/adj" "ev/noun de/loc" "otur/verb uyor/tense um/1sg"

Sistem şimdilik doğru olan türevi seçme işini kullanıcıya bırakıyor. Biz insanlar için 2. Türevin doğru olduğunu anlamak çok zor değil. Ancak bunu sisteme otomatik olarak yaptırabilmek için istatistiki verilere ihtiyaç var ki bu verilerin hazırlanması ve sistemin adaptasyonu bir sonraki versiyon için hedeflenmektedir.

Kalan adımları doğru olan türev üzerinden incelemeye devam edelim.

2. Çözüm ağaçlarının oluşturulması

Bağlamdan bağımsız kurallara göre (Context Free Grammar, CFG) cümlenin muhtemel tüm çözüm ağaçları (parse tree) döndürülür.

"ben/pron" "bu/adj" "ev/noun de/loc" "otur/verb uyor/tense um/1sg"

Yukarıdaki türevin aşağıdaki gibi 2 farklı çözüm bulunuyor.

Çözüm 1 : Görüldüğü gibi ögeler özne-özne-tümleç-yüklem şeklindedir.

Çözüm 2 : Ögeler özne-tümleç-yüklem şeklinde dizilmiştir.

Bir cümlenin birden fazla çözümünün bulunmasına belirsizlik (ambiguity) denir. Yukarıdaki çözümlerden birincisinin geçersiz olduğu aşikardır. Zira bir cümlenin tek öznesi olur. O halde sistem neden böyle bir çözüm bulmuştur? Bu yazılan CFG kurallarının yapısı ile ilgili bir durumdur. Bilindiği gibi Türkçe cümlelerde ögeler kolayca yer değiştirebilmektedir. Bu yüzden CFG kurallarının tüm durumları kapsayıcı bir biçimde yazılması gerekir. Örneğin aşağıdaki iki kural öznenin cümlenin her yerinde bulunabilmesine olanak sağlar.

SS -> Sub SS
SS -> SS Sub

Ancak bu esneklik yukarıdaki gibi bazı dezavantajları da beraberinde getirir. Zira kurallar cümle içerisinde birden fazla özne olmasında da müsaade eder. Bu dezavantaj ise üçüncü bir adım olan geçerlilik denetimi ile giderilir.

3. Geçerlilik denetimi

Bu son aşamada bulunan her çözümün belirlenmiş geçerlilik kurallarına uygunluğu kontrol edilir. Bir cümlede birden fazla özne bulunamayacağı kural dosyasında tanımlı olduğundan birinci çözüm elenir. Ve geriye yalnızca aşağıdaki çözüm kalıyor.

Çözüm ağaçları daha az detay içerecek şekilde de üretilebilir.

Sadece kelime grupları ve ögelerin gösterildiği ağacın çizimi:

Sadece ögelerin gösterildiği ağacın çizimi:



Türkmenceden Bazı Örnekler

Cümle: yağtı dünyäämize yañadaan geldim (aydınlık dünyamıza yeniden geldim)

Morfolojik Çözüm:
"yağtı/adj" "dünyää/noun miz/p1p e/dat" "yañadaan/adv" "gel/verb di/tense m/1sg"

Cümle: bu obada yaşulı yok (bu köyde yaşlı yok)

Morfolojik Çözüm:
"bu/adj" "oba/noun da/loc" "yaşulı/adj" "yok/pre"

Cümle: bilbil ovazını övyää şahırlar (bülbül sesini övüyor şairler)

Morfolojik Çözüm:
"bilbil/noun" "ovaz/noun ı/p3s nı/acc" "öv/verb yää/tense" "şahır/noun lar/plu"



FatihParser projesi nasıl ortaya çıktı ve gelecek için neler planlanıyor?

Bir yüksek Lisans tez çalışması olarak başlayan FatihParser projesi, Türkî diller için genel bir sözdizimsel çözümleyici geliştirmek hefedi ile başladı. Bir süre sonra Fatih Üniversitesi Bilimsel Araştırma Projeleri Fonu tarafından desteklenmeye başlanan proje halen fonun desteği ile geliştirilmeye devam etmektedir.

Projenin öncelikli hedefi tamamen kural tabanlı çalışan sistemin zamanla istatistiksel verileri de kullanabilmesidir. Böylelikle cümleler için çok daha az sayıda ve isabetli çözümler (tahliller) bulunabilecektir.

FatihParser kaynak kodlarına erişmem mümkün mü?

FatihParser projesi Eylül-2014 itibariyle açık kaynak olmuştur. Kaynak kodlara GitHub üzerinden erişilebilir.