GF-MMT Projects

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

GF-MMT Projects
Hier sind die nächsten Projekte für LBS. Ich würde da gerne 2-er Teams bilden.

Projekt 1: (Fragment 1)
a) frag1.mmt bauen (in JEdit) und in frag1.gf mehr Junktoren (=>, <=>) erweitern.
b) In Scala + MMT (letzteres als library) einen Modellgenerierer/Tableau bauen.
c) Linguistischer Korpus zur Textual Validity and Entailment: Ein paar Sätze und ob sie valide sind, bzw. Ein paar entailment-Urteile und ob sie gültig sind.
d) die Implementation von b) auf Korpus c) testen

Projekt 2: (Fragment 2).
a) frag2.mmt und frag2.gf
b) 1.b) auf eine Tableau-Machine erweitern (vor allem um Input-Logical Forms.
c) Diskurs-Korpus (Sequenzen von Sätzen) und Theoriegraph mit Weltwissen
d) Test wie oben.

Jeweils für c) sollten wir alle zusammen die Resultate in einem Repos sammeln (gemeinsames Format), so dass wir cross-testing haben.

Das sind die ersten Ideen, bitte feeedback auf diesem Thread. Ich hoffe, dass wir dann am Ende eine vernünftige Spezifikation haben.


Ach ja, ich stelle mir vor, dass Projekt 1. für die nächste Woche ist. Projekt 2 wäre dann für die Woche danach.
Klingt das vernünftig?

1 „Gefällt mir“

Tipp: Pattern matching on MMT objects
Fuer einfacheres pattern matching auf den MMT-Objekten, kann man Scalas unapply benutzen.
Das folgende Beispiel (von Dennis) kann man benutzen, um ein MMT-“or” mit beispielsweise case a or b => ... zu matchen:

  implicit class orApply(tm : Term) {
    def or(tm2 : Term) = Convenience.or(tm,tm2)
  }
  object or {
    val path = MMTGF.dpath ? "LogicSyntax" ? "or"
    def unapply(tm : Term) = tm match {
      case ApplySpine(OMS(`path`),List(tm1,tm2)) => Some((tm1,tm2))
      case _ => None
    }
    def apply(tm1 : Term, tm2 : Term) = ApplySpine(OMS(path),tm1,tm2)
  }

Analoge hilfsmethoden existieren auch schon für “not”, “equals”, “pred1”, “pred2” und “the”; siehe ModelGenerator.scala, die ich auch schon den Rahmen für die Algorithmen vorgibt; ihr müsst also eigentlich nur noch lücken füllen.

Wenn ihr irgendwelche Fragen habt, lasst es mich wissen :slight_smile:


[quote=Jazzpirate:1512046886]siehe ModelGenerator.scala, die ich auch schon den Rahmen für die Algorithmen vorgibt; ihr müsst also eigentlich nur noch lücken füllen.
[/quote]

[s]Wo findet man ModelGenerator.scala? Ich kann sie hier nicht finden: https://gl.mathhub.info/Teaching/LBS[/s]
Gefunden! https://github.com/UniFormal/GFScala/blob/master/src/main/scala/info/kwarc/gf/ModelGenerator.scala


Hi Zusammen,
Ich versuche mich gerade daran Fragment 2 mit GFMMT Bridge zum Laufen zu bringen, aber ich hänge nun an folgender Stelle fest und weiß nicht weiter:

  1. Wie lade ich die Grammatik für Fragment 2 aka. “frag2log”? (Hierbei handelt es sich um eine MMT Datei richtig?)

Was ich versucht habe (In Test.scala):
val gr = gf.getGrammar(MMTGF.dpath ? “frag1log”) //funktioniert

val gr = gf.getGrammar(MMTGF.dpath ? “frag2log”) //funktioniert nicht

und gibt den Fehler:
scala.NotImplementedError: an implementation is missing
Beim “durchhangeln” in MMTGF.scala bin ich schnell zu Referenzen auf .class files gelangt, da ging’s dann nicht mehr weiter.

  1. Woher bekommt MMTGF eigentlich den Pfad auf die lokale Datei?
    Sonst könnte ich den Verweis im Code umbiegen aber so weiß ich wirklich nicht weiter.

Danke schon mal :slight_smile: