politeness and disambiguation in Phrasebook (not visible yet)

This commit is contained in:
aarne
2010-03-24 08:18:54 +00:00
parent 68482aa7e9
commit 3ff870dcd6
8 changed files with 115 additions and 38 deletions

View File

@@ -2,7 +2,6 @@ abstract Greetings = {
cat
Greeting ;
Politeness ;
fun
GHello : Greeting ;

View File

@@ -1,7 +1,7 @@
concrete GreetingsEng of Greetings = open Prelude in {
concrete GreetingsEng of Greetings = open Roles, Prelude in {
lincat
Greeting, Politeness = SS ;
Greeting = SS ;
lin
GHello = ss "hello" ;

View File

@@ -1,38 +1,39 @@
concrete GreetingsFre of Greetings = open Prelude in {
concrete GreetingsFre of Greetings = open Roles,Prelude in {
flags coding = utf8 ;
lincat
Greeting, Politeness = SS ;
Greeting = RolePhrase ;
lin
GHello = ss "salut" ;
GThanks = ss "merci" ;
GHowAreYou = ss "comment ça va" ;
GPleaseGive = ss "s'il vous plaît" ; ---- politeness
GExcuse = ss "excusez-moi" ;
GSorry = ss "pardon" ;
GGoodbye = ss "au revoir" ;
GBye = ss "au revoir" ;
GWhatsYourName = ss "comment vous appelez-vous" ; ---- politeness
GNiceToMeetYou = ss "enchanté" ; ---- gender
GSeeYouSoon = ss "à bientôt" ;
GHelp = ss "au secours" ;
GLookOut = ss "attention" ;
GGoodMorning = ss "bonjour" ;
GGoodDay = ss "bonjour" ;
GGoodEvening = ss "bon soir" ;
GGoodNight = ss "bonne nuit" ;
GImHungry = ss "j'ai faim" ;
GImThirsty = ss "j'ai soif" ;
GImTired = ss "je suis fatigué" ; ---- gender
GImScared = ss "j'ai peur" ;
GIdontUnderstand = ss "je ne comprends pas" ;
GWheresTheBathroom = ss "où est la toilette" ;
GTheCheck = ss "l'addition" ;
GHello = roleNeutral "salut" ;
GThanks = roleNeutral "merci" ;
GHowAreYou = roleNeutral "comment ça va" ;
GPleaseGive = politeDistinct "s'il vous plaît" "s'il te plaît" ;
GExcuse = politeDistinct "excusez-moi" "excuse-moi" ;
GSorry = roleNeutral "pardon" ;
GGoodbye = roleNeutral "au revoir" ;
GBye = roleNeutral "au revoir" ;
GWhatsYourName =
politeDistinct "comment vous appelez-vous" "comment t'appelles-tu" ;
GNiceToMeetYou = speakerDistinct "enchanté" "enchantée" ;
GSeeYouSoon = roleNeutral "à bientôt" ;
GHelp = roleNeutral "au secours" ;
GLookOut = roleNeutral "attention" ;
GGoodMorning = roleNeutral "bonjour" ;
GGoodDay = roleNeutral "bonjour" ;
GGoodEvening = roleNeutral "bon soir" ;
GGoodNight = roleNeutral "bonne nuit" ;
GImHungry = roleNeutral "j'ai faim" ;
GImThirsty = roleNeutral "j'ai soif" ;
GImTired = speakerDistinct "je suis fatigué" "je suis fatiguée" ;
GImScared = roleNeutral "j'ai peur" ;
GIdontUnderstand = roleNeutral "je ne comprends pas" ;
GWheresTheBathroom = roleNeutral "où est la toilette" ;
GTheCheck = roleNeutral "l'addition" ;
GYes = ss "oui" ; ---- si
GNo = ss "non" ;
GYes = roleNeutral "oui" ; ---- si
GNo = roleNeutral "non" ;
}

View File

@@ -7,10 +7,16 @@ flags startcat = Phrase ;
cat
Phrase ;
Politeness ; Gender ; -- abstract parameters
fun
PNumeral : Numeral -> Phrase ;
PGreeting : Greeting -> Phrase ;
PSentence : Sentence -> Phrase ;
PGreeting : Greeting -> Phrase ;
---- PGreeting : Politeness -> Gender -> Gender -> Greeting -> Phrase ;
-- politeness level, speaker, hearer
Polite, Familiar : Politeness ;
Male, Female : Gender ;
}

View File

@@ -0,0 +1,20 @@
--# -path=.:present
concrete PhrasebookDisambEng of Phrasebook =
PhrasebookEng - [PGreeting, Polite, Familiar, Male, Female] ** open
(R = Roles),
Prelude in {
lin
PGreeting p s h g = mkPhrase
(g.s ++ p.s ++ "(by" ++ s.s ++ ")" ++ "(to" ++ h.s ++ ")") ;
Male = {s = "a man" ; g = R.Male} ;
Female = {s = "a woman" ; g = R.Female} ;
Polite = {s = "(polite)" ; p = R.Polite} ;
Familiar = {s = "(familiar)" ; p = R.Familiar} ;
--oper
-- mkPhrase : Str -> Utt = \s -> lin Utt (ss s) ;
}

View File

@@ -3,6 +3,7 @@
concrete PhrasebookEng of Phrasebook =
GreetingsEng,
FoodEng ** open
(R = Roles),
SyntaxEng,
ResEng, ---- for Num to Utt
Prelude in {
@@ -12,12 +13,18 @@ lincat
lin
PNumeral n =
mkPhrase (ss ((SyntaxEng.mkCard <n : Numeral>).s ! Nom)) ; ----
PGreeting g = mkPhrase g ;
mkPhrase ((SyntaxEng.mkCard <n : Numeral>).s ! Nom) ; ----
PSentence s = s ;
PGreeting g = mkPhrase g.s ;
---- PGreeting p s h g = mkPhrase (g.s ++ p.s ++ s.s ++ h.s) ;
Male = {s = [] ; g = R.Male} ;
Female = {s = [] ; g = R.Female} ;
Polite = {s = [] ; p = R.Polite} ;
Familiar = {s = [] ; p = R.Familiar} ;
oper
mkPhrase : SS -> Utt = \s -> lin Utt s ;
mkPhrase : Str -> Utt = \s -> lin Utt (ss s) ;
}

View File

@@ -4,6 +4,7 @@ concrete PhrasebookFre of Phrasebook =
GreetingsFre,
FoodFre
** open
(R = Roles),
SyntaxFre,
ParadigmsFre,
ResFre, ---- for Num to Utt
@@ -11,13 +12,22 @@ concrete PhrasebookFre of Phrasebook =
lincat
Phrase = Utt ;
Gender = {s : Str ; g : R.Gender} ;
Politeness = {s : Str ; p : R.Politeness} ;
lin
PNumeral n = mkPhrase (ss ((mkCard <n : Numeral>).s ! masculine)) ; ----
PGreeting g = mkPhrase g ;
PNumeral n = mkPhrase ((mkCard <n : Numeral>).s ! masculine) ; ----
PSentence s = s ;
PGreeting g = mkPhrase (g.s ! R.Polite ! R.Male ! R.Male) ;
---- PGreeting p s h g = mkPhrase (g.s ! p.p ! s.g ! h.g ++ p.s ++ s.s ++ h.s) ;
Male = {s = [] ; g = R.Male} ;
Female = {s = [] ; g = R.Female} ;
Polite = {s = [] ; p = R.Polite} ;
Familiar = {s = [] ; p = R.Familiar} ;
oper
mkPhrase : SS -> Utt = \s -> lin Utt s ;
mkPhrase : Str -> Utt = \s -> lin Utt (ss s) ;
}

View File

@@ -0,0 +1,34 @@
resource Roles = {
param
Gender = Male | Female ;
Politeness = Polite | Familiar ;
oper
RolePhrase : Type = {s : Politeness => Gender => Gender => Str} ;
politeDistinct : (_,_ : Str) -> RolePhrase = \pol,fam -> {
s = table {
Polite => \\_,_ => pol ;
Familiar => \\_,_ => fam
}
} ;
speakerDistinct : (_,_ : Str) -> RolePhrase = \mal,fem -> {
s = \\p,s,h => case s of {
Male => mal ;
Female => fem
}
} ;
hearerDistinct : (_,_ : Str) -> RolePhrase = \mal,fem -> {
s = \\p,s,h => case h of {
Male => mal ;
Female => fem
}
} ;
roleNeutral : Str -> RolePhrase = \s -> {
s = \\_,_,_ => s
} ;
}