Türkçe Doğal Dil İşleme’de Zemberek

Türkçe Doğal Dil İşleme’de Zemberek
1 vote, 5.00 avg. rating (96% score)

Türkçe doğal dil işleme dendiğinde herkesin aklına ilk Zemberek gelir. Peki nasıl kullanılır, ne işe yarar bu Zemberek?

Zemberek özellikle Türkçe olmak üzere Türk dilleri için geliştirilmiş açık kaynak kodlu bir doğal dil işleme aracıdır. Resmi olarak Open Office Türkçe versiyonunda ve Pardus’ta yazım denetim programı olarak da kullanılmış. Online olarak deneme yapmak istiyorsanız http://zemberek-web.appspot.com/ adresinden projenin web arayüzünü kullanabilirsiniz. Uygulamalarınızda kullanmak icin, projenin kodları http://zemberek.googlecode.com/svn/trunk/ üzerinden checkout edilebilir.

Projeyi kullanarak bir Türkçe metindeki kelimelerin Zemberek ile nasıl analiz edilebileceğini aşağıdaki örnekle açıklayabiliriz.

Örnek metnimiz,
metin = “Doğal Dil İşleme, doğal dillerin kurallı yapısının çözümlenerek anlaşılması amacını taşır.”

List<YaziBirimi> analizDizisi = YaziIsleyici.analizDizisiOlustur(metin);

Bu kod parçası bir analiz dizisi oluşturmak için kullanılır. Oluşan analiz dizisinde, metin aşağıdaki gibi kelimelerine ayrılmış ve analiz edilebilecek kelimelerin tipi KELIME olarak set edilmiştir.

[{tip=KELIME, icerik='Doğal'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='Dil'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='İşleme'}, {tip=DIGER, icerik=', '},
{tip=KELIME, icerik='doğal'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='dillerin'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='kurallı'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='yapısının'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='çözümlenerek'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='anlaşılması'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='amacını'}, {tip=DIGER, icerik=' '},
{tip=KELIME, icerik='taşır'}, {tip=DIGER, icerik='.'}]

Aşağıdaki for döngüsü ile analiz dizisinden, kelimelerin analiz edilmiş halleri oluşturulur.

for (int i = 0; i < analizDizisi.size(); i++) {
        if (analizDizisi.get(i).tip == YaziBirimiTipi.KELIME) {
            System.out.println(zemberek.kelimeCozumle(analizDizisi.get(i).icerik));
        }
    }

Bu döngünün sonucu aşağıdaki gibi olacaktır. Her bir kelimenin kökü, bulunan kökün tipi ve cümlede almış olduğu ekler için bulunan bütün ihtimaller listelenir.

Doğal:
[ Kok:doğal, Tip:ISIM | Ekler:ISIM_KOK]

Dil:
[ Kok:dil, Tip:FIIL | Ekler:FIIL_KOK]
[ Kok:dil, Tip:ISIM | Ekler:ISIM_KOK]

İşleme:
[ Kok:işlem, Tip:ISIM | Ekler:ISIM_KOK, ISIM_YONELME_E]
[ Kok:işle, Tip:FIIL | Ekler:FIIL_KOK, FIIL_OLUMSUZLUK_ME]
[ Kok:işle, Tip:FIIL | Ekler:FIIL_KOK, FIIL_DONUSUM_ME]

doğal:
[ Kok:doğal, Tip:ISIM | Ekler:ISIM_KOK]

dillerin:
[ Kok:dil, Tip:ISIM | Ekler:ISIM_KOK, ISIM_COGUL_LER, ISIM_TAMLAMA_IN]
[ Kok:dil, Tip:ISIM | Ekler:ISIM_KOK, ISIM_COGUL_LER, ISIM_SAHIPLIK_SEN_IN]

kurallı:
[ Kok:kural, Tip:ISIM | Ekler:ISIM_KOK, ISIM_BULUNMA_LI]

yapısının:
[ Kok:yapı, Tip:ISIM | Ekler:ISIM_KOK, ISIM_TAMLAMA_I, ISIM_TAMLAMA_IN]
[ Kok:yapı, Tip:ISIM | Ekler:ISIM_KOK, ISIM_SAHIPLIK_O_I, ISIM_TAMLAMA_IN]

çözümlenerek:
[ Kok:çözümle, Tip:FIIL | Ekler:FIIL_KOK, FIIL_EDILGENSESLI_N, FIIL_SUREKLILIK_EREK]

anlaşılması:
[ Kok:anlaş, Tip:FIIL | Ekler:FIIL_KOK, FIIL_EDILGEN_IL, FIIL_DONUSUM_ME, ISIM_SAHIPLIK_O_I]
[ Kok:anla, Tip:FIIL | Ekler:FIIL_KOK, FIIL_BERABERLIK_IS, FIIL_EDILGEN_IL, FIIL_DONUSUM_ME, ISIM_SAHIPLIK_O_I]

amacını:
[ Kok:amaç, Tip:ISIM | Ekler:ISIM_KOK, ISIM_SAHIPLIK_O_I, ISIM_BELIRTME_I]
[ Kok:amaç, Tip:ISIM | Ekler:ISIM_KOK, ISIM_SAHIPLIK_SEN_IN, ISIM_BELIRTME_I]
[ Kok:ama, Tip:ISIM | Ekler:ISIM_KOK, ISIM_ILGI_CI, ISIM_SAHIPLIK_SEN_IN, ISIM_BELIRTME_I]

taşır:
[ Kok:taşır, Tip:FIIL | Ekler:FIIL_KOK]
[ Kok:taş, Tip:FIIL | Ekler:FIIL_KOK, FIIL_GENISZAMAN_IR]
[ Kok:taşı, Tip:FIIL | Ekler:FIIL_KOK, FIIL_GENISZAMAN_IR]

Posted in Blog
1 Comment » for Türkçe Doğal Dil İşleme’de Zemberek
  1. Mustafa says:

    Çok güzel bir makale olmuş. Eteration ı her gün ziyaret etmeye çalışıyorum. Makalelerinizi sindirerek okumaya çalışıyorum.
    Teşekkürler.

Leave a Reply

Your email address will not be published. Required fields are marked *

*


− 1 = üç

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>