Zielsetzung

Es soll ein Programm zur maschinengestützen Bearbeitung und Erstellung von Interlinearversionen (d.h. interlinearer Textübersetzungen) erstellt werden.

Programmverhalten

Zusammenfassend in Kurzform eine Beschreibung des gewünschten Programmverhaltens

Eingabe

Ausgabe

Anforderungen

In einer ersten Erprobungsphase soll hierfür die Brauchbarkeit des JSON Formats erkundet werden. Nähere Informationen zu diesem finden sich in RFC 4627 unter folgendem link. Als Datenbank soll eine noSQL-Datenbank eingesetzt werden, als erster Versuch MongoDB.


Arbeitsweise

Hier die Beschreibung des vorgesehenen Interlinearisierungsvorgangs an Hand eines Beispiels.

Eingabe

Eingabetext

Bei der zu interlinearisierenden Textpassage handelt es sich um einen Ausschnitt aus Antoine de Saint-Exupéry's Werk "le petit prince" (der kleine Prinz), die als Folge von Zeichenketten zur Verfügung stehen soll:

ref

0001

1(tx)

lorsque

j´avais

six

ans

j´ai

Dabei ist der Text so gegliedert, dass jedes Segment (meist ein Satz) eine Referenznummer erhält und jede Zeile eines Segmentes mit einem Tag (hier (tx)) versehen ist.

Datenbanktabellen

Bevor es ans Interlinearisieren gehen kann sollte die bereits zum Übersetzungszeitpunkt zur Verfügung stehende Information über die Quellsprache, in der der zu übersetzende Text vorliegt bekannt gemacht werden.

Folgende Datenbanktabellen sollen für dieses Beispiel bereits bekannt sein und somit für den Interlinearisierungsvorgang zur Verfügung stehen:

TABELLE 1

TABELLE 2

TABELLE 3

(fl)

(br)

(le)

(me)

(le)

(me)

j´avais

je-avoir-ais

lorsque

als

ais

1sIPF; 2sIPF

ans

an-s

je

ich

s

PL; 1sPRES; 2sPRES; IMPs

j´ai

je-avoir-0

avoir

haben

0

1sPRES


(!)

zur Notation

Mit ; getrennte Zeichenketten stellen Alternativen dar; Mit - getrennte Zeichenketten hingegen sollen allesamt eingefügt und im nächsten Bearbeitungsschritt als getrennte Einheiten beachtet werden.

Ableitungsregeln

Schließlich sollte noch festgelegt werden nach welchen Spielregeln die Datenbanktabellen denn überhaupt für den anstehenden Interlinearisierungsvorgang verwendet werden dürfen.

Folgende Vorgaben sollen dabei für dieses Beispiel gelten:

In der ersten Version des Interlinearisators sollen die obigen Regeln vorläufig "fest verdrahtet" sein. Für die Endversion sollen die Ableitungsregeln in einer Domain Specific Language über eine Konfigurationsdatei für ein spezifisches Projekt individuell gesteuert werden können (siehe unten).

DSL für Ableitungsregeln

Die Ableitungsregeln für das obige Beispiel würden ungefähr so formalisiert:

In einer weiteren Ausbaustufe sollen statt Tabellennummern externe Applikationen benannt werden können, die als Input ein Lookup-Lemma (sowie ggf. weitere Argumente) erhalten und (ggf. nach Interaktion mit dem Benutzer) einen String als Output zurückliefern, der in der abgleiteten Zeile eingefügt wird. Der zurückgelieferte String kann eine einfaches Wort sein (derive) oder aber ein Wort mit Morphemtrennern (split).

Die erweiterten Ableitungsregeln für das obige Beispiel würden dann lauten:

mongo_lookup(database,lemma,return-key) sucht in einer Datenbank (z.B. db.frz.ps) nach dem Element aus der oberen Zeile und gibt als Rückgabewert ein Element aus einem spezifizierten Keyfeld des Datensatzes zurück (z.B. (br)).

mongo_check(database,lemma) überprüft lediglich, ob das Element aus der oberen Zeile in der Datenbank vorhanden ist und gibt dann entweder das Element als Kopie zur Einfügung zurück oder liefert FALSE.

Interlinearisierungsvorgang

Mit den getroffenen Angaben sollte die Übersetzung sollte nun zunächst automatisch von statten gehen.

Erste Schwierigkeiten ergeben sich erst an den farblich markierten Stellen.

ref

0001

1(tx)

lorsque

j´avais

six

ans

j´ai

2(mb)

lorsque

je

-

avoir

-

ais

?

an

-

s

je

-

avoir

-

0

3(gl)

als

ich

-

haben

-

K

?

?

-

K

ich

-

haben

-

1sPRE

Konflikte

An den beiden blau gefärbten und mit einem K markierten Stellen stehen mehrere Übersetzungmöglichkeiten im Konflikt.

Laut TABELLE-2 gibt es zur Übersetzung von ait gleich zwei Möglichkeiten 1sIPF und 2sIPF. An dieser Stelle liegt es nun am Benutzer zu entscheiden, welche der beiden Alternativen zu wählen ist. In diesem Fall dürfte dies wohl 1sIPF sein.

Gleiches gilt für die Übersetzung von s auch hier stehen laut TABELLE-2 mehrere Möglichkeiten zur Verfügung.

keine Übersetzung

Ein anderes Problem ergibt sich an den rot gefärbten und mit einem ? markierten Stellen. Hier ist laut sämtlichen zur Verfügung stehenden Tabellen nämlich gar nicht bekannt wie zu übersetzen ist.

Fall 1

Der einfachere Fall betrifft die Übersetzung von ans, dieses ließ sich in Zeile 2 wenigstens noch in an und s trennen und es hängt bloß am letzten Schritt.

Auch hier kann nur der Benutzer weiter helfen: Der fehlende Tabelleneintrag dürfte wohl an = Jahr sein.

Fall 2

Viel früher schon ins Stocken gerät die Übersetzung schließlich bei der Übersetzung von six in Zeile 1. Hier ist noch nicht einmal klar, ob eventuell in Zeile 2 zu trennen ist.

Scheinbar ist dies hier nicht der Fall. Ein weiterer Tabelleneintrag six = sechs sollte hier wohl die korrekte Lösung des Problems sein.

Ausgabe

Nach Durchführung aller genannten Schritte sollten sowohl Interlinearversion, als auch überarbeitete Datenbanktabellen bereit zur Ausgabe sein.

Interlinearversion

ref

0001

1(tx)

lorsque

j´avais

six

ans

j´ai

2(mb)

lorsque

je

-

avoir

-

ais

six

an

-

s

je

-

avoir

-

0

3(gl)

als

ich

-

haben

-

1sIMP

sechs

Jahr

-

PL

ich

-

haben

-

1sPRE

Datenbanktabellen

TABELLE 1

TABELLE 2

TABELLE 3

(fl)

(br)

(le)

(me)

(le)

(me)

j´avais

je-avoir-ais

lorsque

als

ais

1sIPF; 2sIPF

ans

an-s

je

ich

s

PL; 1sPRES; 2sPRES; IMPs

j´ai

je-avoir-0

avoir

haben

0

1sPRES

six

sechs

an

Jahr

Fazit

In zwei besonderen Spezialfällen ist eine Interaktion von Benutzerseite nötig:


Erweiterungsmöglichkeiten

Semantische Hierarchieebenen für Lexikoneinträge

Lexikografen neigen (aus mehr oder weniger rationalen Gründen) dazu, Bedeutungen in Baumstrukturen nach Haupt-, Neben, Über- und Unterbedeutungen zu gliedern. Diese Möglichkeit soll auch hier gegeben werden, indem z.B. das me-Feld als beliebig verschachtelte Liste angelegt und dargestellt werden kann. Beim Lookup jedoch, wird dann jede verschachtelte Liste als flache Liste behandelt.


Screenshots

Hier die (vermutlich) obligatorischen screenshots:

Stand: 04-08-2012 shot-1.png


Stand: 07-08-2012 shot-2.png


Stand: 07-08-2012 shot-3.png


Lizensierung

Das im Verlaufe des Projektes (hoffentlich) entstehende Programm soll sowohl in seiner Erstellungsphase, als auch nach seiner Fertigstellung unter freier Lizenz Verfügbar sein. Welche Lizenz zum Zuge kommt, ist noch zu entscheiden.

Das "frei" in "freier Lizenz" ist hierbei nicht im Sinne von kostenlos zu verstehen, sondern im Sinne der von der FSF formulierten vier wesentlichen Freiheiten freier Software. Nachzulesen genau hier.

Ferner soll das Projekt auch als freies Entwicklungsprojekt auf einer entsprechenden Plattform (github, sourceforge) gehostet werden und öffentlich zur Mitarbeit aufgerufen werden.

Sobald eine halbwegs verwendbare Version (1.0) vorliegt, soll diese in die Repositories der Linux-Distributionen Eingang finden.

lugfrankfurt: Programmierworkshop/projekte/interlinearisator/about (zuletzt geändert am 2012-08-23 07:07:39 durch Harald Vajkonny)