mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 11:42:49 -06:00
politeness and disambiguation in Phrasebook (not visible yet)
This commit is contained in:
@@ -2,7 +2,6 @@ abstract Greetings = {
|
|||||||
|
|
||||||
cat
|
cat
|
||||||
Greeting ;
|
Greeting ;
|
||||||
Politeness ;
|
|
||||||
|
|
||||||
fun
|
fun
|
||||||
GHello : Greeting ;
|
GHello : Greeting ;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
concrete GreetingsEng of Greetings = open Prelude in {
|
concrete GreetingsEng of Greetings = open Roles, Prelude in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Greeting, Politeness = SS ;
|
Greeting = SS ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
GHello = ss "hello" ;
|
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 ;
|
flags coding = utf8 ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Greeting, Politeness = SS ;
|
Greeting = RolePhrase ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
GHello = ss "salut" ;
|
GHello = roleNeutral "salut" ;
|
||||||
GThanks = ss "merci" ;
|
GThanks = roleNeutral "merci" ;
|
||||||
GHowAreYou = ss "comment ça va" ;
|
GHowAreYou = roleNeutral "comment ça va" ;
|
||||||
GPleaseGive = ss "s'il vous plaît" ; ---- politeness
|
GPleaseGive = politeDistinct "s'il vous plaît" "s'il te plaît" ;
|
||||||
GExcuse = ss "excusez-moi" ;
|
GExcuse = politeDistinct "excusez-moi" "excuse-moi" ;
|
||||||
GSorry = ss "pardon" ;
|
GSorry = roleNeutral "pardon" ;
|
||||||
GGoodbye = ss "au revoir" ;
|
GGoodbye = roleNeutral "au revoir" ;
|
||||||
GBye = ss "au revoir" ;
|
GBye = roleNeutral "au revoir" ;
|
||||||
GWhatsYourName = ss "comment vous appelez-vous" ; ---- politeness
|
GWhatsYourName =
|
||||||
GNiceToMeetYou = ss "enchanté" ; ---- gender
|
politeDistinct "comment vous appelez-vous" "comment t'appelles-tu" ;
|
||||||
GSeeYouSoon = ss "à bientôt" ;
|
GNiceToMeetYou = speakerDistinct "enchanté" "enchantée" ;
|
||||||
GHelp = ss "au secours" ;
|
GSeeYouSoon = roleNeutral "à bientôt" ;
|
||||||
GLookOut = ss "attention" ;
|
GHelp = roleNeutral "au secours" ;
|
||||||
GGoodMorning = ss "bonjour" ;
|
GLookOut = roleNeutral "attention" ;
|
||||||
GGoodDay = ss "bonjour" ;
|
GGoodMorning = roleNeutral "bonjour" ;
|
||||||
GGoodEvening = ss "bon soir" ;
|
GGoodDay = roleNeutral "bonjour" ;
|
||||||
GGoodNight = ss "bonne nuit" ;
|
GGoodEvening = roleNeutral "bon soir" ;
|
||||||
GImHungry = ss "j'ai faim" ;
|
GGoodNight = roleNeutral "bonne nuit" ;
|
||||||
GImThirsty = ss "j'ai soif" ;
|
GImHungry = roleNeutral "j'ai faim" ;
|
||||||
GImTired = ss "je suis fatigué" ; ---- gender
|
GImThirsty = roleNeutral "j'ai soif" ;
|
||||||
GImScared = ss "j'ai peur" ;
|
GImTired = speakerDistinct "je suis fatigué" "je suis fatiguée" ;
|
||||||
GIdontUnderstand = ss "je ne comprends pas" ;
|
GImScared = roleNeutral "j'ai peur" ;
|
||||||
GWheresTheBathroom = ss "où est la toilette" ;
|
GIdontUnderstand = roleNeutral "je ne comprends pas" ;
|
||||||
GTheCheck = ss "l'addition" ;
|
GWheresTheBathroom = roleNeutral "où est la toilette" ;
|
||||||
|
GTheCheck = roleNeutral "l'addition" ;
|
||||||
|
|
||||||
GYes = ss "oui" ; ---- si
|
GYes = roleNeutral "oui" ; ---- si
|
||||||
GNo = ss "non" ;
|
GNo = roleNeutral "non" ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,16 @@ flags startcat = Phrase ;
|
|||||||
|
|
||||||
cat
|
cat
|
||||||
Phrase ;
|
Phrase ;
|
||||||
|
Politeness ; Gender ; -- abstract parameters
|
||||||
fun
|
fun
|
||||||
PNumeral : Numeral -> Phrase ;
|
PNumeral : Numeral -> Phrase ;
|
||||||
PGreeting : Greeting -> Phrase ;
|
|
||||||
PSentence : Sentence -> 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 =
|
concrete PhrasebookEng of Phrasebook =
|
||||||
GreetingsEng,
|
GreetingsEng,
|
||||||
FoodEng ** open
|
FoodEng ** open
|
||||||
|
(R = Roles),
|
||||||
SyntaxEng,
|
SyntaxEng,
|
||||||
ResEng, ---- for Num to Utt
|
ResEng, ---- for Num to Utt
|
||||||
Prelude in {
|
Prelude in {
|
||||||
@@ -12,12 +13,18 @@ lincat
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
PNumeral n =
|
PNumeral n =
|
||||||
mkPhrase (ss ((SyntaxEng.mkCard <n : Numeral>).s ! Nom)) ; ----
|
mkPhrase ((SyntaxEng.mkCard <n : Numeral>).s ! Nom) ; ----
|
||||||
PGreeting g = mkPhrase g ;
|
|
||||||
PSentence s = s ;
|
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
|
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,
|
GreetingsFre,
|
||||||
FoodFre
|
FoodFre
|
||||||
** open
|
** open
|
||||||
|
(R = Roles),
|
||||||
SyntaxFre,
|
SyntaxFre,
|
||||||
ParadigmsFre,
|
ParadigmsFre,
|
||||||
ResFre, ---- for Num to Utt
|
ResFre, ---- for Num to Utt
|
||||||
@@ -11,13 +12,22 @@ concrete PhrasebookFre of Phrasebook =
|
|||||||
|
|
||||||
lincat
|
lincat
|
||||||
Phrase = Utt ;
|
Phrase = Utt ;
|
||||||
|
Gender = {s : Str ; g : R.Gender} ;
|
||||||
|
Politeness = {s : Str ; p : R.Politeness} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PNumeral n = mkPhrase (ss ((mkCard <n : Numeral>).s ! masculine)) ; ----
|
PNumeral n = mkPhrase ((mkCard <n : Numeral>).s ! masculine) ; ----
|
||||||
PGreeting g = mkPhrase g ;
|
|
||||||
PSentence s = s ;
|
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
|
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