Zemberek-NLP 0.12.0

Uzun bir aradan sonra yoğun bir çalışmanın ardından tüm morfolojik analiz (olası kök ve eklerin bulunması) ve belirsizlik giderici (doğru kök ve ekin seçilmesi) kodunu neredeyse baştan yazıp Zemberek-NLP 0.12.0 sürümünü çıkardık. Bu bizim için önemli bir adım oldu. Önceki Morfoloji modülü, tasarımı gereği karmaşık ve değiştirilmesi güç olduğundan daha ileri çalışmalara geçişe engel oluyordu.  Bu engelin aşılması ile daha hızlı ilerleyebileceğimizi düşünüyoruz.

Bu sürüm, önceki sürümlere göre daha doğru analiz sonuçları üretiyor. Belirsizlik giderim algoritmasının kalitesinin el ile etiketlenmiş veri eklenmesi ile önümüzdeki sürümlerde çok daha iyi olmasını bekliyoruz.

Bundan sonraki sürüm daha çok yeni koddan kaynaklanan hataların gidermesi ve kalitenin arttırılması konusunda olacak. Sonraki sürümlerde bazı yeni fonksiyonlar konusunda çalışmayı düşünüyoruz. Ayrıca Yeni bir LibreOffice eklentisi yazma konusunda da düşüncelerimiz var.

Bağlantı: 0.12.0 Değişiklikler Listesi







30 Nisan 2018

2017

Mehmet'in de katkılarıyla 2016 sonundan itibaren Zemberek-nlp projesi ile -bir aksilik olmazsa- aktif olarak çalışmaya başladım. Umuyorum ilk kararlı 1.0.0 sürümüne bu yıl içerisinde erişeceğiz. Bundan sonraki sürümlere ilişkin bilgileri zaman elverdiğince buradan da yayınlanacağım.

Önemli bir not, önceden yaygın olarak kullanılan Zemberek2  projesi artık geliştirilmeyecektir.

3 Şubat 2017

Zemberek Veda

Mazisi 15 yıla yaklaşan Zemberek projesi üzerinde çalışmayı bırakıyorum. Kod üzerinde zaman zaman değişiklikler yapabilirim ama herhangi bir plan dahilinde olmayacak. Projeye ilgi gösteren ve katkısı olan herkese teşekkür ediyorum. ( https://github.com/ahmetaa/zemberek-nlp )

27 Mart 2015

Zemberek-NLP 0.9.0

Zemberek-NLP 0.9.0 karasız sürümünü çıkardık. Bazı notlar:
  • Zemberek projesinin adı artık Zemberek-NLP. Projenin yeni evi github (https://github.com/ahmetaa/zemberek-nlp)
  • Bu kararsız bir sürümdür. 1.0.0 sürümüne kadar her türlü değişiklik olabilir.
  • Yapısal çözümleme ve üretim konularında pek çok hata yapabilir. 1.0.0'a kadar bu hatalar temizlenecek.
  • Belirsizlik giderici iyi işlemiyor (Kullanılabilir bile diyemeyiz). Bu konuda düşüncelelerimiz var ve çaba göstereceğiz.
  • Örnek kodlar için https://github.com/ahmetaa/turkish-nlp-examples projesini indirip pom.xml dosyasını Intellij IDEA ya da Eclipse ile açıp çalıştırabilirsiniz. Ya da Git-hub üzerinden kod incelenebilir. 
  • Ayrıca bağımsız bir uygulama için jar dosyalarına ve bağımlı olduğu kütüphanelere gtihub üzerinden ya da Google Drive dizininden erişilebilir. 
  • Başka dillerden çözümleme yapma konusunda henüz çalışma yapmadık. 
  • En az Java 7 ile çalışır.
Projeye istediğimiz zamanı ayıramadık, ayıramıyoruz. Bu projenin durduğu anlamına gelmiyor elbette. Elimizden geldiğince devam ettirmeye niyetimiz var. Sadece zamanlar konusunda söz veremiyoruz. Geçen onca yıl içerisinde bu konuda başka çalışmalar da yapıldı. Örneğin zemebrek-NLP projesine de ciddi katkıda bulunan Ali Ok arkadaşımız daha kaliteli kod yapısına sahip olan ve daha iyi çözümleme yaptığına inandığım https://github.com/aliok/trnltk-java projesini de kısa bir süre içerisinde gerçekleştirdi. Başka bir kütüphane ise Çağrı Çöltekin tarafından yazılan https://github.com/coltekin/TRmorph . Kemal Oflazer hocamızın çözümleyicisi ve Haşim Sak'ın çözümleme ye belirsizlik gidericisi yine alternatif olarak kullanılabilir (Açık kodlu olmasa da akademik amaçla kullanılabiliyor.)

Farklı uygulama ve işletim sistemi entegrasyon konusunda çalışma yapmadık. Daha önceden bu konuda emek harcayan arkadaşlarımız (Serkan Kaba, Rail Aliev ve Zeki Bildirici gibi) oldu, kararlı 1.0.0 sürümü sonrasında bu konuda başka arkadaşlar bir şeyler yapacaktır diye umuyoruz. Yine de belki C tabanlı TRMorph gibi bir projenin bu tür uygulamalara koyulması daha kolay olabilir. 

Şahsım adına konuşursam,
Projede daha çok eksik-hata olmasına rağmen ilerleme kousunda itici güç olacağı düşüncesi ile bu sürümü çıkarmak istedim. 2013'ün son dakikalarına yetişti. Projenin pek çok yerinin tekrar yazılması gerekebilir. Orta vadede hedefim çözümleyici mekanizmasını tekrar elden geçirip hatalarını gidermek ve %90 üstü bir başarı ile işleyen bir belirsizlik giderici yapmak ve testleri tamamlamak. Projeye kod yardımı yapmak isteyen arkadaşlara her zaman kapımız açık ancak bunun için 1.0.0'ı  beklemenin daha uygun olacağını düşünüyorum.

1 Ocak 2014

Zemberek-3 Durum

Bu aralar boş bulabildiğimiz zamanlarda (bebekler elverdiğince) Zemberek-3 ile çalışmaya devam ediyoruz. Şu anda temel çözümleme yeteneği kazanmış durumda. Daha yapacak çok iş var. Neler yapıldığına dair bir şeyler yazmak istedim. Bu nedenle Zemberek-2 ve 3 (Z2 ve Z3 diyeceğim yazının diğer kısmında) arasındaki bazı farklardan bahsedeceğim.

Daha akıllı sözlük
Z2 sözlüğü içerisinde kelimelerin her birinde türü ve özel durumları kodlanıyordu. Z3 ile sözlük içerisinde çok daha az etiketleme yapılıyor. Çoğu bilgi otomatik olarak tespit ediliyor.

Bilgiler kod içinde
Aşağıdaki şekilde Z2 ve Z3 çözümleme mekanizmasının kabaca bir hali görülüyor. Z2, çözümleme yapmak için gereken çoğu bilgiyi düz yazı ya da xml dosyalardan alır. Bu başta iyi bir şeymiş gibi görünse de dil içerisindeki istisnaların fazlalığı karmaşık kuralların dış veri üzerinde gösterimini güçleştirdiğinden bu kolaylık bir süre sonra ayak bağı halini almaya başlar. Z3 içinde özellikle ek dizilim ve üretim gibi kuralları aşina olduğumuz kod içerisine almayı yeğledik. Bu bizi karmaşık ve yavaş xml çözümleme işleminden kurtardı ve karmaşık bazı işlemleri kod ile daha rahat yaptık.
Daha doğru bilgi
Z2'nin yapısı bazı ek dizlim kurallarının girilmesini imkansız yapıyordu. Z3 ile daha doğru çözümleme işlemi gerçekleştirileibliyor. Ayrıca diğer çözümleyicilerde yer alan "dönüşümsel sınır - derivational boundary" adı verilen kelime türü geçiş bilgisi de yer alabilecek

Kelimeler Çizgesi (Lexicon Graph)
Z3'ün Z2'den asıl farkı sistemin çözümleme mekanizmasının basitleştirilmesi. Z2 çözümleme mekanizması son derece karışık ve tabiri caizse amele idi ( Çözümleme kodunun sadece bir parçası ). Z3 ile daha önce yapılan başka Türkçe ayrıştırıcıların (Kemal Oflazer'in çalışması gibi) yapısına benzer bir mekanizma oluşturuldu . Z3, tüm sözlük ve ek bilgilerini kullanıp büyük bir çizge (Graf) yapısı oluşturuyor. Bu yapı içindeki düğümlerde köklerin ve eklerin farklı formları ve birbirlerine nasıl bağlandıkları bilgisi yer alıyor. Bu çizgeyi üretmek oldukça karmaşık bir iş. Ama bir kere bu üretildi mi bunun üzerinden çözümleme ya da üretim yapmak çok daha basit bir kod ile mümkün (Optimize edilmemiş bir parser kodu örneği).

Dinamik çizge
En azından belirli seviyede çizge oluşum yapısının dinamik olmasını istiyoruz. Yani sisteme çalışma anında Kök ya da kısıtlı da olsa ek bilgisi eklenebilecek ya da çıkarılabilecek.

Çözümleme ve başka programlama dilleri
Z3'ün bir avantajı da çözümleme işleminin farklı programlama dilleri ile de yapılmasına izin vermesi. Çizge bilgisi bir kez üretildikten sonra az bir gayret ile (yine de kod yazmak gerekiyor.) farklı programlama dilleri ile çözümleme ya da imla denetimi gibi işlemler yapılabilir. Şimdilik çizge bilgisini farklı bir formatta kaydetmeyip doğrudan Java içerisinden kullandığımız için bu özellik henüz mevcut değil.

Hız
Z3'ün Z2 ve diğer tüm Türkçe analiz yazılımlarından çok daha hızlı çözümleme yapmasını bekliyoruz.

Uyumluluk
Diğer çözümleme formatlarına (Özellikle K. Oflazer'in sistemi ile) büyük oranda doğru dönüşüm yapmasını istiyoruz.

İngilizce :(
Z3 kodu içerisindeki terimler İngilizce olacak. Z2 Türkçe yazılmıştı ancak bunun pek bir kazancı olmadı, hatta yabancıların kodu anlamasını imkansızlaştırdı. Onun yerine kod içerisindeki kelimeleri İngilizce yazıp çift dilde döküman yazmayı yeğleyeceğiz.

Diğer Türk dilleri
Z3 sadece Türkiye Türkçesi için çalışacak. Başka bir dilin eklenmesi güç değil ama şu anki ana amacımız bu değil.

10 Nisan 2011

Zemberek 3

Uzun süren uykudan sonra Mehmet ile birlikte ilerde Zemberek 3'e dönüşebilecek bir çalışmaya başladık. Sonu nasıl gelir bilmem. Aklımıza gelen şeyleri yığdığımız bütünlüğü olmayan gayri resmi bir doküman yazmaya başladık.


11 Eylül 2010

Kelime hataları

Zemberek içerisinde olmayan ya da hatalı olan kelime köklerini ortaya çıkarmak için gazete haberlerinden derlenmiş oldukça büyük bir derlem (350 milyon kelime civarında) üzerinden basit kelime frekans bilgileri çıkarırdım. Sonuçlar TDK (internet sayfası, güncel sözlük) referans alarak kontrol edildiğinde ortaya çıkan bazı bilgiler:

iki yüz kereden fazla geçen bin beş yüzden fazla kelime TDK genel sözlüğünde yer almıyor.

Yabancı kelimeler (frekans sırasına gore):
euro, ribaunt, rock, stand, online, neo, biyo, gay, kriminal, sendikasyon, provokatif, punk, ultra, tekno, depresif, blog, akredite, siber, manipüle, psikiyatrik, istihbari, gribal, östrojen, konjonktürel, reflü, marker, spam, segment, depresan, tiroid, outlet, bonus, kompakt, botoks, omega, reality, romatizmal, modifiye, pivot, domine, cover, aktivist, proaktif, anksiyete, genital, terörize, oligarşik, libor, enfekte, teatral, popstar, kanola, pandemik, mental, apne, hegemonik, minimalist, kote, modernite, entellektüel, elitist, jazz, kondisyoner, chip, protest, etnisite, senkronize, detoks, network, editoryal, pasifize, stilize, pitbull, reforme, draft, psiko, modunda, konteynır, kardiyovasküler, militer, onore, avangard, influenza, ekber, hamd, digital, retro, tabloid, paparazzi, enstalasyon, pilates, spa, paramiliter, moderatör, fiziken, maksimize, bowling, manik, jammer, marin, embriyonik, finansör, brunch, risotto, volatilite, panelvan, serotonin, psikanalitik, hatchback, residence, manipülatif, playboy, premium, magazinel, fiks, coupe, glisemik, otokratik, koleksiyoner, speküle, lokasyon, hologram, karaoke
Bu kelimelerden bir kısmı tıbbi terimler olduğu için kullanılabilir (östrojen, tiroid gibi). Bir kısmı belki eklenebilir (kanola, hologram, karaoke gibi ).

Bazı yabancı kelimeler ise genel sözlükte yer bulmuş, çoğu durumda sadece türkçe eşleniğine referans verilmiş.

mortgage:tutulu satış, motive, aktivite, sektörel, stoper, hit:liste başı, provoke, medyatik, dokunmatik:dokunmalı, kaotik, rehabilite, promil, single:tekli, chat:sanal sohbet, travmatik, inovasyon:yenileşim, fitness:sağlıklı yaşam, küratör, sistemik, kruvaziyer, gey, eko, kümülatif, heteroseksüel, tork, multimedya, tolere, metafor, panoramik, virtüöz, politize, ötanazi, perküsyon, gurme, charter:dolmuş uçak, reformist, sprinter, idol, kuantum, rating, türbülans:burgaç, kredibilite, feminen:kadınsı, mamografi, stabil, osteoporoz, ritüel, suşi, melamin, guru, krampon, idealize,floresan:Florışıl, sinematografik, ontolojik, realizasyon, opsiyonel, kreatif, peeling:soyum, antiviral, optimal, lümpen, holigan, trekking, radyolojik, metaforik, obsesif, nevrotik, plaza, endoskopik, monşer, mantalite, metroseksüel, semitizm, liposuction, stratejist, regülasyon, formel, alzaymır, dekoder,

Her ne kadar yerleşmiş olsalar da bu kelimelerin büyük kısmı sözlüğe hiç alınmayabilirmiş.
Bir iki türetilmiş yeni kelime tutmuş gibi ama çok az sayıda. 200 kullanıma erişebilen tek kelime tutsat idi.
En yaygın yazım yanlışları birleşik kelimelerle ilgili. Bu konu tartışmalı ama TDK referans alındığında hatalı kullanımlardan sadece bir kısmı:

doğalgaz, işadamı, işyeri, yanısıra, eşzamanlı, herşey, hammadde, varolmak, evsahibi, sevketmek, pekçok, karayolu, havayolu, demiryolu, eşgüdüm, içiçe, elele, terketmek, tersyüz, aslolan, özgüven, farketmek, eşanlamlı, terketmek, sözümona, safkan, uluorta.

Bazı yaygın kelime hataları (sadece küçük bir kısmı):

içerde, dışardan, orda, nerdeyse, suiistimal, nerde, mahçup, ünvan, tamamiyle, aksesuvar, orjinal, müşahade, bazan, kasedi, taksidi, burdan, nesile, yukarda, traş, veliahtı, diyaloga, kampus, tabiki, rüştünü, yanlız, ağıza, şahadet, ağbi, üzerleri, bişey, umrunda, tereddüte, açıkca, üstad, fiziken, esamisi, dersane, antreman, tevbe, hemşeri, cüppe, gönüle, konservatuar, repertuar, döküman, küsür, kolestrol, diyerekten, zaafiyet, takiyye, alıcam, alırkan, aralıka, barışcı, başlıyan...

Alüminyum kelimesini doğru yazana rastlamak oldukça güç. aliminyum, alimünyum, aluminyum şeklinde kullanılmış.

Bazı kelimeler TDK'da yok ama olmasını beklerdim: kaale, istihbari, takdiren, cansiperane, gibi.

Bunlardan baska Zemberek'te olmayan ya da hatalı yazılmış pek çok kelime de ortaya çıktı.



1 Mayıs 2010

Yapisal cozumleme adaptoru

Bu aralar Zemberek ile Kemal Oflazer hocanin yapisal analiz cikti formati arasinda donusum yapacak bir adaptor uzerinde calisiyorum. Oflazer hoca gercekten titiz bir calisma yapmis, Zemberek uzerinde bir iki degisiklik gerceklestirmek gerekebilecek gibi. Kabul edilebilir bir basari ile aralarinda donusumu gerceklestirecek yapinin kurulmasinin mumkun olabilecek.
Bu konuda yeni bir yazi yazacagim ama sadece donusumdeki zorluklarin gorulmesi acisindan asagidaki ornegin yeterli olacagini dusunuyorum. "yemek" kelimesinin fiil cozumu icin asagidaki cikislar veriliyor
Zemberek: ye:FIIL+FIIL_MASTAR_MEK
Oflazer : ye+Verb+Pos^DB+Noun+Inf1+A3sg+Pnon+Nom


6 Eylül 2009

Chrome Turkce imla denetimi


Google Chrome tarayicisi icin Turkce imla denetimi konusunda Google muhendislerinden Mehmet Akin ve Hironori Bono ile kucuk bir calisma yapmistik (Issue 4782). Imla denetim mekanizmasi olarak Zemberek degil, Zemberek kullanilarak urettigimiz tr-spell projesinden ortaya cikan Hunspell formatindaki bir sozluk kullanildi. Turkce imla denetimi destegi henuz su anki kararli surumlerde yer almiyor. Ama beta kanalini aktiflestirdiginizde gelen guncellemeler ile (2.0.166 sonrasi surumler) Turkce imla denetimi destegi calisir hale geliyor.

12 Mayıs 2009

Twitter Auto Publish Powered By : XYZScripts.com