[Trennmuster] Dokumentation 5-Felder-Format

Guenter Milde milde at users.sf.net
Fr Mär 16 14:11:40 CET 2018


Liebe Trennmustler,

der nächste Versuch einer verständlichen Beschreibung des neuen Formats:

(Auszug aus der Dokumentation in wortliste.py im reStructuredText Markup)

5-Felder-Format
---------------

Ein vollständiger Eintrag enthält fünf Felder, für die Sprachvarianten
`de`, `de-1901`, `de-CH`, `de-1901-x-versal` und `de-CH-1901`
(Tags nach [BCP47]_).

Die Felder sind durch Semikolon getrennt. 

Felder können weggelassen werden, wenn sich der Inhalt aus einem
allgemeineren Feld gewinnen lässt (siehe `Ersatzregeln`_).

Feldinhalt ist ein Wort mit Kennzeichnung der Trennstellen nach den Regeln
der `Wortliste der deutschsprachigen Trennmustermannschaft`_, z.B.
``Pro<zent=zah-len``. 

Ein Feld wird als leer markiert, wenn ein Wort in dieser Sprachvariante
nicht ausgegeben werden soll. 
Beispiele: ``-1-;de<pla-ziert``, ``auf<wän-dig;-2-;``. 

Feldbelegung
~~~~~~~~~~~~

Die Felder beschreiben die Schreibung und Trennung eines Wortes gemäß
der Sprachvarianten:

1. `de`: `aktuelle Rechtschreibung`_ wie sie in Deutschland und Österreich
   angewendet wird.

   Beispiele: ``Diens-te``, ``ba-cken``, ``Grü-ße``, ``Schluss=satz``

2. `de-1901`: `traditionelle Rechtschreibung`_ wie sie in Deutschland und
   Österreich von 1901 bis 1996 gültig war.
  
   Beispiele: ``Dien-ste``, ``ba{ck/k-k}en``, ``Grü-ße``, ``Schluß=satz``

3. `de-CH` oder `de-x-versal`: aktuelle Rechtschreibung wie sie in der
   Schweiz und bei ß-Ersatzschreibung angewendet wird.
   
   Beispiele: ``ba-cken``, ``Grüs-se``, ``Schluss=satz``

4. `de-1901-x-versal`: traditionelle Rechtschreibung mit
   ß-Ersatzschreibung wie sie in Deutschland und Österreich
   angewendet wurde (keine Trennung von „ss“ als Ersatz für „ß“).

   Beispiele: ``ba{ck/k-k}en``, ``Grü-sse``, ``Schluss=satz``

5. `de-CH-1901`: traditionelle Rechtschreibung wie sie in der Schweiz
   angewendet wurde (Trennung von „ss“ auch wenn es für „ß“ steht).

   Beispiele: ``ba{ck/k-k}en``, ``Grüs-se``, ``Schlu{ss/ss=s}atz``


Ersatzregeln
~~~~~~~~~~~~

Feld 1 (`de`) ist ein Pflichtfeld, die anderen Felder können weggelassen
werden, wenn sich der Inhalt über regelmäßige Transformationen_ aus einem
generischeren Feld gewinnen lässt:

2. `de-1901`          aus `de`      mit `ableitung1901()`_ 
3. `de-CH`            aus `de`      mit `versalschreibung()`_
4. `de-1901-x-versal` aus `de-1901` mit `versalschreibung()`_
5. `de-CH-1901`       aus `de-1901` mit `versalschreibung()`_

Die Ersetzung erfolgt rekursiv (siehe `getitem()`_). 

Die Bildung ungültiger Wörter wird durch „Auskreuzen“ des entsprechenden
Feldes (z.B. ``auf<wän-dig;-2-;``) verhindert.

.. TODO: Auskreuzalternativen
  
  * leer lassen: ``;Pro<zeß``, ``auf<wän-dig;;``
  * Symbol (welches?) z.B.: ``%;Pro<zeß``, ``auf<wän-dig;%;``
  * einheitliche Zeichenkette, z.B.: ``-x-;Pro<zeß``, ``auf<wän-dig;-x-;``

Beispiel
--------

Durch die Ersatzregeln reicht für 99,7% der Einträge die Angabe des ersten
Feldes, z.B.

>>> from wortliste import ShortEntry
>>> ssr = ShortEntry(u'süß=sau-er')

>>> ssr.complete()
>>> print unicode(ssr)
süß=sau-er;süß=sau-er;süss=sau-er;süss=sau-er;sü{ss/ss=s}au-er

>>> ssr.prune(); print unicode(ssr)
süß=sau-er


Ich hoffe, es hilft. Rückmeldungen willkommen.

Viele Grüße,

Günter



Mehr Informationen über die Mailingliste Trennmuster