summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-03-24 08:18:54 +0000
committeraarne <aarne@chalmers.se>2010-03-24 08:18:54 +0000
commit3ff870dcd652b793f359a661112f4af3ccd0bedd (patch)
tree3a07aceb6392696cbf003e928f45a4d1005a8090
parent68482aa7e9882ab8d65fb5fe261efc0e807f6dfd (diff)
politeness and disambiguation in Phrasebook (not visible yet)
-rw-r--r--examples/phrasebook/Greetings.gf1
-rw-r--r--examples/phrasebook/GreetingsEng.gf4
-rw-r--r--examples/phrasebook/GreetingsFre.gf57
-rw-r--r--examples/phrasebook/Phrasebook.gf8
-rw-r--r--examples/phrasebook/PhrasebookDisambEng.gf20
-rw-r--r--examples/phrasebook/PhrasebookEng.gf13
-rw-r--r--examples/phrasebook/PhrasebookFre.gf16
-rw-r--r--examples/phrasebook/Roles.gf34
8 files changed, 115 insertions, 38 deletions
diff --git a/examples/phrasebook/Greetings.gf b/examples/phrasebook/Greetings.gf
index de7c6f064..11d0f9cc1 100644
--- a/examples/phrasebook/Greetings.gf
+++ b/examples/phrasebook/Greetings.gf
@@ -2,7 +2,6 @@ abstract Greetings = {
cat
Greeting ;
- Politeness ;
fun
GHello : Greeting ;
diff --git a/examples/phrasebook/GreetingsEng.gf b/examples/phrasebook/GreetingsEng.gf
index 6ed3ff947..5f3cc23e7 100644
--- a/examples/phrasebook/GreetingsEng.gf
+++ b/examples/phrasebook/GreetingsEng.gf
@@ -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" ;
diff --git a/examples/phrasebook/GreetingsFre.gf b/examples/phrasebook/GreetingsFre.gf
index 1db9f6080..32f422f3c 100644
--- a/examples/phrasebook/GreetingsFre.gf
+++ b/examples/phrasebook/GreetingsFre.gf
@@ -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" ;
}
diff --git a/examples/phrasebook/Phrasebook.gf b/examples/phrasebook/Phrasebook.gf
index 05b777954..f5f5a4663 100644
--- a/examples/phrasebook/Phrasebook.gf
+++ b/examples/phrasebook/Phrasebook.gf
@@ -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 ;
}
diff --git a/examples/phrasebook/PhrasebookDisambEng.gf b/examples/phrasebook/PhrasebookDisambEng.gf
new file mode 100644
index 000000000..17212ae6f
--- /dev/null
+++ b/examples/phrasebook/PhrasebookDisambEng.gf
@@ -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) ;
+
+}
diff --git a/examples/phrasebook/PhrasebookEng.gf b/examples/phrasebook/PhrasebookEng.gf
index ee919d285..4d4b26781 100644
--- a/examples/phrasebook/PhrasebookEng.gf
+++ b/examples/phrasebook/PhrasebookEng.gf
@@ -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) ;
}
diff --git a/examples/phrasebook/PhrasebookFre.gf b/examples/phrasebook/PhrasebookFre.gf
index 662f5aade..7cf812466 100644
--- a/examples/phrasebook/PhrasebookFre.gf
+++ b/examples/phrasebook/PhrasebookFre.gf
@@ -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) ;
}
diff --git a/examples/phrasebook/Roles.gf b/examples/phrasebook/Roles.gf
new file mode 100644
index 000000000..f8f9c4aea
--- /dev/null
+++ b/examples/phrasebook/Roles.gf
@@ -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
+ } ;
+}