[Trennmuster] Kommentare zu »umformatierung.py«
Werner LEMBERG
wl at gnu.org
Di Mär 27 07:35:18 CEST 2018
> Meine Namensvorschläge sind "kurz" vs. "lang" oder noch sachlicher
> 5-Spalten-Format vs. 8-Spalten-Format.
Ja, bin auch noch nicht glücklich über den Namen, doch ist das eine
Marginalie, die ich korrigieren werde, sobald mir was besseres
einfällt.
>> Das Skript ist mehr als doppelt so schnell wie »umformatierung.py«,
>> ist aber deutlich spartanischer im Komfort und setzt eine
>> wohlgeformte Kurzliste voraus.
>
> Was heißt "wohlgeformt"? Für die praktische Arbeit ist eine robuste
> Wandlung, die auch Abweichungen in der Eingabe zulässt, hilfreich
Günter, *dein* Skript soll für die praktische Arbeit verwendet werden!
Du hast da schon sehr viel Zeit investiert, und es ist meiner Meinung
nach nicht notwendig, das gleiche nocheinmal zu machen. Mir geht's in
erster Linie darum, die grundsätzliche Konversion mit einem gänzlich
anderen algorithmischen Ansatz zu verifizieren. »Wohlgeformt« heißt
für mich, daß das von Deinem Skript erzeugte Kurzformat mit meinem
Skript regelkonform zurückkonvertiert werden kann.
> Ich schlage zum besseren Verständnis vor, die Definition der Felder
> von den Ersetzungsregeln zu trennnen und gleich hier Beispiele
> einzufügen.
OK.
> Feld 1 (`de`) ist ein Pflichtfeld, die anderen Felder können
> weggelassen werden, wenn sich der Inhalt über regelmäßige
> Transformationen_ aus einem generischeren Feld gewinnen lässt:
>
> 2. `de-1901` aus `de` mit „Rechtschreibreversion_“
> 3. `de-CH` aus `de` mit SZ-Ersatz_
> 4. `de-1901-x-versal` aus `de-1901` mit SZ-Ersatz_
> 5. `de-CH-1901` aus `de-1901` mit SZ-Ersatz
>
> Die Ersetzung erfolgt rekursiv.
Dieses »rekursiv« gefällt mir gar nicht. Das beschreibt einen
Algorithmus (nämlich Dein Python-Skript) und ist in der Praxis *nicht*
trivial umsetzbar. Ich habe wirklich lange gebraucht, bis das in
meinem Skript funktioniert hat.
Ich möchte stattdessen deskriptive Regeln, Feld für Feld.
> Wenn ein Eintrag in einer Sprachvariante leer bleiben soll, muss das
> zugehörige Feld entsprechen markiert („ausgekreuzt“) werden.
> Beispiele: ``-1-;de<pla-ziert``, ``auf<wän-dig;-2-;``.
Das gilt nur für die Felder 1 und 2! Siehe unten.
>> Feld 1, »de«:
>> Wort mit Trennungen nach aktueller Rechtschreibung (de-1996).
> + Variante Deutschland und Österreich
Ja.
> - »-1-«, falls die Schreibung der folgenden Felder in de-1996
> - unzulässig ist (z.B. »-1-;Pro<zeß«).
> + "-1-" wenn weitere Felder folgen sollen
>
> (das erste Feld wird nie abgeleitet).
Ja.
>> »-2-«, falls die implizit abgeleitete Schreibung in de-1901
>> unzulässig ist (z.B. »Ur<laubs=tipp;-2-«).
>
> Es kann ebenso die in de-1901 gültige Variante (oder sogar ein
> komplett anderes Wort) eingetragen werden,
> z.B. »Ur<laubs=tipp;Ur<laubs=tip«.
Ja.
> * Die Wandlung kurz-lang muß solche Einträge akzeptieren und korrekt
> splitten.
Mein Skript tut das (klarerweise :-).
>> »-3-«, falls nicht für diesen Eintrag relevant und weitere Felder
>> folgen.
> ...
>> »-4-«, falls nicht für diesen Eintrag relevant und ein weiteres
>> Feld folgt.
>
> In meiner Definition ist -x- kein "Faulenzer"-Platzhalter für einen
> automatisch generierbaren Eintrag, sondern in allen Feldern
> einheitlich Symbol für "not in list".
Mhmm. Das verkompliziert die algorithmischen Regeln deutlich. Das
derzeitige, von Deinem Skript erzeugte Kurzformat braucht's nicht.
Wenn ich mich richtig erinnere, habe ich in meinem Perl-Skript mit
einem »not in list« angefangen. Es hat aber nicht geklappt, die
Konversion damit korrekt abzubilden. Bis Du Dir sicher, daß Dein
Python-Skript so funktioniert?
Gib mir bitte einen Beispielseintrag im Kurzformat, wo »-x-« *kein*
Faulenzer ist!
> Eingedenk des äußerst geringen Bedarfs von Einträgen in Spalten 3-5
> halte ich die einfachere Definition für den wesentlicheren Vorteil.
Ich nicht. Spalten 1 und 2 sind müssen sowieso speziell behandelt
werden, daher können wir »-x-« in Spalten 3 bis 5 durchaus anders
definieren.
>> Feld 5, »de-CH-1901«:
>> Wort mit ß-Ersatzschreibung, die der Schweiz benutzt wird. Das
>> sind insbesondere Wörter mit »sss« gefolgt von einem Vokal, die
>> wie andere Dreifachkonsonanten gehandhabt wurden (also anders,
>> als bei Ersatzschreibung in Deutschland und Österreich),
>> z.B. »süssauer«
>
> Hier habe ich auch die Abweichung der Trennung (s-s vs. -ss)
> beschrieben.
OK.
>> (1) Wie man sehen kann, sind die Felddefinitionen deutlich
>> vereinfacht. Im besonderen sind »Leerfelder« am Ende eines
>> Eintrags (außer »-2-«) nicht notwendig.
>
> Zusätzliche "ausgekreuze" Felder sind dann nötig, wenn der Zustand
> einer nicht vollständigen Liste im Langformat exakt abgebildet
> werden soll.
Ich halte das für eine unnötige Verkomplizierung. Ich finde es viel
besser, wenn das Konversionsskript stattdessen fehlende Einträge
aufdeckt und das Langformat entsprechend korrigiert werden muß
> Das ist wichtig für eine verlässliche 1:1 Wandlung, heißt aber
> andersherum, dass fehlende sz-Ersatzschreibung (oder eine fehlende
> Variante mit ß) bei einem Rund-trip nicht automatisch erstellt
> werden.
Ich glaube, wir haben unterschiedliche Auffassung, was »verläßlich«
bedeutet. Die Eins-zu-eins-Wandlung sollte meiner Meinung nach nur
wohlgeformte Einträge korrekt abbilden – wobei durchaus mehrere
Einträge im einen Format mehreren Einträgen im anderen Format
entsprechen können. Ich finde es viel besser, notwendige Einträge im
Langformat zu ergänzen, falls sie fehlen sollten, als daß wir
formattechnische Verrenkungen brauchen, um einen rudimentären
Langeintrag darstellen zu können.
>> (2) Wollen wir, daß die Kurzlisteneinträge eineindeutig sind? Das
>> ist ja ein Vorteil des Langformats (unter der Prämisse, daß
>> stets der Eintrag mit den wenigsten explizit gesetzten Feldern
>> genommen wird). Wenn ja, wie errreichen wir das?
>
> [...]
>
> Ich will verschiede Kurzformat-"wortlisten", die nach der Wandlung
> ins Langformat identische Ergebnisse liefern als "äquivalente
> Wortlisten" bezeichnen.
OK.
> Es gibt eine zum jetzigen Ergebnis der lang-kurz-Wandlung
> äquivalente Liste, die in jeder Zeile einen eindeutigen Schlüssel
> enthält. Allerdings sind dann eben doch wieder 470878 statt nur
> 454054 Zeilen und viele explizite Eintragswiderholungen und
> ausgekreuzte Felder nötig (siehe auch "explizites Kurzformat"²).
>
> Bsp: die 3 Zeilen der Langform
>
> Vossstrasse;-2-;-3-;-4-;-5-;Voss=stra-sse;Voss=stras-se;Voss=stras-se
> Vossstraße;Voss=stra-ße
> Voßstraße;Voß=stra-ße
>
> entsprechen kurz/explizit
>
> -1-;-2-;Voss=stras-se;Voss=stra-sse;Voss=stras-se
> Voss=stra-ße;Voss=stra-ße;-3-;-4-;-5-
> Voß=stra-ße;Voß=stra-ße;-3-;-4-;-5-
Ja, mit redundanten Feldern. Dieser Eintrag ist vollkommen äquivalent
zu
-1-;-2-;Voss=stras-se;Voss=stra-sse;Voss=stras-se
Voss=stra-ße;Voss=stra-ße
Voß=stra-ße;Voß=stra-ße
> und kurz/minimal
>
> Voss=stra-ße;Voss=stra-ße
> Voß=stra-ße
OK.
> Im kurz/minimal Format kann nicht mehr einfach auf Doppelungen
> geprüft werden und Zeilen haben sprachvarietätsabhängige Schlüssel.
Das hat mich anfangs gestört, wie man im E-Mail-Archiv nachlesen
kann :-) Inzwischen hab' ich mich daran gewöhnt.
> Vorschläge: [...]
Danke für Deine ausführlichen Ideen. Da ist viel sinnvolles dabei,
allerdings glaube ich, daß wir diese Frage erst beantworten können,
wenn jeder von uns einen Schwung neuer Einträge im Kurzformat
eingegeben hat. Derzeit weiß ich einfach nicht, was das beste ist.
Auf lange Sicht möchte ich auch im Repositorium auf das Kurzformat
umsteigen, allerdings hat das keinerlei Eile.
>> * Der Eintrag für das erste nicht-leere Feld einer Zeile wird
>> explizit mit einem Kommentar gesetzt (auch wenn er leer sein
>> sollte).
>>
>> * Abgeleitete Kommentare werden gesetzt, falls sie nicht-leer sind
>> und kein expliziter Eintrag vorhanden ist.
>
> a) Der Eintrag mit dem gleichen Schlüssel erhält den Kommentar.
>
> b) Beim Splitten wird der Kommentar für beide Einträge
> übernommen.
>
> c) Beim Zusammenlegen von Einträge verliert der "Speziellere" den
> Kommentar.
Das gefällt mir, danke. Wenn ich das richtig sehe, sind die Regeln
(a) bis (c) genau das, was Du derzeit implementiert hast – somit ist
das äquivalent zu meiner Beschreibung (für kurz→lang), und wir sollten
vielleicht beide Versionen (Deine und meine) behalten, inklusive
Beispiel.
Werner
Mehr Informationen über die Mailingliste Trennmuster