thai questions and negations

This commit is contained in:
aarne
2007-01-21 20:41:35 +00:00
parent b768aa780f
commit edbfc31000
15 changed files with 196 additions and 122 deletions

View File

@@ -39,12 +39,12 @@ concrete TravelTha of Travel = open Prelude in {
MkSpeaker = cc2 ;
MkHearer _ _ = ss [] ;
Male = ss "k2rab" ;
Female = ss "k2T1a" ;
Male = ss "k2ra.b" ;
Female = ss "k2T1a." ;
Single, Many = ss [] ;
Hello = ss ["swa.s di:"] ;
Hello = ss ["swas di:"] ;
Thanks = ss ["k1Ob k2un'"] ;
IWant = prefixSS "eOa:" ;
@@ -64,7 +64,7 @@ concrete TravelTha of Travel = open Prelude in {
Five = ss "ha:" ;
Ten = ss "sib" ;
Mango = cls ["ma mT1wg"] "lu:k" ;
Mango = cls ["ma. mT1wg"] "lu:k" ;
Green = ss ["si: ek1i:yw"] ;
oper

View File

@@ -1,7 +1,9 @@
--concrete AdverbTha of Adverb = CatTha ** open ResTha, Prelude in {
--
-- lin
-- PositAdvAdj a = {s = a.s ! AAdv} ;
concrete AdverbTha of Adverb = CatTha **
open ResTha, StringsTha, Prelude in {
lin
PositAdvAdj a = a ;
-- ComparAdvAdj cadv a np = {
-- s = cadv.s ++ a.s ! AAdv ++ "than" ++ np.s ! Nom
-- } ;
@@ -18,4 +20,4 @@
--
-- AdnCAdv cadv = {s = cadv.s ++ "than"} ;
--
--}
}

View File

@@ -4,24 +4,24 @@ concrete CatTha of Cat = CommonX ** open ResTha, Prelude in {
lincat
---- Tensed/Untensed
--
-- S = {s : Str} ;
-- QS = {s : QForm => Str} ;
-- Tensed/Untensed
S = {s : Str} ;
QS = {s : QForm => Str} ;
-- RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
--
---- Sentence
--
-- Cl = {s : Tense => Anteriority => CPolarity => Order => Str} ;
Cl = {s : Polarity => Str} ;
-- Slash = {
-- s : Tense => Anteriority => CPolarity => Order => Str ;
-- c2 : Str
-- } ;
-- Imp = {s : CPolarity => ImpForm => Str} ;
Imp = {s : Polarity => Str} ;
--
---- Question
--
-- QCl = {s : Tense => Anteriority => CPolarity => QForm => Str} ;
QCl = {s : Polarity => Str} ;
-- IP = {s : Case => Str ; n : Number} ;
-- IComp = {s : Str} ;
-- IDet = {s : Str ; n : Number} ;
@@ -33,15 +33,8 @@ concrete CatTha of Cat = CommonX ** open ResTha, Prelude in {
--
---- Verb
--
-- VP = {
-- s : Tense => Anteriority => CPolarity => Order => Agr => {fin, inf : Str} ;
-- prp : Str ; -- present participle
-- inf : Str ; -- infinitive
-- ad : Str ;
-- s2 : Agr => Str
-- } ;
--
-- Comp = {s : Agr => Str} ;
VP = ResTha.VP ;
Comp = ResTha.VP ;
--
---- Adjective
--
@@ -66,12 +59,12 @@ concrete CatTha of Cat = CommonX ** open ResTha, Prelude in {
-- Subj = {s : Str} ;
-- Prep = {s : Str} ;
--
---- Open lexical classes, e.g. Lexicon
--
-- V, VS, VQ, VA = Verb ; -- = {s : VForm => Str} ;
-- V2, V2A = Verb ** {c2 : Str} ;
-- V3 = Verb ** {c2, c3 : Str} ;
-- VV = {s : VVForm => Str ; isAux : Bool} ;
-- Open lexical classes, e.g. Lexicon
V, VS, VQ, VA = Verb ;
V2, V2A = Verb ** {c2 : Str} ;
V3 = Verb ** {c2, c3 : Str} ;
VV = VVerb ;
--
-- A = {s : AForm => Str} ;
-- A2 = {s : AForm => Str ; c2 : Str} ;

View File

@@ -4,13 +4,13 @@ concrete GrammarTha of Grammar =
NounTha,
VerbTha,
AdjectiveTha,
-- AdverbTha,
AdverbTha,
NumeralTha,
SentenceTha,
-- QuestionTha,
QuestionTha,
-- RelativeTha,
-- ConjunctionTha,
-- PhraseTha,
PhraseTha,
-- TextX,
StructuralTha,
-- IdiomTha

View File

@@ -85,7 +85,7 @@ lin
-- glove_N = regN "glove" ;
-- gold_N = regN "gold" ;
-- good_A = mkADeg "good" "well" "better" "best" ;
go_V = ss pay_s ;
go_V = regV pay_s ;
-- green_A = regADeg "green" ;
-- harbour_N = regN "harbour" ;
-- hate_V2 = dirV2 (regV "hate") ;
@@ -113,7 +113,7 @@ lin
-- long_A = regADeg "long" ;
-- lose_V2 = dirV2 (irregV "lose" "lost" "lost") ;
-- love_N = regN "love" ;
love_V2 = ss rak_s ;
love_V2 = dirV2 (regV rak_s) ;
-- man_N = mk2N "man" "men" ;
-- married_A2 = mkA2 (regA "married") toP ;
-- meat_N = regN "meat" ;
@@ -167,7 +167,7 @@ lin
-- short_A = regADeg "short" ;
-- silver_N = regN "silver" ;
-- sister_N = regN "sister" ;
-- sleep_V = (irregV "sleep" "slept" "slept") ;
sleep_V = resV noon_s lap_s ;
-- small_A = regADeg "small" ;
-- snake_N = regN "snake" ;
-- sock_N = regN "sock" ;

View File

@@ -1,24 +1,24 @@
--concrete PhraseTha of Phrase = CatTha ** open Prelude, ResTha in {
--
-- lin
-- PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
--
-- UttS s = s ;
-- UttQS qs = {s = qs.s ! QDir} ;
-- UttImpSg pol imp = {s = pol.s ++ imp.s ! contrNeg True pol.p ! ImpF Sg False} ;
-- UttImpPl pol imp = {s = pol.s ++ imp.s ! contrNeg True pol.p ! ImpF Pl False} ;
-- UttImpPol pol imp = {s = pol.s ++ imp.s ! contrNeg True pol.p ! ImpF Sg True} ;
--
-- UttIP ip = {s = ip.s ! Nom} ; --- Acc also
-- UttIAdv iadv = iadv ;
-- UttNP np = {s = np.s ! Acc} ;
-- UttVP vp = {s = infVP False vp (agrP3 Sg)} ;
-- UttAdv adv = adv ;
--
-- NoPConj = {s = []} ;
-- PConjConj conj = conj ;
--
-- NoVoc = {s = []} ;
-- VocNP np = {s = "," ++ np.s ! Nom} ;
--
--}
concrete PhraseTha of Phrase = CatTha ** open Prelude, ResTha in {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttQS qs = {s = qs.s ! QDir} ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p} ;
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p} ; --- add politeness here?
UttIP ip = ip ;
UttIAdv iadv = iadv ;
UttNP np = np ;
UttVP vp = {s = vp.s ! Pos} ;
UttAdv adv = adv ;
NoPConj = {s = []} ;
PConjConj conj = conj ;
NoVoc = {s = []} ;
VocNP np = {s = np.s} ; ---- ??
}

View File

@@ -1,17 +1,14 @@
--concrete QuestionTha of Question = CatTha ** open ResTha, Prelude in {
--
-- flags optimize=all_subs ;
--
-- lin
--
-- QuestCl cl = {
-- s = \\t,a,p =>
-- let cls = cl.s ! t ! a ! p
-- in table {
-- QDir => cls ! OQuest ;
-- QIndir => "if" ++ cls ! ODir
-- } ---- "whether" in ExtTha
-- } ;
concrete QuestionTha of Question = CatTha **
open ResTha, StringsTha, Prelude in {
flags optimize=all_subs ;
lin
-- pos. may, neg. chay may - not always the proper forms ---
QuestCl cl = {s = \\p => cl.s ! Pos ++ polStr chay_s p ++ m'ay_s} ;
--
-- QuestVP qp vp =
-- let cl = mkClause (qp.s ! Nom) {n = qp.n ; p = P3} vp
@@ -41,4 +38,4 @@
--
-- CompIAdv a = a ;
--
--}
}

View File

@@ -7,7 +7,7 @@
---- implement $Test$, it moreover contains regular lexical
---- patterns needed for $Lex$.
--
resource ResTha = ParamX ** open Prelude in {
resource ResTha = ParamX ** open StringsTha, Prelude in {
oper
@@ -21,7 +21,44 @@ resource ResTha = ParamX ** open Prelude in {
Determiner = {s1, s2 : Str ; hasC : Bool} ;
mkDet : Str -> Str -> Determiner = \s,c -> {s1 = s ; s2 = c ; hasC = True} ;
mkDet : Str -> Str -> Determiner =
\s,c -> {s1 = s ; s2 = c ; hasC = True} ;
-- Part before and after negation (mai_s)
Verb = {s1,s2 : Str} ;
resV : Str -> Str -> Verb = \s,c -> {s1 = s ; s2 = c} ;
regV : Str -> Verb = \s -> resV [] s ;
dirV2 : Verb -> Verb ** {c2 : Str} = \v -> v ** {c2 = []} ;
-- Auxiliary verbs, according to order and negation.
-- The three types are $VV may VP | may VV VP | VP may VV$
param VVTyp = VVPre | VVMid | VVPost ;
oper VVerb = {s : Str ; typ : VVTyp} ;
-- Verb phrases: form negation and question, too.
VP = {
s : Polarity => Str
} ;
mkVP : Verb -> VP = \v -> {
s = \\p => v.s1 ++ polStr may_s p ++ v.s2
} ;
insertObject : Str -> VP -> VP = \np,vp -> {
s = \\p => vp.s ! p ++ np
} ;
polStr : Str -> Polarity -> Str = \m,p -> case p of {
Pos => [] ;
Neg => m
} ;
-- flags optimize=all ;
--

View File

@@ -1,15 +1,20 @@
concrete SentenceTha of Sentence = CatTha ** open Prelude, ResTha in {
concrete SentenceTha of Sentence = CatTha **
open Prelude, StringsTha, ResTha in {
flags optimize=all_subs ;
lin
PredVP = cc2 ;
PredVP np vp = {s = \\p => np.s ++ vp.s ! p} ;
-- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
ImpVP vp = vp ;
ImpVP vp = {
s = table {
Pos => vp.s ! Pos ++ si_s ;
Neg => yaa_s ++ vp.s ! Pos
}
} ;
-- SlashV2 np v2 =
-- mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ;
--
@@ -29,8 +34,12 @@ concrete SentenceTha of Sentence = CatTha ** open Prelude, ResTha in {
-- EmbedQS qs = {s = qs.s ! QIndir} ;
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
--
-- UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! ODir} ;
-- UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! q} ;
UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! p.p} ;
UseQCl t a p cl = {
s = \\q => t.s ++ a.s ++ p.s ++
case q of {QIndir => waa_s ; _ => []} ++
cl.s ! p.p
} ;
-- UseRCl t a p cl = {
-- s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! ctr p.p ! r ;
-- c = cl.c

View File

@@ -7,8 +7,10 @@ resource StringsTha = {
oper
baan_s = "บ้าน" ; -- house
ca_s = "จะ" ; -- Modal
cet_s = "เจ็ด" ; -- seven
chan_s = "ฉัน" ; -- I
chay_s = "ไช่" ; -- be-not
et_s = "เอ็ด" ; -- one'
haa_s = "ห้า" ; -- five
hay_s = "ให้" ; -- give
@@ -18,28 +20,40 @@ khaw_s = "เขว" ; -- he
khon_s = "คน" ; -- people Classif
khoog_s = "ของ" ; -- Possessive
khun_s = "คุณ" ; -- you
lag_s = "หลัง" ; -- houses Classif
lag_s = "หลัง" ; -- houses Classif
lap_s = "หลับ" ; -- sleep2
lem_s = "เล่ม" ; -- books Classif
may_s = "ไม" ; -- not
m'ay_s = "ไหม" ; -- Question
mvvn_s = "หมื่น" ; -- ten thousand
nag_s = "หนง" ; -- book1
nan_s = "นั้" ; -- that
nag_s = "หนง" ; -- book1
nan_s = "นั้" ; -- that
noon_s = "นอน" ; -- sleep1
nvg_s = "หนึง" ; -- one
pay_s = "ไป" ; -- go
peet_s = "แปด" ; -- eight
pen_s = "เป็น" ; -- be
phan_s = "พน" ; -- thousand
pen_s = "เป็น" ; -- be, can-know
phan_s = "พน" ; -- thousand
puu_s = "ผู้" ; -- woman1
rak_s = "รัก" ; -- love
raw_s = "เรา" ; -- we
rooy_s = "ร้อย" ; -- hundred
saam_s = "สาม" ; -- three
seen_s = "แสน" ; -- hundred thousand
si_s = "ซิ" ; -- Imperative
sii_s = "สี่" ; -- four
sip_s = "สิบ" ; -- ten
soog_s = "สอง" ; -- two
svv_s = "สือ" ; -- book2
thii_s = "ที่" ; -- Ord
tog_s = "ต้อง" ; -- must
waa_s = "ว่า" ; -- that Conj
way_s = "ไหว" ; -- can-potent
yaa_s = "อยา" ; -- Neg Imper
yaak_s = "อยาก" ; -- want
yay_s = "ใหญ" ; -- big
yig_s = "หญิง" ; -- woman2
yii_s = "ยี่" ; -- two'
}

View File

@@ -7,8 +7,10 @@ resource StringsTha = {
oper
baan_s = "bT2a:n" ; -- house
ca_s = "ca." ; -- Modal
cet_s = "ecSd" ; -- seven
chan_s = "c1a.n" ; -- I
chan_s = "c1an" ; -- I
chay_s = "a&c2T1" ; -- be-not
et_s = "eOSd" ; -- one'
haa_s = "hT2a:" ; -- five
hay_s = "a%hT2" ; -- give
@@ -18,28 +20,40 @@ khaw_s = "ek1w" ; -- he
khon_s = "k2n" ; -- people Classif
khoog_s = "k1Og" ; -- Possessive
khun_s = "k2un'" ; -- you
lag_s = "hla.g" ; -- houses Classif
lag_s = "hlag" ; -- houses Classif
lap_s = "hlab" ; -- sleep2
lem_s = "elT1m" ; -- books Classif
may_s = "a&m" ; -- not
m'ay_s = "a&hm" ; -- Question
mvvn_s = "hmv:T1n" ; -- ten thousand
nag_s = "hna.g" ; -- book1
nan_s = "na.T2" ; -- that
nan_s = "naT2n" ; -- that
noon_s = "nOn" ; -- sleep1
nvg_s = "hnvg" ; -- one
pay_s = "a&p" ; -- go
peet_s = "e'pd" ; -- eight
pen_s = "epSn" ; -- be
pen_s = "epSn" ; -- be, can-know
phan_s = "p2an" ; -- thousand
puu_s = "p1u:T2" ; -- woman1
rak_s = "ra.k" ; -- love
rak_s = "rak" ; -- love
raw_s = "era:" ; -- we
rooy_s = "rT2Oy" ; -- hundred
saam_s = "sa:m" ; -- three
seen_s = "e'sn" ; -- hundred thousand
si_s = "s'i" ; -- Imperative
sii_s = "si:T1" ; -- four
sip_s = "sib" ; -- ten
soog_s = "sOg" ; -- two
svv_s = "sv:O" ; -- book2
thii_s = "t5i:T1" ; -- Ord
tog_s = "tT2Og" ; -- must
waa_s = "wT1a:" ; -- that Conj
way_s = "a&hw" ; -- can-potent
yaa_s = "Oya:" ; -- Neg Imper
yaak_s = "Oya:k" ; -- want
yay_s = "a%hy'" ; -- big
yig_s = "hy'ig" ; -- woman2
yii_s = "yi:T1" ; -- two'
}

View File

@@ -1,5 +1,5 @@
concrete StructuralTha of Structural = CatTha **
open StringsTha, Prelude in {
open StringsTha, ResTha, Prelude in {
flags optimize=all ;
@@ -19,11 +19,8 @@ concrete StructuralTha of Structural = CatTha **
-- but_PConj = ss "but" ;
-- by8agent_Prep = ss "by" ;
-- by8means_Prep = ss "by" ;
-- can8know_VV, can_VV = {
-- s = table VVForm [["be able to"] ; "can" ; ["been able to"] ;
-- ["being able to"] ; "could" ; "can't" ; "couldn't"] ;
-- isAux = True
-- } ;
can8know_VV = {s = pen_s ; typ = VVPost} ;
can_VV = {s = way_s ; typ = VVPost} ;
-- during_Prep = ss "during" ;
-- either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
-- everybody_NP = regNP "everybody" Sg ;
@@ -50,11 +47,7 @@ concrete StructuralTha of Structural = CatTha **
-- more_CAdv = ss "more" ;
-- most_Predet = ss "most" ;
-- much_Det = mkDeterminer Sg "much" ;
-- must_VV = {
-- s = table VVForm [["have to"] ; "must" ; ["had to"] ;
-- ["having to"] ; ["had to"] ; "mustn't" ; ["hadn't to"]] ; ----
-- isAux = True
-- } ;
must_VV = {s = tog_s ; typ = VVPre} ;
-- no_Phr = ss "no" ;
-- on_Prep = ss "on" ;
-- one_Quant = mkDeterminer Sg "one" ;
@@ -88,8 +81,8 @@ concrete StructuralTha of Structural = CatTha **
-- to_Prep = ss "to" ;
-- under_Prep = ss "under" ;
-- very_AdA = ss "very" ;
-- want_VV = P.mkVV (P.regV "want") ;
-- we_Pron = mkNP "we" "us" "our" Pl P1 ;
want_VV = {s = yaak_s ; typ = VVMid} ;
we_Pron = ss raw_s ;
-- whatPl_IP = mkIP "what" "what" "what's" Sg ;
-- whatSg_IP = mkIP "what" "what" "what's" Sg ;
-- when_IAdv = ss "when" ;

View File

@@ -3,12 +3,23 @@ concrete VerbTha of Verb = CatTha ** open ResTha, StringsTha, Prelude in {
flags optimize=all_subs ;
lin
UseV v = v ;
ComplV2 = cc2 ;
-- ComplV3 v np np2 =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
--
-- ComplVV v vp = insertObj (\\a => infVP v.isAux vp a) (predVV v) ;
UseV = mkVP ;
ComplV2 v np = insertObject (v.c2 ++ np.s) (mkVP v) ;
ComplV3 v np np2 = insertObject (v.c2 ++ np.s ++ v.c3 ++ np2.s) (mkVP v) ;
ComplVV vv vp = {
s = \\p =>
let
neg = polStr may_s p ;
v = vp.s ! Pos
in
case vv.typ of {
VVPre => vv.s ++ neg ++ v ;
VVMid => neg ++ vv.s ++ v ;
VVPost => v ++ neg ++ vv.s
}
} ;
--
-- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
-- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
@@ -27,10 +38,14 @@ concrete VerbTha of Verb = CatTha ** open ResTha, StringsTha, Prelude in {
--
-- PassV2 v = insertObj (\\_ => v.s ! VPPart) (predAux auxBe) ;
--
-- UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no "to"
--
CompAP ap = ap ;
CompNP = prefixSS pen_s ;
-- CompAdv a = {s = \\_ => a.s} ;
--
-- UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ;
CompAP ap = {s = \\p => polStr may_s p ++ ap.s} ;
CompNP np = {s = table {
Pos => pen_s ++ np.s ;
Neg => may_s ++ chay_s ++ np.s
}
} ;
CompAdv a = {s = \\p => polStr may_s p ++ a.s} ; --- ??
}

View File

@@ -46,8 +46,8 @@
0E2D อ O O - M
0E2E ฮ h' h - L
0E2F - - -
0E30 ะ a a
0E31 ั a. a
0E30 ะ a. a
0E31 ั a a
0E32 า a: aa
0E33 ำ a+ am
0E34 ิ i i

View File

@@ -79,7 +79,7 @@ allThaiTrans = words $
"- k k1 - k2 - k3 g c c1 c2 s' c3 y' d' t' " ++
"t1 t2 t3 n' d t t4 t5 t6 n b p p1 f p2 f' " ++
"p3 m y r - l - w s- r' s h l' O h' - " ++
"a a. a: a+ i i: v v: u u: - - - - - - " ++
"a. a a: a+ i i: v v: u u: - - - - - - " ++
"e e' o: a% a& L R S T1 T2 T3 T4 K - - - " ++
"N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 - - - - - - "