diff --git a/foods/Foods.gf b/lectures/lecture06/Foods.gf similarity index 86% rename from foods/Foods.gf rename to lectures/lecture06/Foods.gf index 5b057d3..7388fd6 100644 --- a/foods/Foods.gf +++ b/lectures/lecture06/Foods.gf @@ -20,8 +20,7 @@ abstract Foods = { Mod : Quality -> Kind -> Kind ; -- (Italian) (pizza) Very : Quality -> Quality ; -- very (Italian) - Wine, Cheese, Fish, Pizza : Kind ; + Wine, SparklingWine, Cheese, Fish, Pizza : Kind ; - Fresh, Warm, Italian, - Expensive, Delicious, Boring : Quality ; + Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; } diff --git a/lectures/lecture06/Foods.pgf b/lectures/lecture06/Foods.pgf new file mode 100644 index 0000000..8383343 Binary files /dev/null and b/lectures/lecture06/Foods.pgf differ diff --git a/lectures/lecture06/FoodsEng.gf b/lectures/lecture06/FoodsEng.gf new file mode 100644 index 0000000..0cab403 --- /dev/null +++ b/lectures/lecture06/FoodsEng.gf @@ -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"); + +} \ No newline at end of file diff --git a/lectures/lecture06/FoodsIta.gf b/lectures/lecture06/FoodsIta.gf new file mode 100644 index 0000000..1be7b22 --- /dev/null +++ b/lectures/lecture06/FoodsIta.gf @@ -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"); + +} \ No newline at end of file diff --git a/lectures/lecture06/comments.py b/lectures/lecture06/comments.py new file mode 100644 index 0000000..a31d8a4 --- /dev/null +++ b/lectures/lecture06/comments.py @@ -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() \ No newline at end of file diff --git a/lectures/lecture06/data.csv b/lectures/lecture06/data.csv new file mode 100644 index 0000000..f4ab773 --- /dev/null +++ b/lectures/lecture06/data.csv @@ -0,0 +1,4 @@ ++,boring cheese,expensive ++,expensive wine,very boring +-,pizza,Italian ++,fish,delicious \ No newline at end of file