mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
politeness and disambiguation in Phrasebook (not visible yet)
This commit is contained in:
@@ -2,7 +2,6 @@ abstract Greetings = {
|
||||
|
||||
cat
|
||||
Greeting ;
|
||||
Politeness ;
|
||||
|
||||
fun
|
||||
GHello : Greeting ;
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
}
|
||||
|
||||
20
examples/phrasebook/PhrasebookDisambEng.gf
Normal file
20
examples/phrasebook/PhrasebookDisambEng.gf
Normal 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) ;
|
||||
|
||||
}
|
||||
@@ -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) ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
}
|
||||
|
||||
34
examples/phrasebook/Roles.gf
Normal file
34
examples/phrasebook/Roles.gf
Normal 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
|
||||
} ;
|
||||
}
|
||||
Reference in New Issue
Block a user