4.377 views 4.377 views
May 242016
 
4.378 views

Python ile Zemberek Kütüphanesini Kullanmak

Python ile Zemberek Kütüphanesini Kullanmakhttp://www.b4deploy.com/sorular/zemberek-example-for-python/ adresindeki örneklerden yararlanarak yaptığım denemelerin sonunda jpype modülünü kullanarak zemberek-tum-2.0.jar kütüphanesini sorgulayabilen kodları elde ettim.

Bu çalışmalar sırasında jnius kütüphanesini ne Python2.x serisinde, ne de Python 3.x serisinde yüklemem mümkün oldu. Pek çok deneme yaptım ama bu kütüphaneyi yükleyip test edemedim.

Oysa jpype modülü kolayca yüklendi. Aşağıdaki kodları da bu sayede Python 3.5.1 üzerinde sorunsuz bir şekilde çalıştırabildim.

Programın çıktısı şöyle:

zemberek-tum-2.0.0.jar dosyasını http://www.java2s.com/Code/Jar/z/zemberek.htm adresinden indirebilirsiniz.

jar dosyasının içeriği:

Bu yöntemle, kısmen de olsa zemberek kütüphanesini Python programı üzerinden kullanmak mümkün. Diliyorum ki daha ileride bu güzel kütüphaneyi doğrudan Python ile kullanmamız mümkün olsun!

Ahmet Aksoy

  17 Yanıt - “Python ile Zemberek Kütüphanesini Kullanmak”

  1. Hocam selam, zemberek’le alakalı; örneğinizde, “habercisi” kelimesi dikkatimi çekti. Kökü “haberci” olmasına rağmen “haber” olarak çıktı üretilmiş. Burada, sizce doğru sonuca nasıl ulaşabiliriz? Zemberek-nlp kütüphanesi daha tutarlı sonuç üretiyor mu, test etme şansınız oldu mu?

    • Merhaba Fatih bey,
      Haberci kelimesi, haber köküne -ci yapım eki eklenerek türetilmiş. (Arkadaşlar bunu İLGİ_EKİ olarak tanımlamışlar) Bu tür belirgin yapım eklerini kodlara ekleyerek kök dosyasının boyutlarını küçültmek mümkün oluyor. Aksi halde hemen hemen her isim köküne bir de -ci eklemek lazım. Böyle bir kullanım tercih edilmiş olabilir.
      Ana hatlarıyla zemberek kütüphanesinin çok başarılı bir çalışma olduğuna inanıyorum.
      Ayrıca, özel isimlerin ve bazı temel kavramların kök listesine dahil edilmediğinin de farkında olmak lazım.

  2. Zemberek aracı ile cümlenin Sözdizimsel (Syntaxial) analiz yapılabiliyor mu? Örneğin “Ali ata baktı” cümlesini verdiğim zaman Ali = Özne, Ata = Nesne, Baktı = Fiil eşlemesini yapabiliyor mu?

    • Bildiğim kadarıyla hayır. Zemberek sadece kelime bazında işlevsel. Sözcüklerin tipini belirleyip, kök ve eklerini ayırabiliyor. Cümle bazında çalışmıyor.

  3. Merhaba, öncelikle yaptığınız katkıdan dolayı çok teşekkürler. Ben javayı pek bilmiyorum ve açıkçası yazdığınız kodu nasıl editleyeceğimi bilmiyorum. Ben sadece çıktı olarak kök kelimeyi alıp, veritabanına ekleyeceğim. Diğer açıklama kısımlarını nasıl silebilirim ?

  4. Merhaba siz yukarıdaki örnekte kelimeCozumle adlı bir fonksiyon kullanmışsınız, bu fonksiyonun hangi sınıfa ait olduğunu nereden buldunuz ?,Başka sınıflarda hangi fonksiyonların olduğuna dair bilgiyi nereden alabiliriz acaba ?

    • Merhaba Can bey,
      kelimeCozumle metodu net.zemberek.tr.yapi.TurkiyeTurkcesi sınıfında olmalı.
      Fonksiyon listelerini bulabileceğiniz bir kaynak bilgisi bende de yok.
      Java konusuna yeterince hakim değilim. Ama jar dosyasının içinde bu bilgiler olmalı.
      İnterneti bu konuya ilişkin sorgularsanız bir yanıt bulabilirsiniz.
      Kolay gelsin.

  5. Merhaba jpype modülünü yükledim. Ancak yukarıdaki kodu çalıştırdığımda “ImportError: No module named jpype” hatası veriyor. Sorun neden kaynaklabilir, çözümü nedir?

    • jpype modülünü sisteminize yüklememişsiniz. Import etmeden önce, kullandığınız python sürümüne bu modülü yüklemeniz gerekir.

  6. Merhaba,

    Bir kelimede olumsuzluk eki olup olmadığını öğrenebileceğimiz bir metod var mı?

    • Ne yazık ki bu konuda bir bilgim yok.
      Ancak zemberek ile bu sözcükleri çözümlediğimizde:
      {Icerik: iştahlı Kok: iştah tip:ISIM} Ekler:ISIM_KOK + ISIM_BULUNMA_LI
      {Icerik: iştahsız Kok: iştah tip:ISIM} Ekler:ISIM_KOK + ISIM_YOKLUK_SIZ
      yanıtlarını alıyoruz. Buradaki ISIM_YOKLUK_SIZ eki, olumsuzluğu tanımlayan eklerden biri.

  7. Merhaba,

    2 sorum olacak, umarım yardımcı olabilirsiniz.

    1) Zemberek ile aynı kökten farklı yapım eki alarak türemiş kelimeleri nasıl ayırt edebilirim? Örneğin iştahlı ve iştahsız kelimelerini nasıl ayırabilirim?

    2) Zemberek ile bir kelimenin olumsuzluk eki alıp almadığını nasıl kontrol edebilirim? Uygun bir method var mı?

    • Merhaba Gökhan bey,
      Zemberek mekanizmasının tüm ayrıntılarını bilmediğimi baştan söyleyeyim.
      Benim örnekte kullandığım kadarıyla verilen sözcükler zemberek tarafından çözümlendikten sonra çıkan sonuç standart bir formatla geri döndürülüyor. Bu çıktıda kök, tip ve ekler ayrı ayrı yer alıyor.
      Dolayısıyla çıktıyı regex vb ile istediğiniz bilgileri alacak şekilde ayrıştırabilir ve karşılaştırmaları buna göre yapabilirsiniz.
      Her iki sorunuza da bu şekilde yanıt üretilebilir.
      Python konusunda yardıma ihtiyacınız olursa, zamanım elverdiğince destek olmaya çalışırım.

  8. Tekrar merhaba,

    Zemberek ile tokenization yapabiliyor muyuz?

  9. Bir sorum daha olacak. Zemberek’e yüz kelimesini yazdığımda çıkış alanında
    {Icerik: yüz Kok: yüz tip:FIIL} Ekler:FIIL_KOK
    {Icerik: yüz Kok: yüz tip:SAYI} Ekler:SAYI_KOK
    sonucunu alyorum. İlk sonucun fiil ikincinin ise sayı tipinde olduğunu görüyorum. Bu sıralamayı olasılık dağılımına göre mi belirliyor?

  10. Ne yazık ki bu konuda da kesin bir bilgiye sahip değilim.
    Çoklu yanıt üreten örnekleri inceleyerek bu sorunuza bir yanıt bulmak mümkün olabilir.

 Bir yanıt bırakın

Bu HTML tagleri ve özellikleri kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(gerekli)

(gerekli)

%d blogcu bunu beğendi:
Önceki yazıyı okuyun:
Örnekleriyle Türkçe Sözcüklerde Yapım Ekleri

Örnekleriyle Türkçe Sözcüklerde Yapım Ekleri Türkçede pek çok sözcüğün gövdesi, kök sözcüklere ulama yapılarak oluşturulmuştur. Bu tür eklere "yapım ekleri"...

Kapat