wiki:normalization/6

Version 20 (modified by Wolfgang Schmidle, 13 years ago) (diff)

--

4. Wie soll normalisiert werden?

Ziele

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

Außerdem:

  • Die Normalisierungsregeln sollten einfach und eindeutig 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.
  • Es muss für jede Normalisierung eine Begründung geben; kein Zeichen wird auf Verdacht normalisiert.
  • 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 regularisiert ist. 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.

Beispiele für das Zusammenspiel von Regularisierung und Normalierung siehe hier?. 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.

Textanzeige und Wörterbücher

Normalisierung meint in der Regel 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.

Die Normalisierung für das Wörterbuch ist unabhängig vom gerade aktiven Textanzeigemodus: Jede Anfrage an das Wörterbuch wird auf Basis des regularisierten Wortes normalisiert.

Ich gehe 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. Wenn sie nicht reine Lesehilfen sind, 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.

Standard-Normalisierungen in allen Sprachen

  • ſ wird zu s
  • Es gibt (zumindest für die Textanzeige) keine Normalisierungsregeln für Satzzeichen.
  • Bindestriche werden in der Textanzeige nicht normalisiert. Für das Wörterbuch werden Bindestrich am Ende der Zeile entfernt und das Wort zusammengesetzt.
  • Als normalisierenswerte Diakritika kommen nur ó ò ô ö õ ō ŏ in Frage, alle anderen Diakritika 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 in der Textanzeige entsprechend auch für eventuelle Großbuchstaben. (In der Normalisierung für das Wörterbuch entfällt die Version für Großbuchstaben, weil vermutlich nur Kleinbuchstaben weitergeleitet werden.) Beispiele:
    • Aus "ò wird zu o" folgt die Regel "Ò wird zu O".
    • Aus "æ wird zu ae" folgt die Regel "Æ wird zu AE" (und nicht Ae)
    • 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.

Sind die Normalisierungen für die Anzeige und das Wörterbuch in einer Sprache unabhängig voneinander, oder besteht die Normalisierung für das Wörterbuch aus der Normaliserung für die Textanzeige und weiteren Normalisierungen? Bei den überflüssigen Diakritika wäre das nicht möglich, ansonsten ginge es wohl.

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.

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

  • ò ist wohl eine reine Lesehilfe
  • ô ist wohl ein Längezeichen
  • ö ist wohl eine reine Lesehilfe

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.
  • ç wird vorläufig 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.) Möglicherweise brauchen wir eine Sprachschicht "Mittellatein". Als Alternative zum Standard-Latein oder als nachgeschaltetes Modul? Oder als buchspezifisches Normalisierung, eventuell als overlay? Wäre auch bei Alvarus eine buchspezifische Normalisierung sinnvoll, um sich einen großen Teil der Regularisierungen im Text zu sparen? Oder wird unser System damit zu zersplittert? Unsere Texte könnten dann praktisch nur noch bei uns korrekt angezeigt werden.

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.

Bindestriche werden für die Anzeige nicht normalisiert. Für das Wörterbuch: Bindestriche innerhalb eines Wortes werden nicht normalisiert. Probleme wie "Vor- und Rücksicht" (mit space nach dem Bindestrich) können wir wohl nicht lösen. Am Ende der Zeile wird das Wort ohne Bindestrich zusammengesetzt, außer der zweite Teil beginnt mit einem Großbuchstaben. Alles, was trotzdem nicht korrekt erkannt wird, können wir nicht ändern. (Eventuell ist das Wörterbuch clever genug, das Bindestrich-Problem selber zu lösen.)

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

  • 21. Jh. (nach Rechtschreibreform 2000)
  • 20. Jh. (nach Rechtschreibreform 1901)
  • 19. Jh. (weitgehend einheitliche Schreibungen schon vor Rechtschreibreform)
  • etc.

Die Regel "é wird zu e" in Arboreal ist mir unklar, deshalb wird sie nicht übernommen.

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. Wir brauchen eine Architektur, die damit umgehen kann. 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 zumindest in der Normalisierung für das Wörterbuch entfernt.

Die Arboreal-Regeln für fullwidth space, einige Satzzeichen und hochgestellte 1 bis 5 werden nicht übernommen.

Einen Service zur Umwandlung von Lang- in Kurzzeichen könnte man zwar auch anbieten, aber wirklich sinnvoll wäre das für klassisches Chinesisch wohl nicht.

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?