mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-16 08:19:31 -06:00
multimodal for whole resource API
This commit is contained in:
39
lib/resource-1.0/multimodal/Multi.gf
Normal file
39
lib/resource-1.0/multimodal/Multi.gf
Normal file
@@ -0,0 +1,39 @@
|
||||
--1 Multimodal additions to the resource grammar library
|
||||
|
||||
abstract Multi = Lang ** {
|
||||
|
||||
cat
|
||||
|
||||
-- Entrypoint for speech recognition - suppresses clicks.
|
||||
|
||||
Speech ;
|
||||
|
||||
-- The entrypoint to sequencialized multimodal input is $Phr$.
|
||||
|
||||
-- The pointing gesture (click) type.
|
||||
|
||||
Point ;
|
||||
|
||||
fun
|
||||
|
||||
-- The top function to send an utterance to speech recognizer.
|
||||
|
||||
SpeechUtt : PConj -> Utt -> Voc -> Speech ;
|
||||
|
||||
-- Demonstratives.
|
||||
|
||||
this8point_NP : Point -> NP ;
|
||||
that8point_NP : Point -> NP ;
|
||||
these8point_NP : Point -> NP ;
|
||||
those8point_NP : Point -> NP ;
|
||||
here8point_Adv : Point -> Adv ;
|
||||
here7to8point_Adv : Point -> Adv ;
|
||||
here7from8point_Adv : Point -> Adv ;
|
||||
this8point_Quant : Point -> Quant ;
|
||||
that8point_Quant : Point -> Quant ;
|
||||
|
||||
-- Building points from strings.
|
||||
|
||||
MkPoint : String -> Point ;
|
||||
|
||||
}
|
||||
29
lib/resource-1.0/multimodal/MultiEng.gf
Normal file
29
lib/resource-1.0/multimodal/MultiEng.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
--# -path=.:../english:../abstract:../common:prelude
|
||||
|
||||
-- --# -path=.:present:prelude
|
||||
|
||||
concrete MultiEng of Multi =
|
||||
LangEng - [
|
||||
NP, Adv, Det, Comp, VP, Cl, QCl, S, SC, QS, Imp, Utt, -- Cat
|
||||
QuantSg, QuantPl, Quant,
|
||||
---- Slash, RC, AP, CN missing
|
||||
DetCN, UsePN, UsePron, PredetNP, PPartNP, AdvNP, -- Noun
|
||||
DetSg, DetPl, SgQuant, PlQuant, PossPron, DefArt, IndefArt, MassDet,
|
||||
PositAdvAdj, PrepNP, ComparAdvAdj, ComparAdvAdjS, AdAdv, SubjS, AdvSC, AdnCAdv,
|
||||
UseV, ComplV2, ComplV3, ComplVV, ComplVS, ComplVQ, ComplVA, ComplV2A,
|
||||
ReflV2, UseComp, PassV2, AdvVP, AdVVP, CompAP, CompNP, CompAdv,
|
||||
PredVP, PredSCVP, ImpVP, EmbedS, EmbedQS, EmbedVP, UseQCl, UseCl,
|
||||
QuestCl, QuestVP, QuestIAdv, QuestIComp, QuestSlash,
|
||||
PhrUtt, UttS, UttQS, UttImpSg, UttImpPl, UttNP, UttAdv, UttVP,
|
||||
UttIAdv, UttIP,
|
||||
ConjS, ConjNP, ConjAdv, DConjS, DConjNP, DConjAdv,
|
||||
everybody_NP, everything_NP, somebody_NP, something_NP, that_NP, these_NP,
|
||||
this_NP, those_NP, one_Quant, that_Quant, this_Quant,
|
||||
everywhere_Adv, here_Adv, here7to_Adv, here7from_Adv,
|
||||
somewhere_Adv, there_Adv, there7to_Adv, there7from_Adv,
|
||||
every_Det, few_Det, many_Det, much_Det, someSg_Det, somePl_Det,
|
||||
ImpersCl, GenericCl, ExistNP, ExistIP, ProgrVP,
|
||||
already_Adv, far_Adv, now_Adv
|
||||
]
|
||||
** MultiI with
|
||||
(Lang = LangEng) ;
|
||||
177
lib/resource-1.0/multimodal/MultiI.gf
Normal file
177
lib/resource-1.0/multimodal/MultiI.gf
Normal file
@@ -0,0 +1,177 @@
|
||||
--# -path=.:present:prelude
|
||||
|
||||
incomplete concrete MultiI of Multi =
|
||||
Lang - [
|
||||
NP, Adv, VP, Cl, QCl, S, SC, QS, Imp, Utt, -- Cat
|
||||
DetCN, UsePN, UsePron, PredetNP, PPartNP, AdvNP, -- Noun
|
||||
PositAdvAdj, PrepNP, ComparAdvAdj, ComparAdvAdjS, AdAdv, SubjS, AdvSC, AdnCAdv,
|
||||
ComplV2, ComplV3, ComplVV,
|
||||
PredVP,
|
||||
UseCl,
|
||||
PhrUtt, UttS, UttQS, UttImpSg, UttImpPl, UttNP, UttAdv, UttVP
|
||||
]
|
||||
** open (Lang = Lang) in {
|
||||
|
||||
lincat
|
||||
NP = Lang.NP ** {point : Str} ;
|
||||
Adv = Lang.Adv ** {point : Str} ;
|
||||
Det = Lang.Det ** {point : Str} ;
|
||||
Comp= Lang.Comp** {point : Str} ;
|
||||
VP = Lang.VP ** {point : Str} ;
|
||||
Cl = Lang.Cl ** {point : Str} ;
|
||||
QCl = Lang.QCl ** {point : Str} ;
|
||||
S = Lang.S ** {point : Str} ;
|
||||
SC = Lang.SC ** {point : Str} ;
|
||||
QS = Lang.QS ** {point : Str} ;
|
||||
Imp = Lang.Imp ** {point : Str} ;
|
||||
Utt = Lang.Utt ** {point : Str} ;
|
||||
Quant = Lang.Quant ** {point : Str} ;
|
||||
QuantSg = Lang.QuantSg ** {point : Str} ;
|
||||
QuantPl = Lang.QuantPl ** {point : Str} ;
|
||||
|
||||
Point = {point : Str} ;
|
||||
Speech = {s : Str} ;
|
||||
|
||||
lin
|
||||
DetCN det cn = Lang.DetCN det cn ** {point = det.point} ;
|
||||
UsePN pn = Lang.UsePN pn ** noPoint ;
|
||||
UsePron pn = Lang.UsePron pn ** noPoint ;
|
||||
PredetNP p np = Lang.PredetNP p np ** {point = np.point} ;
|
||||
PPartNP np v = Lang.PPartNP np v ** {point = np.point} ;
|
||||
AdvNP np adv = Lang.AdvNP np adv ** {point = np.point ++ adv.point} ;
|
||||
DetSg qu o = Lang.DetSg qu o ** {point = qu.point} ;
|
||||
DetPl qu n o = Lang.DetPl qu n o ** {point = qu.point} ;
|
||||
SgQuant qu = Lang.SgQuant qu ** {point = qu.point} ;
|
||||
PlQuant qu = Lang.PlQuant qu ** {point = qu.point} ;
|
||||
PossPron p = Lang.PossPron p ** noPoint ;
|
||||
DefArt = Lang.DefArt ** noPoint ;
|
||||
IndefArt = Lang.IndefArt ** noPoint ;
|
||||
MassDet = Lang.MassDet ** noPoint ;
|
||||
|
||||
PositAdvAdj a = Lang.PositAdvAdj a ** noPoint ;
|
||||
PrepNP p np = Lang.PrepNP p np ** {point = np.point} ;
|
||||
ComparAdvAdj ca a np = Lang.ComparAdvAdj ca a np ** {point = np.point} ;
|
||||
ComparAdvAdjS ca a s = Lang.ComparAdvAdjS ca a s ** {point = s.point} ;
|
||||
AdAdv ad a = Lang.AdAdv ad a ** {point = a.point} ;
|
||||
SubjS su s = Lang.SubjS su s ** {point = s.point} ;
|
||||
AdvSC sc = AdvSC sc ** {point = sc.point} ;
|
||||
|
||||
UseV v = Lang.UseV v ** noPoint ;
|
||||
ComplV2 v np = Lang.ComplV2 v np ** {point = np.point} ;
|
||||
ComplV3 v np p = Lang.ComplV3 v np p ** {point = np.point ++ p.point} ;
|
||||
ComplVV v vp = Lang.ComplVV v vp ** {point = vp.point} ;
|
||||
ComplVS v s = Lang.ComplVS v s ** {point = s.point} ;
|
||||
ComplVQ v s = Lang.ComplVQ v s ** {point = s.point} ;
|
||||
ComplVA v ap = Lang.ComplVA v ap ** noPoint ; ----
|
||||
ComplV2A v np ap = Lang.ComplV2A v np ap ** {point = np.point} ; ---- ap
|
||||
ReflV2 v = Lang.ReflV2 v ** noPoint ;
|
||||
UseComp c = Lang.UseComp c ** {point = c.point} ;
|
||||
PassV2 v = Lang.PassV2 v ** noPoint ;
|
||||
AdvVP vp ad = Lang.AdvVP vp ad ** {point = vp.point ++ ad.point} ;
|
||||
AdVVP ad vp = Lang.AdVVP ad vp ** {point = vp.point} ;
|
||||
CompAP v = Lang.CompAP v ** noPoint ;
|
||||
CompNP c = Lang.CompNP c ** {point = c.point} ;
|
||||
CompAdv c = Lang.CompAdv c ** {point = c.point} ;
|
||||
|
||||
PredVP np vp = Lang.PredVP np vp ** {point = np.point ++ vp.point} ;
|
||||
PredSCVP sc vp = Lang.PredSCVP sc vp ** {point = sc.point ++ vp.point} ;
|
||||
ImpVP vp = Lang.ImpVP vp ** {point = vp.point} ;
|
||||
EmbedS s = Lang.EmbedS s ** {point = s.point} ;
|
||||
EmbedQS s = Lang.EmbedQS s ** {point = s.point} ;
|
||||
EmbedVP s = Lang.EmbedVP s ** {point = s.point} ;
|
||||
UseCl t a p cl = Lang.UseCl t a p cl ** {point = cl.point} ;
|
||||
UseQCl t a p cl = Lang.UseQCl t a p cl ** {point = cl.point} ;
|
||||
|
||||
QuestCl cl = Lang.QuestCl cl ** {point = cl.point} ;
|
||||
QuestVP ip cl = Lang.QuestVP ip cl ** {point = cl.point} ;
|
||||
QuestIAdv ip cl = Lang.QuestIAdv ip cl ** {point = cl.point} ;
|
||||
QuestIComp ip cl = Lang.QuestIComp ip cl ** {point = cl.point} ;
|
||||
QuestSlash ip cl = Lang.QuestSlash ip cl ** noPoint ;
|
||||
|
||||
UttS s = Lang.UttS s ** {point = s.point} ;
|
||||
UttQS s = Lang.UttQS s ** {point = s.point} ;
|
||||
UttImpSg p s = Lang.UttImpSg p s ** {point = s.point} ;
|
||||
UttImpPl p s = Lang.UttImpPl p s ** {point = s.point} ;
|
||||
UttNP s = Lang.UttNP s ** {point = s.point} ;
|
||||
UttAdv s = Lang.UttAdv s ** {point = s.point} ;
|
||||
UttVP s = Lang.UttVP s ** {point = s.point} ;
|
||||
UttIP s = Lang.UttIP s ** noPoint ;
|
||||
UttIAdv s = Lang.UttIAdv s ** noPoint ;
|
||||
|
||||
---- to be completed with point
|
||||
ConjS c xs = Lang.ConjS c xs ** noPoint ;
|
||||
ConjNP c xs = Lang.ConjNP c xs ** noPoint ;
|
||||
ConjAdv c xs = Lang.ConjAdv c xs ** noPoint ;
|
||||
DConjS c xs = Lang.DConjS c xs ** noPoint ;
|
||||
DConjNP c xs = Lang.DConjNP c xs ** noPoint ;
|
||||
DConjAdv c xs = Lang.DConjAdv c xs ** noPoint ;
|
||||
|
||||
ImpersCl vp = Lang.ImpersCl vp ** {point = vp.point} ;
|
||||
GenericCl vp = Lang.GenericCl vp ** {point = vp.point} ;
|
||||
ExistNP np = Lang.ExistNP np ** {point = np.point} ;
|
||||
ExistIP ip = Lang.ExistIP ip ** noPoint ;
|
||||
ProgrVP vp = Lang.ProgrVP vp ** {point = vp.point} ;
|
||||
|
||||
everybody_NP = Lang.everybody_NP ** noPoint ;
|
||||
everything_NP = Lang.everything_NP ** noPoint ;
|
||||
somebody_NP = Lang.somebody_NP ** noPoint ;
|
||||
something_NP = Lang.something_NP ** noPoint ;
|
||||
that_NP = Lang.that_NP ** noPoint ;
|
||||
these_NP = Lang.these_NP ** noPoint ;
|
||||
this_NP = Lang.this_NP ** noPoint ;
|
||||
those_NP = Lang.those_NP ** noPoint ;
|
||||
one_Quant = Lang.one_Quant ** noPoint ;
|
||||
that_Quant = Lang.that_Quant ** noPoint ;
|
||||
this_Quant = Lang.this_Quant ** noPoint ;
|
||||
|
||||
everywhere_Adv = Lang.everywhere_Adv ** noPoint ;
|
||||
here_Adv = Lang.here_Adv ** noPoint ;
|
||||
here7to_Adv = Lang.here7to_Adv ** noPoint ;
|
||||
here7from_Adv = Lang.here7from_Adv ** noPoint ;
|
||||
somewhere_Adv = Lang.somewhere_Adv ** noPoint ;
|
||||
there_Adv = Lang.there_Adv ** noPoint ;
|
||||
there7to_Adv = Lang.there7to_Adv ** noPoint ;
|
||||
there7from_Adv = Lang.there7from_Adv ** noPoint ;
|
||||
every_Det = Lang.every_Det ** noPoint ;
|
||||
few_Det = Lang.few_Det ** noPoint ;
|
||||
many_Det = Lang.many_Det ** noPoint ;
|
||||
much_Det = Lang.much_Det ** noPoint ;
|
||||
someSg_Det = Lang.someSg_Det ** noPoint ;
|
||||
somePl_Det = Lang.somePl_Det ** noPoint ;
|
||||
|
||||
already_Adv = Lang.already_Adv ** noPoint ;
|
||||
far_Adv = Lang.far_Adv ** noPoint ;
|
||||
now_Adv = Lang.now_Adv ** noPoint ;
|
||||
|
||||
|
||||
--2 New constructs
|
||||
|
||||
--3 interface to top level
|
||||
|
||||
PhrUtt pc utt voc = {
|
||||
s = Predef.toStr Phr (Lang.PhrUtt pc utt voc) ++ ";" ++ utt.point
|
||||
} ;
|
||||
|
||||
SpeechUtt pc utt voc = {
|
||||
s = Predef.toStr Phr (Lang.PhrUtt pc utt voc)
|
||||
} ;
|
||||
|
||||
--3 Demonstratives
|
||||
|
||||
this8point_NP p = LangEng.this_NP ** p ;
|
||||
that8point_NP p = LangEng.that_NP ** p ;
|
||||
these8point_NP p = LangEng.these_NP ** p ;
|
||||
those8point_NP p = LangEng.those_NP ** p ;
|
||||
here8point_Adv p = Lang.here_Adv ** p ;
|
||||
here7to8point_Adv p = Lang.here7to_Adv ** p ;
|
||||
here7from8point_Adv p = Lang.here7from_Adv ** p ;
|
||||
this8point_Quant p = LangEng.this_Quant ** p ;
|
||||
that8point_Quant p = LangEng.that_Quant ** p ;
|
||||
|
||||
|
||||
MkPoint s = {point = s.s} ;
|
||||
|
||||
oper
|
||||
noPoint = {point = []} ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user