LANGANA: Okuduğu metinleri anlayıp ilgili soruları
cevaplayan programımda son gelişmeler:
1-
ÖZNE bulma algoritmasının
doğru çalışması için gerekli bir altyapı çalışması-deyim işleme (phrase
processing) tamamlandı. Sorunu şu
şekilde gösterebilirim:
SENTENCE NO = 29 ********************************************************
buf_sub_struct_list()------------------------------------------------------------
29 0 SENTENCE(==>CONJUNCTSUB(
29 0 0 17474 Bağlaç null Fakat null null null
ÖZNE =====> Lennie
29 1 0 0 Özelİsim null Lennie null null null
29 2 0 47231 İsim null su nounExt yun %%=yun%
29 3 0 23943 İsim null iç nounExt ine %%?in%&e
29 4 0 46609 Fiil nsz solu verbExt maya ::-maya:
ÖZNE =====> devam
29 5 0 13169 İsim null devam null null null
29 6 0 17153 Fiil ed verbExt iyordu ::-iyor-du:
29 7 .END-SENTENCE)
buf_verbose_list()------------------------------------------------------------
Fakat Lennie suyun içine solumaya
devam ediyordu
LANGANA metini kelime kelime algıladığı
için ‘devam etmek’ deyiminin belirttiği eylem-fiil yerine ‘devam’ kelimesini ‘isim’
olarak anlıyordu.
Bu hata düzeldiğinde:
SENTENCE NO = 29
********************************************************
buf_sub_struct_list()------------------------------------------------------------
29 0 SENTENCE(==>CONJUNCTSUB(
29 0 0 17474 Bağlaç null Fakat null null null null null null
ÖZNE =====> Lennie
29 1 0 0 Özelİsim null Lennie null null null null null null
29 2 0 47231 İsim null su nounExt yun %%=yun% null null null
29 3 0 23943 İsim null iç nounExt ine %%?in%&e null null null
29 4 0 46609 Fiil nsz solu verbExt maya ::-maya: null null null
29 5 0 13169 İsim null devam null null null begFiil 13169 1
29 6 0 17153 Fiil ed verbExt iyordu ::-iyor-du: endFiil 13169 1
29 7 .END-SENTENCE)
buf_verbose_list()------------------------------------------------------------
Fakat Lennie suyun içine solumaya
devam ediyordu
Farkedilebileceği gibi, çözüm kitaptan
okunmuş metinler veritabanına 3 yeni sütun eklenerek sağlanmıştır. Daha önce parse edilen metinleri veritabanına
yazığımı belirtmiştim. Şimdi GetPhrasesFromDict2.java
adlı bir programla, ana metinin her kelimesini 2’li, 3’lü ve 4’lü gruplar
halinde sözlük veri tabanında arıyorum.
Eğer varsa ana metine ilişkin veri tabanı kayıtlarına eklediğim 3 yeni
sütunu güncelliyerek, örn. ‘bomba gibi patlamak’ deyimi için
‘Phrase’ alanına:
begFiil
Fiil
endFiil
ve ilgili satırlar için bu deyime ilişkin
word_id ve mult_no değerlerini yazıyorum.
Daha sonra, FindSubjectOfSentence9.java
adlı programımda yaptığım bazı değişkliklerle bu ‘Phrase’ sütununu kontrol edip
kelime isimse bile eğer bir deyimin parçası ise onun bir özne parçası
olamayacağına karar veriyorum.
2-
Deyim çalışmasının yararı pek o kadar fazla değil
ya da henüz yalnızca fiil deyimlerini dikkate aldığımdan etkisi pek görünmüyor.
Yeni sonuçlar:
0 - 100. cümleler arasında %72 başarı (eskisi %68)
100 - 200 arasında %71 başarı (eskisi %68)
200 - 300 arasında %63 başarı (eskisi %55)
Hata kaynakları ise şöyleydi:
0 - 100 arasında (22 nesne, 0 deyim, 4
diğer)
100 - 200 arasında (2 zamir, 25 nesne, 0
deyim, 2 uzama)
200 - 300 arasında (31 nesne, 0 deyim, 6
complexity)
3-
Yukarıda görüldüğü gibi
LANGANA’nın başarısı açısından bir dönüm noktasına gelmiş bulunuyorum. NESNE tespitine başlamam ve bunu ÖZNE tespiti
ile birlikte götürmem gerekiyor. 300 –
400. Cümleler arasında da yaptığım inceleme:
300 - 400 arasında (31 nesne, 4 diğer) ile
%59 başarı gösterdi.
SONUÇ: NESNE tespitini başarırsam %90’ın
üzerinde bir başarı elde ederim.
4-
Ayrıca ÖZNE ve NESNE
tespitinde kazandığım tecrübelerin alt cümleler-tümleçlerin tespitine de
yardımcı olacağına inanıyorum.
Tümleçlerin doğru tespiti özellikle Türkçe’de İngilizceye otomatik
tercüme makinası yapımında önemli olacak.
En son fakat en önemsiz olmayan bir nokta:
LANGANAe yani LANGANA’nın İngilizce
versiyonunu yapma çalışmam henüz İngilizce sözlüğü veri tabanına yükleme
aşamasında. 973 bin 872 satırlık eski
bir Webster sözlüğünü parse etmeye başladım.
Z harfi 2500 satır bitti. İşin en
zor aşamasını geçmek üzereyim, Y harfi yaklaşık 2800 satır ve ben 300 satır
civarındayım. Artık parserıma yeni
eklemeler yapmaktan çok reduction-azaltma ve rasyonelleştirmeler yaparak
ilerliyorum. Önemi bir sorun, temel
özellikler aynı kalmakla birlikte bir çok küçük farklı kullanımlar olması. Parser’ın bütün bu farkları yakalaması
gerekiyor-en azından veri tabanında erişilmesi gereken detaylar için...