lecture 6 code

This commit is contained in:
Arianna Masciolini
2026-05-04 13:09:20 +02:00
parent f5015adb9a
commit 2cc5040a46
6 changed files with 87 additions and 3 deletions

View File

@@ -20,8 +20,7 @@ abstract Foods = {
Mod : Quality -> Kind -> Kind ; -- (Italian) (pizza) Mod : Quality -> Kind -> Kind ; -- (Italian) (pizza)
Very : Quality -> Quality ; -- very (Italian) Very : Quality -> Quality ; -- very (Italian)
Wine, Cheese, Fish, Pizza : Kind ; Wine, SparklingWine, Cheese, Fish, Pizza : Kind ;
Fresh, Warm, Italian, Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ;
Expensive, Delicious, Boring : Quality ;
} }

Binary file not shown.

View 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");
}

View 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");
}

View 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()

View File

@@ -0,0 +1,4 @@
+,boring cheese,expensive
+,expensive wine,very boring
-,pizza,Italian
+,fish,delicious
1 + boring cheese expensive
2 + expensive wine very boring
3 - pizza Italian
4 + fish delicious