mirror of
https://github.com/GrammaticalFramework/comp-syntax-gu-mlt.git
synced 2026-05-11 10:02:51 -06:00
lecture 6 code
This commit is contained in:
26
lectures/lecture06/Foods.gf
Normal file
26
lectures/lecture06/Foods.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
-- (c) 2009 Aarne Ranta under LGPL
|
||||
-- in https://github.com/GrammaticalFramework/gf-contrib/blob/master/foods/Foods.gf
|
||||
--
|
||||
-- modified for the Computational Syntax course in 2021
|
||||
|
||||
abstract Foods = {
|
||||
|
||||
flags startcat = Comment ;
|
||||
|
||||
cat
|
||||
Comment ; -- this Italian pizza is very warm
|
||||
Item ; -- this Italian pizza
|
||||
Kind ; -- Italian pizza
|
||||
Quality ; -- very warm
|
||||
|
||||
fun
|
||||
Pred : Item -> Quality -> Comment ; -- (this pizza) is (very warm)
|
||||
PredNeg : Item -> Quality -> Comment ; -- (this pizza) is not (very warm)
|
||||
This, That, These, Those : Kind -> Item ; -- this|that|these|those (pizza|pizzas)
|
||||
Mod : Quality -> Kind -> Kind ; -- (Italian) (pizza)
|
||||
Very : Quality -> Quality ; -- very (Italian)
|
||||
|
||||
Wine, SparklingWine, Cheese, Fish, Pizza : Kind ;
|
||||
|
||||
Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ;
|
||||
}
|
||||
BIN
lectures/lecture06/Foods.pgf
Normal file
BIN
lectures/lecture06/Foods.pgf
Normal file
Binary file not shown.
31
lectures/lecture06/FoodsEng.gf
Normal file
31
lectures/lecture06/FoodsEng.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete FoodsEng of Foods = open ParadigmsEng, SyntaxEng, LexiconEng in {
|
||||
lincat
|
||||
Quality = AP;
|
||||
Kind = CN;
|
||||
Item = NP ;
|
||||
Comment = S ;
|
||||
|
||||
lin
|
||||
Pred item quality = mkS presentTense positivePol (mkCl item quality);
|
||||
PredNeg item quality = mkS presentTense negativePol (mkCl item quality);
|
||||
That kind = mkNP that_Det kind ;
|
||||
Those kind = mkNP those_Det kind ;
|
||||
These kind = mkNP these_Det kind ;
|
||||
This kind = mkNP this_Det kind ;
|
||||
Mod quality kind = mkCN quality kind ;
|
||||
Very quality = mkAP very_AdA quality ;
|
||||
|
||||
Wine = mkCN wine_N;
|
||||
SparklingWine = mkCN (mkA "sparkling") wine_N ;
|
||||
Cheese = mkCN cheese_N ;
|
||||
Fish = mkCN fish_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
|
||||
Fresh = mkAP (mkA "fresh");
|
||||
Warm = mkAP warm_A;
|
||||
Italian = mkAP (mkA "Italian");
|
||||
Expensive = mkAP (mkA "expensive");
|
||||
Delicious = mkAP (mkA "delicious");
|
||||
Boring = mkAP (mkA "boring");
|
||||
|
||||
}
|
||||
31
lectures/lecture06/FoodsIta.gf
Normal file
31
lectures/lecture06/FoodsIta.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete FoodsIta of Foods = open ParadigmsIta, SyntaxIta, LexiconIta in {
|
||||
lincat
|
||||
Quality = AP;
|
||||
Kind = CN;
|
||||
Item = NP ;
|
||||
Comment = S ;
|
||||
|
||||
lin
|
||||
Pred item quality = mkS presentTense positivePol (mkCl item quality);
|
||||
PredNeg item quality = mkS presentTense negativePol (mkCl item quality);
|
||||
That kind = mkNP that_Det kind ;
|
||||
Those kind = mkNP those_Det kind ;
|
||||
These kind = mkNP these_Det kind ;
|
||||
This kind = mkNP this_Det kind ;
|
||||
Mod quality kind = mkCN quality kind ;
|
||||
Very quality = mkAP very_AdA quality ;
|
||||
|
||||
Wine = mkCN wine_N;
|
||||
SparklingWine = mkCN (mkA "effervescente") wine_N ;
|
||||
Cheese = mkCN cheese_N ;
|
||||
Fish = mkCN fish_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
|
||||
Fresh = mkAP (mkA "fresco");
|
||||
Warm = mkAP warm_A;
|
||||
Italian = mkAP (mkA "Italiano");
|
||||
Expensive = mkAP (mkA "caro");
|
||||
Delicious = mkAP (mkA "delizioso");
|
||||
Boring = mkAP (mkA "noioso");
|
||||
|
||||
}
|
||||
19
lectures/lecture06/comments.py
Normal file
19
lectures/lecture06/comments.py
Normal file
@@ -0,0 +1,19 @@
|
||||
import pgf
|
||||
|
||||
grammar = pgf.readPGF("Foods.pgf")
|
||||
parse_lang = grammar.languages["FoodsEng"]
|
||||
|
||||
with open("data.csv") as data:
|
||||
lines = data.readlines()
|
||||
|
||||
for line in lines:
|
||||
[polarity, kind, quality] = line.split(",")
|
||||
k = [e for (_,e) in parse_lang.parse(kind, cat=pgf.readType("Kind"))][0]
|
||||
q = [e for (_,e) in parse_lang.parse(quality, cat=pgf.readType("Quality"))][0]
|
||||
expr_string = "{} (This ({})) ({})".format("Pred" if polarity == "+" else "PredNeg", k, q)
|
||||
print(expr_string)
|
||||
expr = pgf.readExpr(expr_string)
|
||||
|
||||
for lin_lang in grammar.languages.values():
|
||||
print(lin_lang.linearize(expr))
|
||||
print()
|
||||
4
lectures/lecture06/data.csv
Normal file
4
lectures/lecture06/data.csv
Normal file
@@ -0,0 +1,4 @@
|
||||
+,boring cheese,expensive
|
||||
+,expensive wine,very boring
|
||||
-,pizza,Italian
|
||||
+,fish,delicious
|
||||
|
Reference in New Issue
Block a user