Warning: session_start(): open(/var/lib/php/sessions/sess_9es5gvc2fiqlqg7bv7afd7mchf, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass ai_Reconstructed {
WeightedProduction production;
AI_BottomUpParser1.Word a, b;
*(WeightedProduction *production, AI_BottomUpParser1.Word *a, AI_BottomUpParser1.Word *b) {}
toString { ret sfu(production) + " - " + a.text() + " + " + b.text(); }
}
static L ai_buParser1_reconstructedProductions(AI_BottomUpParser1 parser, L productions, AI_BottomUpParser1.Word group, S category) {
L> l = new L;
if (group == null || !group.isGroup()) ret l;
// add subclasses of outer category
MultiMap finerClasses = reverseMultiMap(parser.subClasses);
Set classes = makeHull_optimized(finerClasses, category);
// a + b = c
for (WeightedProduction prod : productions)
if (prod.b != null && contains(classes, prod.c)) {
//print("Possible production: " + a + " + " + b + " = " + c);
for (L parts : group.constituents) {
if (l(parts) != 2) continue; // shouldn't happen
AI_BottomUpParser1.Word partA = first(parts), partB = second(parts);
if (!contains(partA.classes, prod.a)) continue;
if (!contains(partB.classes, prod.b)) continue;
l.add(ai_Reconstructed(prod, partA, partB));
//print(" Found grouping: " + partA.text + " + " + partB.text);
}
}
ret l;
}