[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