İlk olarak
aşağıdaki metni wordAnalyzer modülüne veriyorsunuz.
ARS Ankaraya
gitti.
ARS
Ispartaya gitti.
Anın
güzelliği.
Kelime
analizi yapan modül bir sözlük yardımı ile aşağıdaki çıktıyı üretiyor.
Noun(ARS)
Noun(Ankara,ya) Verb(git,ti)
Noun(ARS)
Noun(Isparta,ya) Verb(git,miş)
Noun(an,ın)
Noun(güzel,liği)
Kelime
analiz programını hemen hemen bitirmiş durumdayım. Çok ince dil oyunları
üzerinde bir miktar daha çalışmam gerek.
Fakat ana yapı hazır, ince düzeltmeler gerekli. Bir örnek olarak
Anın
güzelliği. Kelimelerinin çıktısı:
test00.txt
0--------------------------------------->---------------->
root=an
wordid="2178"mult-no="0"word_type="İsim"
SENSE INFO
="an","2178","0",1,"H","İsim"
--------------------------->----------------------------->
===>ExtIsNounExtension-->root=an
ext---> %% % &ın
0--------------------------------------->---------------->
root=an
wordid="2488"mult-no="0"word_type="-i"
SENSE INFO
="anmak","2488","0",1,"E","-i"
"anmak","2488","0",3,"E","-i"
--------------------------->----------------------------->
===>ExtIsVerbExtension-->root=an
ext--->+ın :: :
0--------------------------------------->---------------->
root=anı wordid="2363"mult-no="0"word_type="İsim"
SENSE INFO
="an?","2363","0",1,"H","İsim"
--------------------------->----------------------------->
===>ExtIsNounExtension-->root=anı
ext---> %% % &n
0--------------------------------------->---------------->
root=güzel
wordid="21164"mult-no="0"word_type="İsim"
SENSE INFO
="güzel","21164","0",10,"H","İsim"
"güzel","21164","0",11,"H","İsim"
--------------------------->----------------------------->
===>ExtIsNounExtension-->root=güzel
ext--->#liğ %% % &i
0--------------------------------------->---------------->
root=güzel
wordid="21164"mult-no="0"word_type=
SENSE INFO
="güzel","21164","0",2,"H",
"güzel","21164","0",3,"H",
"güzel","21164","0",4,"H",
"güzel","21164","0",5,"H",
"güzel","21164","0",6,"H",
"güzel","21164","0",7,"H",
"güzel","21164","0",8,"H",
--------------------------->----------------------------->
===>ExtIsNounExtension-->root=güzel
ext--->#liğ %% % &i
0--------------------------------------->---------------->
root=güzelliğ wordid="21179"mult-no="0"word_type=
SENSE INFO =
--------------------------->----------------------------->
===>ExtIsNounExtension-->root=güzelliğ
ext---> %% % &i
Dikkat
ederseniz sözlükten farklı anlamları da alabiliyorum gerekirse...
Daha sonra soru
müşteriden alınır. Bu sorular:
Ali nereye
gitti?
Neyin
güzelliği?
Bu kısmı
elle yaptım. Fakat alınan soru yine
wordAnalyzer – kelime analizi modülünden geçirilmeli.
Daha sonra
bu çıktı kullanılarak sorular oluşturulmalı ve answerMachine.jj içine bu kod
import edilmeli. Şimdilik bunları elle
yaptım fakat programla yapmak yalnızca mekanik bir yük ve zaman meselesi.
Soruları answerMachine.jj
içine alınca:
void WhereDidAliGo() :
{System.out.println("WhereDidAliGo(");Token
t;}
{
"Noun("
t=<WORD> {System.out.println("===> " +
t.image);}
")"
{System.out.println(")");}
WhiteSpace()
"Noun("
t=<WORD> {System.out.println("===> " +
t.image);}
","
(t=<YA> {System.out.println("===> "
+ t.image);}
)*
")"
{System.out.println(")");}
WhiteSpace()
"Verb("
t=<WORD> {System.out.println("===> " +
t.image);}
( ","
t=<WORD>
{System.out.println("===> " + t.image);}
)*
")"
{System.out.println(")");}
WhiteSpace()
}
void NeyinGuzelligi() :
{System.out.println("Neyin
güzelliği?");Token t;}
{
"Noun("
t=<WORD> {System.out.println("===> " +
t.image);}
","
(t=<IN> {System.out.println("===> "
+ t.image);}
)*
")"
{System.out.println(")");}
WhiteSpace()
"Noun("
t=<GUZEL> {System.out.println("===> " +
"güzelliği");}
(
","
","
t=<LIGI>
{System.out.println("===> " + t.image);}
)*
")"
{System.out.println(")");}
WhiteSpace()
}
Çıktısı: Soruların cevabı:
********************test01.txt********************
WhereDidAliGo(
===> ARS
)
\s
===> Ankara
===> ya
)
\s
===> git
===> ti
)
\s
\r
\n
WhereDidAliGo(
===> ARS
)
\s
===> Isparta
===> ya
)
\s
===> git
===> miş
)
\r
\n
Neyin güzelliği?
===> an
===> ın
)
\s
===> güzel
===> liği
)
\r
\n
Yukarıda görüldüğü gibi 'Anın' kelimesinin üç farklı anlamı vardır.
an-ın aidiyet eki 'ın' ile an isimi
anın fiil kökü an ve emir eki 'ın'
anı-n isim kökü anı ve 2. tekil şahıs aidiyet eki 'ın'
Program 'Neyin' sorusunu isim ve aidiyet ekine dönüştürerek bu güçlüğü aşıyor.
Not:Kısacası bu iş burada gözüktüğü kadar basit ve kolay değil.