Saturday, 3 March 2018

LANGANAt Turkish Parser Ver b004 intro

Geliştirmekte olduğum, LANGANAt Türkçe dil ayrıştırıcısı(parser)
4. beta versiyonunun çıktısı aşağıda.
Bu örnekler 2094 tane cümleden oluşan Steinbeck'in İhtiyar Adam
ve Deniz adlı kitabının Türkçe tercümesinin tümünü, bu kitabın tümünü
içermektedir.

Niyetim, en kısa zamanda Türkçe Parser'ını bitirmek fakat işin doğası
gereği gecikmeler oluyor.

4. beta sürümünde şunları yaptım.
1- Konuşma dilinde geçen Sıfat fiiller.
'Bu kapı ne güzel!'
2- Her nesne ve öznenin ilgili fiil/fiilimsilerinin tesbiti.
3- Konuşma dilinde geçen Emir, Şart fiillerinin fiilden türetilen
isimlerden ayırt edilmesi
4- işlevsel ve gruplayıcı virgül, ve, diğer bağlaçların ayrımı.

İhtiyar Adam ve Deniz yaklaşık 22 bin kelime ve 2100 cümleden oluşuyor.
Hedefim 100 kelime, 80-90 cümle hatasını yakalamak.  Yani kelime olarak binde 5,
cümle olarak yüzde 4.  Bu sürüme ilişkin çıktıyı Source Forge sayfamdan erişebilirsiniz.

Bu arada, Türkçe parser'ı kullanarak oluşturulabilecek ürünler de belirmeye başladı.
Örneğin hukuk dava dosyalarında 1000'lerce sayfa içinden tutarsızlıkların bulunması.
Devlet müttesebatında değişikliklerin takibi için iki yazının içerik olarak karşılaştırılması.

Parser aşaması bittikten sonra şunların yapılması gerekecek:
1. Türkçe deyim listesi ve sözlüğü
2. Türkçe corpus
3. Türkçe semantic ağaç

Aşağıda bazı örnekleri ve Source Forge'ta bütün çıktıyı bulabilirsiniz.
(Not: Sourceforge virus saldırısına uğramış.  Düzelir düzelmez 4. beta çıktısının
tümünü yayınlayacağım.  Aşağıda üç tane çarpıcı devrik cümle örneği var.)

sentence= 14<<****************************dumpSentenceAsText
Balık tutmasını yaşlı adam öğretmişti çocuğa, çok severdi çocuk onu.

sentence= 14<<----------------------------higher analysis="" p="" parse="" struct="">0 1 Balık  İsim   (f_önü tutmasını   *? ref ) \Nesne\    \possible Özne\
1 2 tutmasını  İsim->Nesne  -fiilimsi -sını    (f_önü öğretmişti  %tr.intr. *o ref ) \Nesne\ 
2 4 yaşlı adam  Sıfat Tamlaması (f_önü öğretmişti  %tr.intr. *o ref ) \Nesne\    \possible Özne\
4 5 öğretmişti Fiil %tr.intr. *o
5 6 çocuğa  İsim->Dolaylı Tümleç -ğa 
5 6 , postPunctuation <<< comma#=1 verb#=1 verbal#=1 noun#=2
6 7 çok  Zarf
7 8 severdi Fiil %tr.intr. *o
8 9 çocuk  İsim  ( severdi  %tr.intr. *o ref ) \possible Nesne\    \possible Özne\
9 10 onu  Zamir->Nesne  -u    ( severdi  %tr.intr. *o ref ) \morpho Nesne\ 
9 10 .crlf postPunctuation <<< dot#=1 verb#=1 verbal#=1 noun#=1

sentence= 14<<----------------------------morphologic analysis="" p="">177 14   0 Balık
Balık-->balık
R is. ===>Balık balık
178 14   1 tutmasını
N is. ===>tutmasını   =tutma -sını ^Noun->Noun 
179 14   2 yaşlı
R sf. ===>yaşlı
180 14   3 adam
R is. ===>adam
181 14   4 öğretmişti
V f. ===>öğretmişti   =öğret -mişti ^DiliMişliGeçmiş %tr.intr.
182 14   5 çocuğa,
N is. ===>çocuğa   =çocuk -ğa ^Noun->Noun 
183 14   6 çok
R zf. sf. ===>çok
184 14   7 severdi
V f. ===>severdi   =sev -erdi ^GenişDiliGeçmiş %tr.intr.
185 14   8 çocuk
R is. ===>çocuk
186 14   9 onu.
R zm. ===>onu   o [n] -u

******************************************************


sentence= 1561<<****************************dumpSentenceAsText
 Parmakları açılmış bir elden daha genişti bu çizgiler ve bir periskoptaki aynalar gibi ayrılmış görünüyordu gözleri ya da bir dinsel alayın içindeki aziz.

sentence= 1561<<----------------------------higher analysis="" p="" parse="" struct="">0 1 Parmakları  İsim->Nesne  -ı -lar    (f_önü açılmış  %tr.intr. *o refverbalPOS=0 ) \Nesne\
1 2 açılmış Fiil->Edilgen  %tr.intr. *o
2 4 bir elden  Zarf Tümleci
4 5 daha  Zarf
5 6 genişti Fiil İsim/Sıfat Türevi  %intr.  *o
6 8 bu çizgiler  Sıfat Tamlaması  -ler   ( genişti  %intr. *o ref )     \possible Özne\
8 9 ve Bağlaç
9 11 bir periskoptaki  Sıfat Tamlaması->İsim  -daki/deki
11 12 aynalar  İsim  -lar   (f_önü ayrılmış  %dat.intr. *o refverbalPOS=0 ) \Nesne\   \possible Özne\
12 13 gibi  Zarf
13 14 ayrılmış Fiil %dat.intr.
14 15 görünüyordu Fiil %intr. *o
15 16 gözleri  İsim  -leri   ( görünüyordu  %intr. *o ref ) \possible Nesne\    \possible Özne\
16 17 ya Bağlaç
17 18 da Bağlaç
18 21 bir dinsel alayın  Sıfat Tamlaması->İsim  -fiilimsi verbalPOS=1-ın/in/un/ün  %intr.
21 23 içindeki aziz  Sıfat Tamlaması (    ref ) \possible Nesne\    \possible Özne\
22 23 . postPunctuation <<< dot#=1 verb#=4 verbal#=1 noun#=4

sentence= 1738<<****************************dumpSentenceAsText
 Geniş, yassı, kürek biçimi kafalarını ve beyaz çizgili geniş yüzgeçlerini görebiliyordu şimdi, iğrenç, pis kokulu, leş kargası katillerdi bu köpek balıkları, aç kaldıkları zaman sandalın dümenini, küreğini ısırırlardı.

sentence= 1738<<----------------------------higher analysis="" p="" parse="" struct="">0 1 Geniş  Sıfat
0 1 , postPunctuation <<< comma#=1 verb#=0 verbal#=0 noun#=0<<< comma#=1 verb#=0 verbal#=0
1 2 yassı  Sıfat
1 2 , postPunctuation <<< comma#=1 verb#=0 verbal#=0 noun#=0<<< comma#=2 verb#=0 verbal#=0
2 5 kürek biçimi kafalarını  İsim Tamlaması->Nesne -ini/ını/ğını/ğini/sını/sini  ( görebiliyordu  %tr.intr. *o ref ) \morpho Nesne\ 
5 6 ve Bağlaç
6 8 beyaz çizgili  Sıfat Tamlaması->Edat Tümleci -lı/li/lu/lü
8 10 geniş yüzgeçlerini  Sıfat Tamlaması->Nesne -ini/ını/ğını/ğini/sini/sını  (f_önü görebiliyordu  %tr.intr. *o ref ) \Nesne\ 
10 11 görebiliyordu Fiil %tr.intr. *o
11 12 şimdi  Zarf-Zaman Zarf
11 12 , postPunctuation <<< comma#=1 verb#=1 verbal#=0 noun#=0<<< comma#=3 verb#=1 verbal#=0
12 13 iğrenç  Sıfat
12 13 , postPunctuation <<< comma#=1 verb#=0 verbal#=0 noun#=0<<< comma#=4 verb#=0 verbal#=0
13 15 pis kokulu  Sıfat Tamlaması->Edat Tümleci -lı/li/lu/lü
14 15 , postPunctuation <<< comma#=1 verb#=0 verbal#=0 noun#=0<<< comma#=5 verb#=0 verbal#=0
15 17 leş kargası  İsim Tamlaması -sı/si/su/sü   \possible Özne\ ( katillerdi  %intr. *o ref )
17 18 katillerdi Fiil İsim/Sıfat Türevi  %intr.  *onlar
18 21 bu köpek balıkları  Sıfat Tamlaması->Nesne -ları   ( katillerdi  %intr. *o ref )     \possible Özne\
20 21 , postPunctuation <<< comma#=1 verb#=1 verbal#=0 noun#=1<<< comma#=6 verb#=1 verbal#=0
21 22 aç  Zarf
22 24 kaldıkları zaman  Zarf-Zaman Zarf Tümleci
24 25 sandalın  İsim->Tamlayan  -ın 
25 26 dümenini  İsim->Nesne  -ini    ( ısırırlardı  %tr. *o ref ) \morpho Nesne\ 
25 26 , postPunctuation <<< comma#=1 verb#=0 verbal#=0 noun#=0<<< comma#=7 verb#=0 verbal#=0
26 27 küreğini  İsim->Nesne  -ğini    (f_önü ısırırlardı  %tr. *o ref ) \Nesne\ 
27 28 ısırırlardı Fiil %tr. *o
27 28 . postPunctuation <<< dot#=1 verb#=1 verbal#=0 noun#=0<<< dot#=1 verb#=1 verbal#=0