17.053 views
May 242016
 
17.054 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

  24 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.

  11. Birden fazla jpype.jclass’ı aynı anda kullanmak mümkün mü?

    Eğer mümkünse birden fazla jclass için path vererek ayrı ayrı tar dosyalarından aynı anda birden fazla jpype.jclass kullanmak mümkün olabilir mi?

  12. Merhaba Hocam,
    Anlatımınız ve örneğiniz için öncelikle teşekkür ederim. jnius kütüphanesini pip ile kurabildim.
    Fakat, autoclass metodu ile oluşturduğum java nesnelerine ait kelimeCozumle ve kelimeDenetle metodlarından sonuç
    alamadım. kelimeDenetle herzaman false döndürürken kelimeCozumle kok bulamıyor.
    Elinize sağlık teşekkür ederim.
    A.Kemal

    • Merhaba,
      Jpype kütüphanesini niçin kullanmıyorsunuz?
      Fonksiyon dönüşlerini birer değişkene atayın ve type() ile dönüş değerlerinin tipine bakın.
      Dönen değerler string olmayabilir.
      Kullandığınız kodları paylaşırsanız, sorunu daha kolay buluruz.
      Selamlar.
      Ahmet Aksoy

  13. jype modulu nasıl yükleyeceğin yardım edebilir misiniz?

  14. Merhaba windows’ta jvm’i aşağıdaki şekillerde başlatmaya denediğimde ‘JVM cannot be restarted’ hatası alıyorum. Yardımcı olabilir misiniz? Teşekkürler

    jpype.startJVM(“C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\bin\\server\\jvm.dll”,
    “C:\\Users\\b\\zemberek-tum-2.0.jar”, “-ea”)

    jpype.startJVM(“/C:/Program Files/Java/jdk1.8.0_161/jre/bin/server/jvm.dll”,
    “-Djava.class.path=/C:/Users/b/zemberek-tum-2.0.jar”, “-ea”)

 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)

This site uses Akismet to reduce spam. Learn how your comment data is processed.