[Trennmuster] Gesangstextunterschiede
Guenter Milde
milde at users.sf.net
Sa Jul 1 23:56:33 CEST 2023
Lieber Werner,
Am 1.07.23 schrieb Werner LEMBERG:
> > ein Vergleich der mit "sprachauszug.py" und "extract-tex.pl"
> > erzeugten Gesangstrennmuster zeigt einige Unterschiede:
> Also ich finde die Unterschiede nicht so groß. Basierend auf dem
> Repositoriumsstand von heute (1. Juli) habe ich die Ergebnisse von
> python skripte/wortliste/sprachauszug.py \
> -l "de-1996,de-1996-x-versal" \
> -s "morphemisch,keine_schwankungsfaelle,einfach" \
> < wortliste \
> > wortliste.sprachauszug
> und
> perl skripte/wortliste/extract-tex.pl -G -S \
> < wortliste \
> > worliste.extract-tex
> verglichen (syllabische Trennung wird von »extract-tex.pl« nicht
> unterstützt). Ein »diff -u« enthält bloß 537 Zeilen statt Deiner
> erwähnten 270000.
Ich hatte die make Ziele
make exzerpte/de-1996_gesangstext-syllabisch
make gesang pattern-refo
laufen lassen und dann "exzerpte/de-1996_gesangstext-syllabisch"
mit "muster/dehyphn-x-gesang/words.hyphenated.refo" verglichen.
> > * Andere Sortierung von Umlauten und ß (läßt sich mit
> > skripte/sort.py leicht normalisieren).
> Ich sehe das nicht in der diff-Ausgabe.
Ich sehe jetzt im Verzeichnis "muster/dehyphn-x-gesang/" auch noch eine Datei
"words.hyphenated.refo.sorted". Damit scheint die Sortier-Differenz erklärt.
Mit
diff -u exzerpte/de-1996_gesangstext-syllabisch \
muster/dehyphn-x-gesang/words.hyphenated.refo.sorted
habe ich allerdings immer noch 286248 Zeilen Ausgabe, davon
123363 Zeilen nur in words.hyphenated.refo.sorted
(von +Aal-be-staen-de bis +Zy-pern-tuer-ken).
Unterschiede gibt es immerhin noch etwa 23000, von
-ab-a-xial
+ab-a-xi-al
bis
-Zwi-schen-sta-tion
-Zwi-schen-sta-tio-nen
+Zwi-schen-sta-ti-on
+Zwi-schen-sta-ti-o-nen
> Andererseits gibt Dein Skript
> – im Gegensatz zu früher, scheint mir – jetzt auch Einträge wie
> Altanbau;Al[t=an<./-tan=]bau
> Bohrersätze;Boh[-rer=/r=er<.]sät-ze
> als
> Altanbau
> Bohrersät-ze
> aus,
Nicht im Gegensatz zu früher, sondern schon immer.
Die Idee ist, dass hier auf jeden Fall manuell getrennt werden muss.
Wenn wir diese Wörter im "Trainingsset" weglassen, trennt der Algorithmus
dann irgendwie "zufällig", was für den Nutzer nicht besser ist
(den in TeX ist die Unterdrückung einer Trennstelle deutlich umständlicher
zu erreichen als eine zusätzliche Trennmöglichkeit).
Es gibt natürlich einen Unterschied bei Gesangsmustern,
weil die evt. gar nicht mit TeX genutzt werden und
weil hier stets alle Trennungen gebraucht werden.
Desweiteren sind "Unterdrückungs-Ausnahmen" natürlich auch ungünstig für die
Generalisierung der erlernten Wörter auf nicht gelernte Wörter. Das betrifft
sowohl die mehrdeutigen Wörter mit Trennalternativen als auch die
"ungünstigen" Trennungen.
> was ich ehrlich gesagt als überhaupt nicht hilfreich empfinde.
> Wie kann die Ausgabe von Einträgen mit »[...]« unterdrücken? Gibt's
> dafür einen Filter? Wenn das möglich sein sollte, gibt's überhaupt
> keine Unterschiede mehr (bis auf einen kleiner Fehler, siehe unten).
Aussortieren von Wörtern mit Mehrdeutigkeiten "[a/b]" habe ich nicht
implementiert.
In "skripte/lib/py_wortliste/stilfilter.py" habe ich die Funktion
`einfach()`:
# einfach()
# ~~~~~~~~~
# Ersetze die Trennstellenauszeichnung durch ein einfaches Trennzeichen.
#
# >>> from stilfilter import einfach
# >>> print(einfach('Rah-men=ver<ein>ba-rung'), einfach('Re<gis-ter=ari·e'))
# Rah-men-ver-ein-ba-rung Re-gis-ter-ari-e
# >>> print(einfach('Ab<fa{ll/ll=l}a-ger'), einfach('Dru{ck/k-k}er'))
# Ab-falla-ger Drucker
# >>> print(einfach('An-ti<=geld=wä-sche===vor<rich-tung'))
# An-ti-geld-wä-sche-vor-rich-tung
#
# Das Argument `alternative` beschreibt die Auflösung von Mehrdeutigkeiten:
# 1: erste Alternative, 2: zweite Alternative, 0 ungetrennt:
#
# >>> print(einfach('Au-ssen=ma[-s/s-]se'), einfach('An-dro[/>]id'))
# Au-ssen-masse An-droid
# >>> print(einfach('Au-ssen=ma[-s/s-]se', 1), einfach('An-dro[/>]id', 1))
# Au-ssen-ma-sse An-droid
# >>> print(einfach('Au-ssen=ma[-s/s-]se', 2), einfach('An-dro[/>]id', 2))
# Au-ssen-mas-se An-dro-id
Allerdings sind Funktionsargumente für die Filterfunktionen von der
Kommandozeile (`sprachauszug.py --stil= ...`) nicht erreichbar.
> > * Umlaut-Ersatzschreibung
> >
> > Wie sinnvoll sind die in Gesangstexten?
> Nicht wirklich sinnvoll. Mein Skript benötigt aber explizit die
> Option »-U«, damit die Ersatzschreibung ausgegeben wird.
Dann scheint das Gesangs-Make-Ziel -U anzuwenden :(
Für mich ist das Makefile viel zu unübersichtlich, als dass ich da erkennen
könnte wo ich etwas ändern müsste.
> > * Behandlung der "Schwankungsfälle"
> >
> > In der Dokumentation steht, bei (führendem) "." wird im Gesang
> > nicht getrennt. So auch "sprachauszug.py".
> Ich denke, da hat sich Deine E-Mail mit meiner Korrektur des Skripts
> im April gekreuzt; für mich schaut das jetzt gut aus.
Ich sehe diese Unterschiede immer noch (siehe oben).
Kann auch am Aufruf über das Makefile liegen.
> Soweit ich erkennen kann, gibt's einen kleinen Bug in Deinem Skript:
> Bei obigem Aufruf von »sprachauszug.py« sehe ich die inkorrekten
> Ausgabezeilen
> I-od
> I-od-a-tom
> I-od-a-to-me
Das war ein Fehler im regulären Ausdruck, ist korrigiert.
viele Grüße
Günter
Mehr Informationen über die Mailingliste Trennmuster