[Trennmuster] neuer Arbeitsansatz

Werner LEMBERG wl at gnu.org
Sa Okt 22 18:13:52 CEST 2016


Liebe Trennmustler!


Es gibt nun einen Zweig »wortlisten« im git-Repositorium, der einen
neuen Ansatz zur Wortlistengenerierung bieten soll.  Die Grundidee
ist, ausschließlich Wörter in reformierter Schreibweise zu speichern,
und ein Skript erzeugt die anderen Trenn- und Wortformen.  Natürlich
haben wir Ausnahmen, wo das nicht möglich ist, z.B. Wörter wie
»Stängel« und »Stengel«, oder generell mehrdeutige Trennformen.

Eine solche Herangehensweise hat einige Vorteile.

  1. Der Aufwand zur Einarbeitung neuer Wörter ist geringer, weil man
     sich nur um eine Rechtschreibvariante kümmern muß.  Im Besonderen
     reduziert die automatische Erzeugung der alternativen Wort- und
     Trennformen manchmal nur schwer zu entdeckende Tippfehler.

  2. Ich habe die Gelegenheit genutzt, die Eingabedaten in mehrere
     Dateien aufzuspalten.  Das erleichtert und beschleunigt die
     Arbeit mit git.  Im Besonderen ist der sehr hilfreiche Befehl
     »git blame« jetzt benützbar, was bei der großen »wortliste«-Datei
     nicht möglich ist, weil viel zu langsam.

  3. In der neuen Form brauchen wir derzeit 7.5MByte für reformierte
     Wortformen (rund 445k Einträge); die Ausnahmen betragen 76kByte
     (1800 Einträge).  Bezogen auf die Anzahl der Einträge sind das
     0.04% – meiner Meinung ist das sehr überschaubar.

Der einzige Nachteil ist, soweit ich das bisher überblicken kann, daß
»wortliste« nun eine generierte Datei ist.  Auf meinem Laptop dauert's
ca. 20 Sekunden, um sie zu erzeugen.

Die Arbeitsweise ist ein bißchen anders.

  1. Man erstellt eine Datei »xxx« mit Trennungen in reformierter
     Schreibweise, entweder in der Form

       foo-bar
       foo-baz  # Kommentar

     oder

       foobar;foo-bar
       foobaz;foo-baz  # Kommentar

     (wobei der Teil vor dem Semikolon ignoriert wird) oder gar

       foo[-b/=b]ar

  2. Der Aufruf des kleinen Skripts »a-z« mittels

       sh a-z.sh xxx

     fügt die Einträge in die Dateien »wortlisten/*.reformiert« ein;
     da diese Dateien unter git-Kontrolle stehen, werden keine Backups
     erstellt – git bietet beispielsweise den Befehl »git stash« an,
     um temporär Änderungen zu speichern, falls notwendig.

     [Für kleinere Korrekturen kann man natürlich direkt die Daten in
      »wortlisten/*.reformiert« bearbeiten.]

     Wie bisher kann man hier »git diff« verwenden, um Unterschiede zu
     begutachten.

  3. Es gibt ein neues Make-Ziel »wortliste«, um die Datei »wortliste«
     zu erzeugen.

       make wortliste

     Nimmt man den Modifizierer »orig« dazu, wird auch eine Datei
     »wortliste.orig« generiert (falls nicht schon vorhanden), welche
     den Zustand vor den Änderungen an den Dateien im
     »wortlisten«-Verzeichnis widerspiegelt.

       make wortliste orig

     Danach kann man mittels »diff« die Ausgabe vergleichen.

       diff -u wortliste.orig wortliste

     Beachte, daß »make wortliste« auch Meldungen bezüglich doppelter
     Einträgen ausgibt; normalerweise ist das ein Zeichen, daß eine
     manuelle Korrektur notwendig ist.

     Wer die bunte Ausgabe von »git diff« vermißt, sollte das
     Perl-Skript »colordiff« installieren.

       http://www.colordiff.org/

     [Die Aufrufe von »make pattern-refo« u.ä. erzeugen übrigens die
      »wortliste«-Datei automatisch.]

   4. Finden sich Fehler in »wortliste«, die eine manuelle Korrektur
      notwendig machen, sollten Änderungen an den Ausnahmedateien
      »wortliste/*.ausnahmen« vorgenommen werden, welche Einträge in
      »wortliste/*.reformiert« beim Erzeugen der »wortliste«-Datei
      überschreiben oder ergänzen.  Das betrifft insbesondere
      Wortformen, die es nur in der neuen oder alten Rechtschreibung
      gibt, sowie spezielle Konstruktionen für »ss« und »ß«.


   Werner




Mehr Informationen über die Mailingliste Trennmuster