[Trennmuster] Woerter mit zwei und drei Buchstaben
Guenter Milde
milde at users.sf.net
Do Jul 24 22:11:58 CEST 2014
On 23.07.14, Stephan Hennig wrote:
> Am 21.07.2014 08:36, schrieb Guenter Milde:
> > Lang-S:
> > Für ein Lang-S Wörterbuch kann eine simple Wortliste mit <3-Wörtern
> > (z.B. aus dem aspell-dump bzw. der Quellliste) mit s2long-s.py
> > verarbeitet werden.
> >
> > Für Lang-S-Ersetzung über Trennmuster muß der Ersetzungs-Algorithmus
> > das s am Wortende generell gesondert wandeln. Rund-S an erster
> > Stelle kommt generell nicht vor (merke, das große S entspricht einem
> > langem S). An zweiter Stelle kann Rund-S nur in Ausnahmen
> > (Abkürzungen) oder längeren Wörtern vorkommen -- für Abkürzungen ist
> > eine Ausnahmeliste zu erstellen.
> Nach meiner Vorstellung gibt es überhaupt keine Sonderbehandlungen.
> /Alle/ Lang-s werden über spezielle Lang-s-Muster erkannt. Diese Muster
> sind /nicht/ Haupt- oder Fugen-Trennstellen-Muster, sondern werden aus
> einer Liste von Wörtern wie
- Aus-schuss
+ Aus-schu-ss
> Wa-s-ser
> u-sw
> erstellt. Das Wissen um die Lang-s-Regeln würde ich nicht erst in TeX
> anwenden, sondern schon bei der Erzeugung von Patgens Eingabe-Liste.
OK, das ist ein alternativer Weg. Aber auch dazu müssen die kurzen Wörter
nicht in die Trennmusterliste sondern können bei der Erzeugung der
Patgen-Eingabe hinzugefügt werden.
...
> Aus letzterem Grund ist es auch sinnvoll Lang-s-Muster zu verwenden,
> statt Rund-s-Muster. Mit Rund-s-Mustern müsste man die Wörter wieder
> zweimal durchgehen, um erst einmal alle Rund-s in Lang-s zu verwandeln.
> Während des Mustervergleichs wird nämlich keine Liste geführt, wo sich
> überall s in der Eingabe befinden (die man nach solchen überprüfen
> könnte, welche gerade nicht von Rund-s-Mustern erkannt wurden und
> folglich in Lang-s gewandelt werden sollten).
Letztendlich ist es gar keine Sonderbehandlung mehr und auch nur eine
Wandlung:
Der "hyphenator" macht aus dem Wort eine Liste von Wortteilen:
parts = hyphenator.split_word(wort)
(z.B. ausgehen -> ["aus", "gehen"]). Dann reicht ein regulärer
Ausdruck für die s-ſ Wandlung:
# Wandle in jedem Teil alle klein S zu Lang-S, außer am Schluss:
parts = [re.sub(u's(.)', ur'ſ\1', part) for part in parts]
Zum Schluß alles zusammenfügen und fertig:
return u''.join(parts)
Aber natürlich sind auch Lang-S-Muster möglich.
> Um nun u-sw in die Eingabeliste für Lang-s-Muster zu bekommen, reichte
> es, wenn
> usw;usw
> in der Liste enthalten wäre und ein Skript daraus per Regel "Ohne
> folgende Trennstelle in der Wortliste wird s zu Lang-s" u-sw macht. Oder?
Bei "usw" funktioniert es zufällig, aber:
Viele Abkürzungen müssen auf jeden Fall explizit außerhalb der Liste
gelistet werden, da Trennstellen (wenn überhaupt vorhanden) und
Lang-S-Schreibung hier unabhängig sind: Es gilt die Schreibung des
ungekürzten Worts.
Ob diese dann in die patgen-Eingabe übernommen werden oder als
"hyphenlist" separat an den Trennalgorithmus ist eigentlich egal. Der
Vorteil einer "hyphenlist" ist, daß die Ausnahmefälle der Abkürzungen
(welche eben keiner Regel gehorchen) sich nicht auf die
Generalisierungen der patgen-Muster auswirken sondern nur für exakte
Übereinstimmung gelten.
> Für eine TeX-Implementierung wäre es übrigens egal, ob die Stelle vor
> oder nach einem Lang-s markiert ist. Patgens Eingabeliste für
> Lang-s-Muster könnte also auch
> Auss-chuss
> Was-s-er
> us-w
> lauten.
Sind "hyphens" auch am Wortende zulässig? Wir haben sowohl "ſehen", als auch
die Abkürzung "abſ" (absolut). Im Gegensatz dazu gibt es keinen Fall von
Rund-S am Wortanfang.
> > Ligaturaufbruch
> > findet in "normalen" kurzen (<3) Wörtern nicht statt. Nur in Abkürzungen,
> > wobei da aber andere Regeln gelten:
> >
> > * "echtes Wort": keine Ligatur wenn Morphemgrenze=Trennstelle
> > (bei uns [<>=]+). Algorithmusidee: Wort mit "major-Mustern" trennen und
> > für "Ligaturkandidaten" (ff, fi, ...) einen "Aufbruchsmarker" einfügen,
> > wenn im getrennten Wort f-f, f-i, ...) steht.
> >
> > * Abkürzungen: hier gelten spezielle Regeln, die sowieso in einer
> > Ausnahmeliste erfaßt werden müßten. (Mir fällt gegenwärtig nur
> > "Aufl." ein, was a) in der Liste ist und b) soweit ich weiß auch mit
> > Ligatur gesetzt wird, d.h. der obig angedachte Algorithmus macht es
> > schon richtig.
> Auch bei der Ligaturbehandlung bin ich dafür, alle Intelligenz vor
> Patgen und in TeX lediglich Ligaturmuster anzuwenden.
Was aber auch keinen Grund darstellt, prinzipiell untrennbare Wörter in
die Wortliste aufzunehmen - wir können für Wörter mit weniger als 4
Buchstaben aus der Trennliste keine Information gewinnen, die nicht in einer
simplen Wortliste (aspell dump oder was auch immer) auch vorhanden ist.
> Die Anwendung von Ligaturen ist sowieso noch schwieriger, weil man auch
> noch in den Schriften nachsehen muss, welche Ligaturen überhaupt
> vorhanden sind (entweder um sie anzuwenden oder um sie wieder
> aufzulösen, wobei letzteres geringfügig einfacher ist).
Sowohl im traditionellen 8-bit TeX, als auch in OpenType fonts werden
Ligaturen (so sie gewünscht und im Font vorhanden sind) automatisch
verwendet solange sie nicht explizit unterbunden sind. Die wenigen
Ligaturen mit eigenen Unicode-Punkten sind eindeutig als "deprecated"
eingestuft und sollen nicht verwendet werden.
Steuern der Ligatur bedeutet also praktisch immer aktives Verhindern
durch Einfügen von Trennern, »"|« mit Babel-German, »\-\hspace{0pt}« sonst
(mit TeX) und \u200C ZERO WIDTH NON-JOINER for Unicode.
> So nett die Idee auch klingt, sowohl die Lang-s-Ersetzung,
> Ligaturbehandlung und Spezialtrennungen mit einem Haupt- oder
> Fugentrennmustersatz (und auch noch in einem Durchlauf) zu erledigen,
> ich denke am Ende landet man so nur bei unwartbarem Kode. Ich würde
> alle diese Arten von Knotenmanipulationen trennen und mit jeweils
> eigenen Mustern durchführen.
Ich glaube, hier gibt es ein Mißverständnis:
1. Will ich nicht Lang-S-Ersetzung und Ligaturaufbruch mit den gleichen
Mustern machen (das geht wirklich nicht gut).
2. Braucht man dann für jede Kombination von im Font vorhandenen Ligaturen
einen Pseudo-Trennmustersatz. Zumindest, wenn man nicht
Übergeneralisieren und für alle denkbaren Ligaturen prophylaktische
Trenner an Haupttrennstellen einfügen will. Das wird rasch sehr sehr
viel.
Ich dachte, daß sich die "major" Muster verwenden ließen, weil sie alle
Stellen abdecken, an denen nie eine Ligatur auftauchen darf. Natürlich gibt
es massenhaft "false positives" mit "Ch_1-Trennstelle-Ch_2"
Kombinationen, wo Ch_1 und Ch_2 nie (oder nicht im gerade gewählten Font)
ligieren. Daher würde mein (noch zu schreibendes) Skript
a) für jedes Wort die Haupttrennstellen bestimmen
b) für eine konfigurierbaren Liste von "Ligaturkandidaten" (fl, fi, st,
...) prüfen, ob diese an die Haupttrennstelle(n) grenzen.
c) Wenn ja, an dieser Stelle einen expliziten Ligaturaufbruch einfügen.
Ich muß noch in den Regeln für Ligatursetzung nachsehen, ob damit alle Fälle
"erschlagen" sind, oder ob noch mehr Intelligenz in die Muster einfließen
muss. Für Abkürzungen ist auch hier ggf. eine Ausnahmeliste zu erstellen,
allerdings gilt zumindest bei Auf<lage nicht "Ligierung wie im ungekürzten
Wort", sondern Aufl. wird mit fl-Ligatur gesetzt.
Im "selnolig" Paket werden weitere Fälle genannt:
This convention may also be applied to justify the non-use of the
fl-ligature in words such as knifflig and mufflig as well as in the
present-tense/first-person-singular forms of the verbs büffeln,
löffeln, schaufeln, stiefeln, verteufeln, and zweifeln: these form are
typeset without the fl/ffl-ligature, i.e., as büffle, löffle, schaufle,
stiefle, verteufle, and zweifle, respectively.
...
In contrast, the ft-ligature should not be used in “Beethoven’s Fünfte
Sinfonie” and “zum elften Mal”. The argument for breaking up the
ft-ligature in the words “Fünfte” and “elften” rests on the fact that
the particles te and ten are derivational morphemes and that the ft
ligatures are no longer at the very end of the word (or word fragment).
The justification for breaking up the ft ligatures does not rest on the
that the syllable boundaries (and hyphenation points) happen to fall
between the letters f and t .
Auch hier ist zu beobachten, daß Ligaturverbote nur an Silbengrenzen
stattfinden. Neben der Morphemgrenze ist aber eine Buchstabenauslassung
ein weiterer Grund (auch da gleichen sich Ligaturverbot und
Rund-S-Schreibung).
In diesen Beispielen hat die Wortliste z.Zt. "normale" Trennungen
(kniff-lig, löff-le, fünf-te, ...). Ob da die Auszeichnung der Liste oder
das Extraktionsskript angepaßt werden müssen, ist noch zu prüfen.
Ein weiterer Spezialfall ist die 3-Konsonanten-Regel der 1901-er Orthographie.
Aber hier macht "make major" schon alles richtig: Ligaturen werden
zugelassen.
> Siehe oben, 's' ohne folgende Trennstelle wird Lang-s. Gibt es Fälle,
> wo diese Logik versagt?
Ja:
exceptions = (u'Abſ', # Abſatz/Abſender
u'Ausg', # Aus<gabe
u'beſ', # beſonders
u'coſ', # Ko<ſinus
u'coſec', # Ko<ſekans
# u'daſ', # da<ſelbst (nicht von Artikel "das" zu unterscheiden!)
u'desgl', # des<gleichen
u'Diſſ', # Diſſertation
u'hrsg', # herausgegeben
u'Hrsg', # Herausgeber
u'Hſ', # Handschrift
u'Maſſ', # Maſſachusetts
# u'Miſſ', # Miſſiſippi (nicht von Miſs (Frln.) zu unterscheiden)
# TODO: N-Z
)
> > Aber wie gesagt: bei Abkürzungen lassen sich Lang-S und Ligaturaufbruch
> > nicht aus den Trennstellen ableiten, ich sehe daher keinen Grund kurze
> > Abkürzungen in die Liste aufzunehmen.
> Falls es Fälle gibt, in denen das tatsächlich nicht möglich sein sollte,
> könnten wir solche Stellen auch mit einem neuen Zeichen auszeichnen.
Ich halte es nicht für nötig, kurze, untrennbare Wörter in die Trennliste
aufzunehmen. Ich habe aber auch nichts dagegen, wenn Konsens herrscht,
daß es nicht stört. Bei der Extraktion der Eingabe für die "normalen"
patgen-Muster lassen sie sich ja über ein Wortlängenfilter ganz trivial
entfernen.
Aber: Anstelle die Trennmusterliste mit Lang-S- und
Ligaturverbots-Ausnahmen zu überlasten würde ich diese in einer
gesonderten Datei führen.
Gegenwärtig stehen die Ausnahmen noch in den Python-Skripten, ein besserer
Standort wäre vielleicht im "daten"-Verzeichnis.
Einzig sinnvolle Ergänzung zur gegenwärtigen Auszeichnung mag die
"Trennstelle mit ausgelassenem Buchstaben" sein (Drechs-ler, Bas-ler,
kniff-lig). Hier könnte eine geeignete Markierung die Skripte
vereinfachen. Aber das betrifft keine Wörter, die wegen ihrer Kürze zur
Zeit nicht in der Liste sind.
viele Grüße,
Günter
Mehr Informationen über die Mailingliste Trennmuster