Python ile Zemberek Kütüphanesini Kullanmak
http://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.
# -*- coding: utf-8 -*-
"""
Kod : Ahmet Aksoy
Sistem: Ubuntu 14.04 LTS
Python: Python 3.5.1
Modül : JPype1-py3 0.5.5.2
"""
import jpype
# JVM başlat
# Aşağıdaki adresleri java sürümünüze ve jar dosyasının bulunduğu klasöre göre değiştirin
jpype.startJVM("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so",
"-Djava.class.path=/home/ax/PycharmProjects/trdp/zemberek-tum-2.0.jar", "-ea")
# Türkiye Türkçesine göre çözümlemek için gerekli sınıfı hazırla
Tr = jpype.JClass("net.zemberek.tr.yapi.TurkiyeTurkcesi")
# tr nesnesini oluştur
tr = Tr()
# Zemberek sınıfını yükle
Zemberek = jpype.JClass("net.zemberek.erisim.Zemberek")
# zemberek nesnesini oluştur
zemberek = Zemberek(tr)
#Çözümlenecek örnek kelimeleri belirle
kelimeler = ["merhabalaştık","dalgalarının","habercisi","tırmalamışsa"]
for kelime in kelimeler:
if kelime.strip()>'':
yanit = zemberek.kelimeCozumle(kelime)
if yanit:
print("{}".format(yanit[0]))
else:
print("{} ÇÖZÜMLENEMEDİ".format(kelime))
#JVM kapat
jpype.shutdownJVM()
Programın çıktısı şöyle:
/home/ax/evp35/bin/python /home/ax/PycharmProjects/trdp/zemberek-ornek.py {Icerik: merhabalaştık Kok: merhaba tip:ISIM} Ekler:ISIM_KOK + ISIM_DONUSUM_LES + FIIL_BELIRTME_DIK {Icerik: dalgalarının Kok: dalga tip:ISIM} Ekler:ISIM_KOK + ISIM_COGUL_LER + ISIM_SAHIPLIK_O_I + ISIM_TAMLAMA_IN {Icerik: habercisi Kok: haber tip:ISIM} Ekler:ISIM_KOK + ISIM_ILGI_CI + ISIM_SAHIPLIK_O_I {Icerik: tırmalamışsa Kok: tırmala tip:FIIL} Ekler:FIIL_KOK + FIIL_GECMISZAMAN_MIS + IMEK_SART_SE JVM activity report : classes loaded : 25 JVM has been shutdown Process finished with exit code 0
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:
Files contained in zemberek-tum-2.0.jar: META-INF/MANIFEST.MF kaynaklar/tm/bilgi/ek_tm.xml kaynaklar/tm/bilgi/harf_tm.txt kaynaklar/tm/bilgi/kokler_tm.bin kaynaklar/tr/bilgi/ek_tr.xml kaynaklar/tr/bilgi/harf_tr.txt kaynaklar/tr/bilgi/kelime_cebi_tr.txt kaynaklar/tr/bilgi/kokler_tr.bin net.zemberek.araclar.IstatistikAraclari.class net.zemberek.araclar.JaroWinkler.class net.zemberek.araclar.KayitBicimleyici.class net.zemberek.araclar.Kayitci.class net.zemberek.araclar.MetinAraclari.class net.zemberek.araclar.TimeTracker.class net.zemberek.araclar.TimerElement.class net.zemberek.araclar.TusTakimi.class net.zemberek.araclar.XmlYardimcisi.class net.zemberek.araclar.turkce.TurkceMetinOkuyucu.class net.zemberek.araclar.turkce.TurkishTokenStream.class net.zemberek.araclar.turkce.YaziBirimi.class net.zemberek.araclar.turkce.YaziBirimiTipi.class net.zemberek.araclar.turkce.YaziIsleyici.class net.zemberek.bilgi.KaynakYukleyici.class net.zemberek.bilgi.ZemberekAyarlari.class net.zemberek.bilgi.araclar.DuzYaziKokOkuyucu.class net.zemberek.bilgi.araclar.DuzYaziKokYazici.class net.zemberek.bilgi.araclar.IkiliKokOkuyucu.class net.zemberek.bilgi.araclar.IkiliKokYazici.class net.zemberek.bilgi.araclar.KokOkuyucu.class net.zemberek.bilgi.araclar.KokYazici.class net.zemberek.bilgi.kokler.AgacSozluk.class net.zemberek.bilgi.kokler.AsciiKokAdayiBulucu.class net.zemberek.bilgi.kokler.KesinKokAdayiBulucu.class net.zemberek.bilgi.kokler.KokAdayiBulucu.class net.zemberek.bilgi.kokler.KokAdayiBulucuUretici.class net.zemberek.bilgi.kokler.KokAgaci.class net.zemberek.bilgi.kokler.KokAgaciYuruyucu.class net.zemberek.bilgi.kokler.KokDugumu.class net.zemberek.bilgi.kokler.Sozluk.class net.zemberek.bilgi.kokler.ToleransliKokAdayiBulucu.class net.zemberek.demo.CikisAlani.class net.zemberek.demo.DemoMain.class net.zemberek.demo.DemoPaneli.class net.zemberek.demo.DemoYonetici.class net.zemberek.demo.GirisAlani.class net.zemberek.demo.IslemTipi.class net.zemberek.demo.MainFrame.class net.zemberek.demo.SwingFactory.class net.zemberek.demo.TurkDiliTuru.class net.zemberek.erisim.Zemberek.class net.zemberek.islemler.AsciiDonusturucu.class net.zemberek.islemler.BasitDenetlemeCebi.class net.zemberek.islemler.DenetlemeCebi.class net.zemberek.islemler.HataliKodlamaTemizleyici.class net.zemberek.islemler.HeceIslemleri.class net.zemberek.islemler.KelimeKokFrekansKiyaslayici.class net.zemberek.islemler.KelimeTabanliKokBulucu.class net.zemberek.islemler.KelimeUretici.class net.zemberek.islemler.KokBulucu.class net.zemberek.islemler.TurkceYaziTesti.class net.zemberek.islemler.cozumleme.AsciiToleransliHDKiyaslayici.class net.zemberek.islemler.cozumleme.BasitKelimeYigini.class net.zemberek.islemler.cozumleme.CozumlemeYardimcisi.class net.zemberek.islemler.cozumleme.HarfDizisiKiyaslayici.class net.zemberek.islemler.cozumleme.KelimeCozumleyici.class net.zemberek.islemler.cozumleme.KesinHDKiyaslayici.class net.zemberek.islemler.cozumleme.OneriUretici.class net.zemberek.islemler.cozumleme.StandartCozumleyici.class net.zemberek.islemler.cozumleme.ToleransliCozumleyici.class net.zemberek.istatistik.BinaryIstatistikOkuyucu.class net.zemberek.istatistik.BinaryIstatistikYazici.class net.zemberek.istatistik.DosyaRaporlayici.class net.zemberek.istatistik.EkFrekansBilgisi.class net.zemberek.istatistik.EkIstatistikBilgisi.class net.zemberek.istatistik.EkIstatistikleri.class net.zemberek.istatistik.EkZinciri.class net.zemberek.istatistik.GenelKokIstatistikBilgisi.class net.zemberek.istatistik.Hece.class net.zemberek.istatistik.HeceIstatistikleri.class net.zemberek.istatistik.IkiliIstatistikleri.class net.zemberek.istatistik.Istatistik.class net.zemberek.istatistik.IstatistikRaporlayici.class net.zemberek.istatistik.IstatistikToplayici.class net.zemberek.istatistik.IstatistikYazici.class net.zemberek.istatistik.Istatistikler.class net.zemberek.istatistik.KarakterIstatistikleri.class net.zemberek.istatistik.KelimeBilgisi.class net.zemberek.istatistik.KelimeIstatistikleri.class net.zemberek.istatistik.KelimeTipZinciri.class net.zemberek.istatistik.KelimeZinciri.class net.zemberek.istatistik.KokCebi.class net.zemberek.istatistik.KokIstatistikBilgisi.class net.zemberek.istatistik.KokIstatistikleri.class net.zemberek.istatistik.KonsolRaporlayici.class net.zemberek.istatistik.TemelIstatistikYazici.class net.zemberek.istatistik.TemelRaporlayici.class net.zemberek.istatistik.UcluIstatistikleri.class net.zemberek.tm.islemler.TurkmenceCozumlemeYardimcisi.class net.zemberek.tm.yapi.Turkmence.class net.zemberek.tm.yapi.TurkmenceHeceleyici.class net.zemberek.tm.yapi.TurkmenceSesliUretici.class net.zemberek.tm.yapi.ek.EdilgenOzelDurumu.class net.zemberek.tm.yapi.ek.EkUreticiTm.class net.zemberek.tm.yapi.ek.KiEkOzelDurumu.class net.zemberek.tm.yapi.ek.MeEkOzelDurumu.class net.zemberek.tm.yapi.ek.SonHarfDusumOzelDurumu.class net.zemberek.tm.yapi.ek.TurkmenceEkAdlari.class net.zemberek.tm.yapi.ek.TurkmenceEkOzelDurumUretici.class net.zemberek.tm.yapi.kok.TurkmenceKokOzelDurumBilgisi.class net.zemberek.tm.yapi.kok.TurkmenceKokOzelDurumTipleri.class net.zemberek.tr.HarfDizisiUretici.class net.zemberek.tr.islemler.SoruEkiIsleyici.class net.zemberek.tr.islemler.TurkceCozumlemeYardimcisi.class net.zemberek.tr.yapi.DenemeTurkceHeceleyici.class net.zemberek.tr.yapi.TurkceHeceleyici.class net.zemberek.tr.yapi.TurkceSesliUretici.class net.zemberek.tr.yapi.TurkiyeTurkcesi.class net.zemberek.tr.yapi.ek.BeraberlikIsOzelDurumu.class net.zemberek.tr.yapi.ek.EdilgenOzelDurumu.class net.zemberek.tr.yapi.ek.EkUreticiTr.class net.zemberek.tr.yapi.ek.GenisZamanEkOzelDurumuTr.class net.zemberek.tr.yapi.ek.SimdikiZamanEkOzelDurumuTr.class net.zemberek.tr.yapi.ek.SuOzelDurumu.class net.zemberek.tr.yapi.ek.TurkceEkAdlari.class net.zemberek.tr.yapi.ek.TurkceEkOzelDurumUretici.class net.zemberek.tr.yapi.kok.TurkceKokOzelDurumBilgisi.class net.zemberek.tr.yapi.kok.TurkceKokOzelDurumTipleri.class net.zemberek.tr.yapi.kok.YumusamaNk.class net.zemberek.yapi.Alfabe.class net.zemberek.yapi.CokluKok.class net.zemberek.yapi.Cumle.class net.zemberek.yapi.DilAyarlari.class net.zemberek.yapi.DilBilgisi.class net.zemberek.yapi.DilBilgisiUretici.class net.zemberek.yapi.EkSiralayici.class net.zemberek.yapi.HarfDizisi.class net.zemberek.yapi.Heceleyici.class net.zemberek.yapi.Kelime.class net.zemberek.yapi.KelimeTipi.class net.zemberek.yapi.Kok.class net.zemberek.yapi.SesliUretici.class net.zemberek.yapi.TurkceDilBilgisi.class net.zemberek.yapi.TurkceHarf.class net.zemberek.yapi.ek.Ek.class net.zemberek.yapi.ek.EkOzelDurumTipi.class net.zemberek.yapi.ek.EkOzelDurumUretici.class net.zemberek.yapi.ek.EkOzelDurumu.class net.zemberek.yapi.ek.EkUretici.class net.zemberek.yapi.ek.EkUretimBileseni.class net.zemberek.yapi.ek.EkUretimKurali.class net.zemberek.yapi.ek.EkYonetici.class net.zemberek.yapi.ek.OldurganEkOzelDurumu.class net.zemberek.yapi.ek.OnEkOzelDurumu.class net.zemberek.yapi.ek.SonHarfYumusamaOzelDurumu.class net.zemberek.yapi.ek.TemelEkOzelDurumUretici.class net.zemberek.yapi.ek.TemelEkYonetici.class net.zemberek.yapi.ek.XmlEkOkuyucu.class net.zemberek.yapi.ek.ZamanKiOzelDurumu.class net.zemberek.yapi.kok.AraSesliDusmesi.class net.zemberek.yapi.kok.BosHarfDizisiIslemi.class net.zemberek.yapi.kok.Ciftleme.class net.zemberek.yapi.kok.HarfDizisiIslemi.class net.zemberek.yapi.kok.KokOzelDurumBilgisi.class net.zemberek.yapi.kok.KokOzelDurumTipi.class net.zemberek.yapi.kok.KokOzelDurumu.class net.zemberek.yapi.kok.SonHarfDusmesi.class net.zemberek.yapi.kok.SonSesliIncelt.class net.zemberek.yapi.kok.TemelKokOzelDurumBilgisi.class net.zemberek.yapi.kok.Ulama.class net.zemberek.yapi.kok.YeniIcerikAta.class net.zemberek.yapi.kok.Yumusama.class zemberek_tr.properties
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