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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# -*- 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:
1 2 3 4 5 6 7 8 9 10 |
/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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
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