From 7a6063a0e00e985767cacd0ea61f17cd3f4c4f10 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnter=20Milde?= Date: Fri, 18 May 2018 23:58:45 +0200 Subject: [PATCH] Update Trennstile und -filter. fix keine_einzelvokale() Vereinfachte Filterauswahl: ein Trennstil ist eine Liste von anderen Trennstilen oder Filtern. --- skripte/python/edit_tools/sprachauszug.py | 211 +++++++++++++++--------------- skripte/python/edit_tools/wortliste.py | 10 +- 2 files changed, 111 insertions(+), 110 deletions(-) diff --git a/skripte/python/edit_tools/sprachauszug.py b/skripte/python/edit_tools/sprachauszug.py index 53e7eb9..5f2a272 100755 --- a/skripte/python/edit_tools/sprachauszug.py +++ b/skripte/python/edit_tools/sprachauszug.py @@ -29,96 +29,83 @@ from wortliste import (WordEntry, ShortEntry, verblasst, fremdwortsilben, keine_einzelvokale, scoretext, unguenstig) -# Trennstilfilter -# --------------- -# -# Funktionen zur Auswahl von Trennstellen nach Trennstil. -# -# Wahltrennungen -# """""""""""""" -# -# etymologisch() -# ~~~~~~~~~~~~~~ -# -# Wähle etymologische Trennungen auch bei verblasster Etymologie: -# -# >>> from sprachauszug import etymologisch -# >>> etymologisch(u'Psy-ch>> etymologisch(u'An>> from sprachauszug import modern -# >>> modern(u'An>> print modern(u'Pä-d>> from sprachauszug import standard -# >>> standard(u'Text=il<..lu-stra-ti-.on') -# -# :: +# Definition unterstützter Trennstile:: -def standard(word): - """Select avoid single vowels.""" - word = unguenstig(word) +trennstile = {# Wahltrennungen + # Wähle etymologische Trennungen auch bei verblasster Etymologie: + "etymologisch": [fremdwortsilben, verblasst], + # Wähle Sprechsilbentrennungen bei verblasster Etymologie: + "modern": [modern], + + # Trennhäufigkeit -# fixiert() -# ~~~~~~~~~ -# -# Standardunterdrückung, keine „Flatterbuchstaben“. + # als ungünstig markierte Trennstellen weglassen: + "standard": [unguenstig], + # Standardunterdrückung, keine „Flatterbuchstaben“: + "fix": [unguenstig, keine_einzelvokale], + # alle Trennungen zulassen (auch irreführende und Nottrennungen): + "inklusiv": [], + # zusätzlich Trennungen an Wortanfang und -ende erlauben: + "notentext": [scoretext], + } + +# run_filters() +# """"""""""""" # -# >>> from sprachauszug import fixiert -# >>> fixiert(u'Psy-ch>> from sprachauszug import run_filters +# >>> run_filters(['fix'], u'Psy-ch>> fixiert(u'An>> run_filters(['fix'], u'An>> fixiert(etymologisch(u'Psy-ch>> run_filters(['etymologisch', 'fix'], u'Psy-ch>> fixiert(etymologisch(u'An>> run_filters(['etymologisch', 'fix'], u'An>> run_filters(['standard'], u'Text=il<..lu-stra-ti-.on') +# u'Text=illu-stra-tion' + +# >>> run_filters(['etymologisch'], u'Psy-ch>> run_filters(['etymologisch'], u'An>> run_filters(['etymologisch'], u'ger=.][^-<>=./][-<>=.]', + processed): continue - auszug = processed + +# Auf Standardausgabe ausgeben:: + if entry.comment: - auszug += u' # ' + entry.comment.lstrip() - print auszug.encode('utf8') + processed += u' # ' + entry.comment.lstrip() + print processed.encode('utf8') diff --git a/skripte/python/edit_tools/wortliste.py b/skripte/python/edit_tools/wortliste.py index 88a23cc..da89b47 100755 --- a/skripte/python/edit_tools/wortliste.py +++ b/skripte/python/edit_tools/wortliste.py @@ -2405,7 +2405,7 @@ def long2short(lines, prune=True, drop_sz=False): # >>> from wortliste import fremdwortsilben # # >>> fremdwoerter = (u'no-b-le Zy-k-lus Ma-g-net Fe-b-ru-ar ' -# ... u'Hy-d-rant Ar-th-ri-tis') +# ... u'Hy-d-rant Ar-th-ri-tis ger>> for wort in fremdwoerter.split(): # ... print wort, '->', fremdwortsilben(wort) # no-b-le -> no-ble @@ -2414,6 +2414,7 @@ def long2short(lines, prune=True, drop_sz=False): # Fe-b-ru-ar -> Fe-bru-ar # Hy-d-rant -> Hy-drant # Ar-th-ri-tis -> Ar-thri-tis +# ger ger>> for wort in fremdwoerter.split(): # ... print wort, '->', fremdwortsilben(wort, 'modern') @@ -2423,15 +2424,16 @@ def long2short(lines, prune=True, drop_sz=False): # Fe-b-ru-ar -> Feb-ru-ar # Hy-d-rant -> Hyd-rant # Ar-th-ri-tis -> Arth-ri-tis +# ger ger Apri-kose aber auch Ad-ler -> Adler (!) # return re.sub(u'(-|^[AEIOUÄÖÜaeiouäöü])([bcdfgkptv]|th|st)-(?=[lrn])', @@ -2687,7 +2689,7 @@ def scoretext(word): def keine_einzelvokale(wort): """Drop hyphenation marker after single vowels.""" - return re.sub(u'-[.]*([aeiouyäöü]-[^.])', u'\\1', wort) + return re.sub(u'-[.]*([aeiouyäöü])(?=-[^.])', u'\\1', wort) # unguenstig() -- 2.11.4.GIT