wiki:normalization/6

Version 16 (modified by Wolfgang Schmidle, 14 years ago) (diff)

--

4. Wie soll normalisiert werden?

Grundgedanken

Das Hauptziel der Normalisierung ist eine moderne Schreibweise des Textes, zum Beispiel u/v-Schreibweise in Latein.

Außerdem:

  • Die Normalisierungsregeln sollten einfach formulierbar sein.
  • die Normalisierungsschicht sollte so einfach wie möglich sein, aber nicht einfacher:
    • muss mit einfachen Algorithmen wie bei u/v umgehen können (Latein)
    • muss mit offenen Klassen umgehen können (Chinesisch)
  • die Normalisierungen für die Anzeige und für Pollux/Donatus sollten so ähnlich wie möglich sein (aber nicht ähnlicher)
  • Wenn etwas sprachspezifisch und nicht buchspezifisch ist, sollte es zur Normalisierung und nicht zur Regularisierung gehören.
  • Bei Wörtern, die zwar regularisiert werden müssten, aber nicht regularisiert sind, sollte die Normalisierung den Fehler nicht verschleiern.
  • korrekt geschriebene Texte in modernen Sprachen sollten im Idealfall gar keine Normalisierungen benötigen

Regularisierung und Normalisierung

Details der Regularisierung werden hier? diskutiert. Ausgangspunkt für die Normalisierung ist ein Text, der bereits <reg>enthält. Im Idealfall bedeutet das:

  • Fehler im Text korrigiert
  • keine Abkürzungszeichen mehr im Text
  • keine PUA-Zeichen mehr im Text
  • Der Text ist in NFC-Normalform, d.h. wo immer möglich werden precomposed characters verwendet, zum Beispiel ä statt a mit combining diaeresis.

Natürlich muss die Normalisierung mit der Textversion arbeiten, die sie vorfindet. Formal gesagt: Für Wörter mit <reg> und einem norm-Attribut in diesem <reg> arbeitet die Normalisierung nicht mit dem originalen Wort, sondern mit der Version im norm-Attribut. Bei Wörtern ohne <reg>, oder mit einem <reg> ohne norm-Attribut, wird das originale Wort verwendet.

Es ist nicht immer einfach zu entscheiden, ob etwas regularisiert oder normalisiert werden soll. Beispielsweise ist "q;" ein Abkürzungszeichen und wird regularisiert, während "ę" kein Abkürzungszeichen ist und daher nicht regularisiert, sondern normalisiert wird.

In der untenstehenden Tabelle sind viele Beispiele für das Zusammenspiel von Regularisierung und Normalierung zu sehen.

Textanzeige und Wörterbücher

Normalisierung meint normalerweise die Normalisierung für die Textanzeige. Abweichende Normalisierungen für Pollux/Donatus werden zwar auch angegeben, aber ich weiß nicht genau, wie die Schnittstelle zu den jeweiligen Wörterbüchern funktioniert und welche Kodierungen dabei verwendet werden. Beispielsweise weiß ich nicht, an welcher Stelle der Unterschied zwischen Groß- und Kleinbuchstaben nivelliert wird, um ein Wort in Großbuchstaben trotzdem im Wörterbuch zu finden.

In der Tabelle gehe ich vorläufig davon aus, dass die Normalisierung (Groß- zu Kleinbuchstaben, Entfernen unnötiger Diakritika, chinesische Standardzeichen, Gravis wird Akut) auf unserer Seite stattfindet, und dass die Wörterbücher mit Unicode umgehen können und kein Betacode etc. erwarten.

Diakritika

Für Diakritika bedeutet Normalisierung, dass sie einfach entfernt werden.

  1. Diakritika, die in einer Sprache verwendet werden, werden nicht normalisiert: Beispiel ist ä ö ü im Deutschen.
  2. Heutzutage als überflüssig erachtete Diakritika wie in aër und verò im Lateinischen werden normalisiert, können aber noch zur Lemma-Disambiguierung oder zumindest zur Wortform-Disambiguierung beitragen.
  3. Diakritika bei Abkürzungszeichen werden nicht normalisiert. Beispielsweise wird eiuſdẽ, falls es aus Versehen nicht regularisiert wurde, zu eiusdẽ, aber nicht zu eiusde normalisiert. Durch Weglassen der Tilde kann offensichtlich nicht die richtige Wortform herauskommen. Stattdessen gibt es drei mögliche Fälle:
    • Es kommt gar keine echte Wortform heraus. Dann ist man nicht weiter als mit der originalen Form. Beispiele: eiuſdẽ wird zu eiusde und ſcīa wird zu scia.
    • Es kommt das falsche Lemma heraus, d.h. der Fehler wird kaschiert. Beispiel: itẽ wird zu ite. (Es gibt allerdings wohl nur wenige reale Beispiele.)
    • Es kommt die falsche Wortform im richtigen Lemma heraus: zum Beispiel reſiduũ wird zu residuu. Spätestens bei einer automatisierten linguistischen Analyse des Satzes wird sich die falsche Wortform als Problem erweisen.
  4. Diakritika, die in der entsprechenden Sprache gar nicht vorkommen sollten, werden nicht normalisiert. Zeichen mit Kombinationen von mehreren Diakritika werden ebenfalls nicht normalisiert. Es ist nicht die Aufgabe der Normalisierung, die Textqualität stillschweigend zu verbessern.

Diakritika können auch auf Konsonanten sein. Es ist grundsätzlich möglich, dass in einer Sprache dasselbe Diakritikum auf verschiedenen Buchstaben, also beispielsweise ä und ö, zu verschiedenen Gruppen gehört.

Unicode-Fehler durch identisch aussehende Zeichen werden nicht normalisiert. Zum Beispiel ά (03AC) wird nicht zu ά (1F71) normalisiert. Es ist Aufgabe eines Workflow-Skriptes, solche Zeichen zu finden bzw. zu ersetzen.

Beispiele

Die folgende Tabelle zeigt einige Wörter vom Rohtext über das XML bis zum Anzeigesystem. Die Wörter sind nach Sprachen sortiert. In der Transkription gibt es zwei Versionen, den Rohtext und den bearbeiteten Rohtext. Der bearbeitete Rohtext entsteht, wenn man die Schreibweisen in den DESpecs in Unicode umsetzt. Dieser Schritt entspricht dem Anzeigemodus "Original". Im XML-Text werden mit <reg> zum einen die bekannten Textkorrekturen gemacht (das entspricht dem Anzeigemodus "Regularized"; der jeweilige type der Korrektur ist hier nicht angegeben), zum anderen gibt es in <reg> ein Attribut, in das alle Informationen aus dem Rohtext verschwinden, die wir nicht gut in Unicode darstellen können (das entspricht dem Anzeigemodus "Original" mit Checkbox "faithful"). Die Normalisierung teilt sich auf in eine Normalisierung für die Textanzeige (das entspricht dem Anzeigemodus "Normalized") und einer Normalisierung für Wörterbücher. In der Kommentarspalte wird jeweils die Besonderheit des Wortes genannt.

Transkription <reg> (im XML) Normalisierung (System) Kommentar
Rohtext nachbearbeitet @faithful @norm Anzeige Donatus/Pollux
Original faithful Regularized Normalized
Latein vnum = 1) unum v wird zwischen Konsonanten zu u
diuer$arum diuerſarum = diversarum u zwischen Vokalen wird zu v
DIVERSARVM = DIVERSARUM diversarum Großbuchstaben
periti{$s}imo peritißimo = peritissimo ß in Latein wird normalisiert
aër = aer aer 2) Trema: "kein Diphthong"
verò = vero vero 2) Gravis
hîc = hic hic 2) Zirkumflex
re$iduũ reſiduũ reſiduum residuum Abkürzungszeichen Tilde
re$idu\~u reſiduũ reſiduum residuum andere Schreibweise im Rohtext
$ph{ae}ræ ſphęræ = sphaerae ę ist kein Abkürzungszeichen
itaq; itaque = Abkürzung mit Semikolon
{quis} 5) u.a. quod = MUFI, offizielles Unicode-Zeichen
idem\'{que} idem́ 7) idemque = MUFI, PUA: &q3app (E8BF)
$enatori\'{que} (ſenatoriq́ꝫ) ſenatori{q3-it-a} ſenatorique senatorique kein Font enthält E8BF in kursiv 8)
<001>dã ꝗdã quidam = MUFI-Zeichen als Teil eines Wortes
ſcīa ſcientia scientia Wortliste
tertij = tertii j wird zu i
tert{ij} tertij = tertii einfache Ligatur
cœlum = coelum caelum Mittellatein 9)
Deutsch Wasserstraße = = ß im Deutschen wird nicht normalisiert
Käse = = Umlaute
Tee-Ei = = Bindestrich
Fraktur z{uo} z zu = MUFI, PUA: &uosup (E72D)
z{uo} zuͦ = zu Alternative: combining letter o (0366)
Chinesisch 歴 (6B74) = 歷 (6B77) 6) Zeichenvariante in Unicode
中<国V> 中{国V} (中国) 3) 中{⿴口或} 4) = Zeichenvariante nicht in Unicode
Griechisch ἀλλὰ ... = = ἀλλά ... Gravis wird für Wörterbuch zu Akut
βασιλεύς = = ϐασιλεύς: letter variation
{το}ῖς {το}ῖς (τοῖς) {το}ῖς = einfache Ligatur
τ{ὴν} τ{ὴν} (τὴν) τὴν τήν schwierige Ligatur
{τῶν} {τῶν} (τῶν) {τῶν} = Abbreviatur
  1. "=" in Regularisierung: es gibt kein <reg>, d.h. Regularized = Original (das gilt auch, wenn es kein @norm gibt); "=" in Normalisierung: die Wortform wird nicht normalisiert
  2. falls möglich, verwende die Diakritika zur Disambiguierung
  3. in Original-Spalte in Klammern: neues Original, sobald es <reg> mit faithful-Attribut gibt
  4. automatisiert eventuell eine Zwischenstufe 中<reg faithful="{国}" type="unresolved">国</reg>, damit die Suche nicht bricht; per Hand <reg faithful="中{⿴口或}">中国</reg> (Wortgrenzen beachten, IDS-Sequenz einfügen)
  5. Semantisches {quis} wird in den DESpecs noch auf optisch umgestellt, eventuell auf den etwas länglichen MUFI-Namen {qslstrok}; {que} mit Makron kann zum Beispiel im Alvarus auch quam bedueten, also zu {q3app} oder kürzer {q3}?
  6. Es ist wohl auch im Original-Textmodus nicht sinnvoll, die Zeichenvariante an das Wörterbuch zu senden.
  7. Um die PUA zu vermeiden, könnte man statt <reg norm="idemque">idem́</reg> auch <reg faithful="idem́" norm="idemque">idemq́ꝫ</reg> schreiben, siehe hier?.
  8. Beachte die Klammern in der Original-Spalte. Zur Erläuterung siehe hier?.
  9. Siehe die Diskussion im Abschnitt Latein.

Standard-Normalisierungen in allen Sprachen

  • ſ wird zu s
  • Es gibt keine Normalisierungsregeln für Satzzeichen.
  • Als normalisierenswerte Diakritika kommen nur ó ò ô ö õ ō ŏ in Frage, alle anderen Diakritika sind Fehler und werden nicht normalisiert.
  • Umgang mit hyphen und soft hyphen, <lb/> etc.
  • Umgang mit combining characters versus precomposed characters
  • Falls nicht explizit anders angegeben, gelten alle für Kleinbuchstaben aufgestellten Regeln entsprechend auch für eventuelle Großbuchstaben. Beispiele:
    • Aus "ò wird zu o" folgt die Regel "Ò wird zu O".
    • Die Regel "ſ wird zu s" hat kein Gegenstück, weil es kein großes ſ gibt.

Lohnt es sich, dafür ein sprachunabhängiges Modul zu haben, und die Normalisierung besteht dann aus dem sprachunabhängigen Modul und einem sprachabhängigen Modul, oder wird die Regel "ſ wird zu s" einfach in jedem sprachabhängigen Modul wiederholt?

Wäre es sinnvoll, im sprachunabhängigen Modul eine Regel wie "ß wird zu ss" zu haben, und das Modul für Deutsch überschreibt diese Regel? Wahrscheinlich würde das Ändern der Regeln dadurch schwieriger.

Latein

Ziel der Normalisierung im Lateinischen ist die akzeptierte moderne Schreibweise.

  • Im Gegensatz zum Deutschen wird ß wie in eße oder serenißimi normalisiert.
  • æ wird zu ae
  • ę wird zu ae
  • œ wird zu oe
  • ij wird zu ii
  • Diakritika:
    • es gibt keine Diakritika, die im Lateinischen verpflichtender Teil des Schriftbilds sind
    • überflüssige Diakritika sind ò ô ö wie in aër, verò, hîc (und entsprechend für alle Vokale)
    • Abkürzungs-Diakritika sind õ ō wie in reſiduũ, ſcīa (und entsprechend für alle Vokale)
    • Was ist mit ó ŏ ?
    • andere Diakritika werden nicht normalisiert. Insbesondere die Zeichen 1E14-1E1D und 1EB8-1EC7 und die Äquivalente für die anderen Vokale werden nicht normalisiert.
  • Medievalist characters wie ꝙ (A759) sollten regularisiert sein. Wenn sie doch noch enthalten sind, werden sie nicht normalisiert.
  • u/v: Malcolms Algorithmus für das Italienische kann (mit korrigiertem und angepasstem Umgang mit getrennten Wörtern) für das Lateinische übernommen werden. Sinnvoll ist allerdings wohl eine Neu-Implementierung in Lex. Beispiele für Malcolms Algorithmus:

vnum unum
diuerſarum diversarum
DIVERSARVM DIVERSARUM
PARVVS PARUUS
octauum octavum
loquuti loquuti

Überflüssige Diakritika können zur Lemma- und-Wortform-Disambiguierung verwendet werden. Details müssen noch geklärt werden.

Beachte: Eine Jahreszahl wie MDLXXXV (Benedetti p.5: <emph class="sc">mdlxxxv</emph>) darf nicht normalisiert werden. Mit den neuen Regeln für u/v würde das nicht mehr passieren. Da V immer rechts von X, L, C, D, M ist und rechts neben V nur I sein kann, gibt es wohl auch keine andere römische Zahl, die normalisiert werden würde. (Eigentlich sollte die Zahl auch wie der Inhalt von <var> vor der morphologischen Analyse versteckt werden. Deshalb vielleicht: <num value="1585" style="sc">mdlxxxv</num>, und <num> wird wie <var> ausgenommen.)

Beachte: Alvarus hat ein anderes Set von bedeutungstragenden Diakritika als Benedetti (zum Beispiel enthält Benedetti kein ſcīa). Es könnte also durchaus passieren, dass zum Beispiel ë im Alvarus bedeutungstragend ist. (Ob die beiden Sets tatsächlich inkompatibel oder lediglich nicht gleich sind, weiß ich nicht. Das Beispiel ist frei ausgedacht, und im regularisierten Text sollten bedeutungstragende Diakritika wie gesagt gar nicht mehr vorkommen.)

Beachte das Kodierungsproblem bei der Kommunikation mit Donatus: Wahrscheinlich wird ISO 8859-1 verwendet.

Arboreal: Solange nicht klar ist, warum Malcolm 〈 (2329) und 〉 (232A) normalisiert hat, werden sie bei uns nicht normalisiert.

Was machen wir mit unterschiedlichen Schreibweisen? Im Benedetti gibt es zum Beispiel sowohl cęlum/cælum (wird zur korrekten Schreibweise caelum normalisiert) als auch cœlum (mittellateinische Schreibweise; die normalisierte Schreibweise coelum wird in einem modernen Wörterbuch vermutlich nicht gefunden). Eine Wortliste? Wird die Schreibweise in der Textanzeige normalisiert, oder nur für das Wörterbuch? (Ist das eine Aufgabe der Normalisierung oder doch der Regularisierung? Es ist jedenfalls kein Textfehler und auch nicht buchspezifisch.)

Italienisch

Über Italienisch weiß ich wenig. Aber zumindest die u/v-Regeln gelten auch hier.

Englisch

Gibt es überhaupt sprachspezifische Normalisierungen?

Problem der älteren Sprachstufen.

Französisch

Es gibt wohl keine überflüssigen Diakritika. Übliche Diakritika, die nicht normalisiert werden, sind ó ò ô.

œ wird im Gegensatz zum Lateinischen nicht normalisiert.

Über Französisch weiß ich ansonsten wenig.

Deutsch

Umlaute und ß werden nicht normalisiert, im Gegensatz zum Lateinischen.

Darüber hinaus ist eine orthographische Normalisierung deutscher Texte schwierig. Eventuell wird es mehrere verschiedene Normalierungsregeln in Abhängigkeit vom Alter des Textes geben.

Fraktur

Mir ist noch nicht klar, ob {uo} mit einem MUFI-PUA-Zeichen oder als zuͦ geschrieben werden sollte. Diese Entscheidung findet aber vor der Normalisierung statt. Im ersten Fall findet die Normalisierung "zu" vor, im zweiten Fall "zuͦ".

Für die Normalisierung gibt es also die Regel: uͦ wird zu u.

Chinesisch

Ziel der Normalisierung im Chinesischen ist Textversion mit Standardzeichen.

Die Normalisierung im Chinesischen funktioniert über eine Zeichenliste, in der jeweils ein oder mehr Zeichenvarianten auf ein Standardzeichen zurückgeführt werden. Beispielsweise wird das Zeichen 歴 (6B74) zu 歷 (6B77) normalisiert. (Beachte: der Unicode-Codepoint des Standardzeichens kann höher sein als der Codepoint der Zeichenvariante.)

Im Chinesischen gibt es eine Schwelle, unter der eine Zeichenvariante nicht mehr sinnvoll vom Standardzeichen unterschieden werden kann. Diese Entscheidung ist aber im Text bereits getroffen worden. Die Normalisierung ist nur noch rein technischer Akt: Ersetze das Unicode-Zeichen 歴 durch das-Unicode-Zeichen 歷, etc.

Es liegt in der Natur der Sache, dass die Zeichenliste eine offene Klasse ist. Die Liste wird regelmäßig ergänzt werden. Im Idealfall sollte dies möglich sein, ohne dass Programmcode angepasst werden muss. Insbesondere sollten der Mechanismus und die Liste selbst in getrennten Dateien stehen.

Auch im Original-Modus soll das Standardzeichen an das Wörterbuch geschickt werden.

ZWS werden in der Normalisierung entfernt.

Arboreal: hochgestellte 1 bis 5 werden erstmal nicht normalisiert. (aber Teil der Wortende-Markierung??)

Arabisch

Über Arabisch weiß ich zu wenig.

Keilschrift

Über Keilschrifttexte weiß ich zu wenig.

Griechisch

Ziel der Normalisierung im Griechischen ist die akzeptierte moderne Schreibweise des Altgriechischen.

Im griechischen Text sollten alle Ligaturen regularisiert sein. Noch im Text vorhandene Ligaturen werden nicht normalisiert.

Im Text können middle dots enthalten sein, die ebenfalls nicht normalisiert werden.

Beachte bei der Kommunikation mit Pollux das Problem mit dem Sigma (Ticket #64):

  • Anzeige im Text sollte richtig sein
  • link sollte richtig sein
  • Wörterbuch-Eintrag sollte richtig sein

Sind dafür Änderungen an Donatus / Pollux nötig? Oder brauchen wir ein kleines Konvertierungsmodul?