Version 50 (modified by 14 years ago) (diff) | ,
---|
-
6. Wie soll normalisiert werden?
- Ziele
- Regularisierung und Normalisierung
- Textanzeige und Wörterbücher
- Wortform und Grundform
- Das Problem der Umlaute
- Diakritika
- Sprachschichten
- Normalisierung und Suche
- Standard-Normalisierungen in allen Sprachen
- Latein
- Italienisch
- Englisch
- Französisch
- Deutsch
- Chinesisch
- Arabisch
- Keilschrift
- Griechisch
Regularisierung und Normalisierung, I: 1 2 3, II: 4 5 6 7
6. 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 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 irrtümlicherweise nicht regularisiert wurden, 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
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
Die Normalisierung für eine Sprache teilt sich auf in die Normalisierung für die Textanzeige und für das Wörterbuch. 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.
Die Normalisierung für das Wörterbuch teilt sich noch einmal auf:
- sprachimmanent (Beispiel "Gravis wird zu Akut")
- technisch bedingt (Beispiel "Unicode wird zu Betacode")
Sprachimmanente Normalisierungen treffen auf alle Wörterbücher zu. Ich gehe der Einfachheit halber davon aus, dass die in der Tabelle beschriebenen Normalisierungen (Groß- zu Kleinbuchstaben, Entfernen unnötiger Diakritika, chinesische Standardzeichen, Gravis wird Akut) alle sprachimmanent sind, mit der Ausnahme "Kaese" für Celex. Zum Beispiel bei der Umwandlung in Kleinbuchstaben, um ein Wort in Großbuchstaben trotzdem im Wörterbuch zu finden, bin ich mir jedoch nicht sicher, ob sie wirklich sprachimmanent ist. Wenn ein Wörterbuch keine Schwierigkeiten mit Großbuchstaben hat, zum Beispiel weil es Großbuchstaben intern selbst in Kleinbuchstaben umwandelt, müssen wir es nicht normalisieren.
Zu technisch bedingten Normalisierungen kann ich nicht viel sagen. Ich weiß nicht genau, wie die Schnittstelle zu den jeweiligen Wörterbüchern funktioniert und welche Kodierungen dabei verwendet werden.
Die sprachimmanente und die technisch bedingte Normalisierung werden hintereinander geschaltet: zuerst sprachimmanent, dann technisch bedingt. In einer Sprache kann es mehr als ein technisch bedingtes Normalisierungsmodul geben, wenn verschiedene Wörterbücher verschiedene Normalisierungen erwarten. Manche Wörterbucher benötigen gar keine zusätzliche Normalisierung.
Die Normalisierung der Textanzeige ist von den sprachimmanenten und technisch bedingten Normalisierungen für die Wörterbücher ganz unberührt.
Falls wir mit zeitgenössischen Wörterbüchern arbeiten, müssen wir auch diese normalisieren.
- Im Lateinischen bedeutet das zum Beispiel, dass wir die moderne u/v-Schreibung verwenden. Bisher verwenden wir allerdings keine zeitgenössischen lateinischen Wörterbücher.
- Ob wir im Deutschen die gleiche Strategie verwenden können, ist noch nicht klar, insbesondere weil die Normalisierung im Deutschen mit seinen vielen verschiedenen historischen Schreibungen noch nicht feststeht. Das Problem wird im nächsten Abschnitt am Beispiel des Grimm-Wörterbuchs angerissen, das Schreibweisen wie ruszen und abnöthigen verwendet.
Wir brauchen eine Standard-Schreibweise als Austauschformat für alte und neue Wörterbücher, Suche, etc. Am geeignetsten ist wohl die sprachimmanente Normalisierung. Siehe unten "Normalisierung und Suche".
Wortform und Grundform
Die durch die Normalisierung erhaltene Wortform steht möglicherweise nicht genau so im Wörterbuch. Deshalb braucht man noch einen Mechanismus, um von der normalisierten Wortform auf die Grundform zu kommen. Normalerweise ist die Grundform eine festgelegte Wortform aus dem Lemma. Welche Wortform dabei verwendet wird, ist eine Konvention. Beispielsweise wird bei Verben im Lateinischen oft der Infinitiv ("gehen") und im Griechischen die 1. Sg. Ind. Präs. akt. ("ich gehe") verwendet. Manchmal haben verschiedene Lemmas dieselbe Grundform und werden erst durch weitere Wortformen des Lemmas disambiguiert (Beispiel: pecus, pecoris versus pecus, pecudis). Noch häufiger ist der Fall, dass die Wortform zu verschiedenen Lemmas gehört, zum Beispiel "est" von esse oder von edo.
Bei uns funktioniert der Mechanismus zurzeit meines Wissens folgendermaßen:
- Latein: Wortformenliste (hauptsächlich von Perseus)
- Italienisch: ?
- Englisch: Wortformenliste? (Celex)
- Französisch: ?
- Deutsch: Wortformenliste? (Celex)
- Niederländisch: Wortformenliste? (Celex)
- Chinesisch: siehe unten
- Arabisch: Wortformenliste? (hauptsächlich von Perseus)
- Keilschrift: --
- Griechisch: Wortformenliste (hauptsächlich von Perseus)
Eine Folge der nicht aufgelösten Diakritika (siehe unten) ist, dass die Wörter nicht im Wörterbuch gefunden werden. Das ist Absicht. Es ist ein wichtiger Grundsatz, lieber gar keinen Eintrag im Wörterbuch anzubieten als einen falschen. Ausnahme mag sein, wenn man explizit dazusagt, dass der Eintrag automatisch erzeugt wurde und nicht korrekt sein muss.
Das Problem der Umlaute
Die Grundform ist bei Sprachen mit einfacheren Flexionsparadigmen wie Deutsch leichter zu finden als beispielsweise im Lateinischen. Ein Problem entsteht im Deutschen aber dadurch, dass Celex die Umlaute zu ae, oe, ue normalisiert. Beispielsweise werden Poebene und das fiktive Wort Pöbene zum gleichen Wort Poebene normalisiert. Wir können daher nur die Wörter unterscheiden, die Celex unterscheiden kann. Bei Poebene scheint es weiter kein Problem zu geben, denn Pöbene gibt es nicht. Wenn man aber "musste" nachschlagen will, muss man es erst zu "muessen" normalisieren und dann entweder die Form "muessen" im Wörterbuch finden oder "muessen" wieder zurück in "müssen" verwandeln und diese Form dann im Wörterbuch finden.
- Ist das eine korrekte Beschreibung des Problems?
- Was genau ist das Problem? Das Grimmsche Wörterbuch kann vermutlich auch mit ae, oe, ue umgehen: siehe hier. Auch Plurale scheinen kein Problem zu sein. DWDS kann ebenfalls mit Pluralen umgehen: Beispiel Russen. Findet auch "ist", "isst", "ißt".
- Gibt es in anderen Sprachen vergleichbare Probleme?
- Können wir das Problem lösen, indem wir für das Deutsche wie für das Lateinische und Griechische eine Wortliste erstellen und diese eventuell per Hand nachbessern? Oder eine Wortliste für Ausnahmen und für alle anderen Wortformen ein einfacher Algorithmus?
Fragen zu Celex:
- Verwenden wir Celex tatsächlich nur für die Morphologie und nicht als Wörterbuch?
- Funktioniert Celex mit Wortliste oder mit Algorithmus? Oder haben wir bei Celex sogar Zugang zum Algorithmus?
- Celex arbeitet offenbar mit ASCII. Dann wird ß also zu ss? Im Grimm muss man offenbar sz verwenden.
- Was macht Celex mit Bindestrichen?
- Niederländisch hat é wie in der betonten Version één von een. Wohl kein Problem?
Fragen zum Deutschen:
- Gibt es im Deutschen überhaupt Beispiele, wo beide möglichen Ausgangsformen existieren und verschiedene Bedeutungen haben?
- Es gibt wohl wenige Fälle wie "musste", wo die Grundform einen Umlaut hat, den die originale Wortform nicht hatte. Andersrum häufiger: Bäume, Baum.
- Kann man Groß-/Kleinschreibung von Wörtern zur Disambiguierung verwenden?
- Was machen wir mit zusammengesetzten Wörtern? Gibt es überhaupt eine Chance, sie im Wörterbuch zu finden?
Rückführung in eine nicht-normalisierte Form:
- Wenn man aus den Einträgen im Celex eine explizite Liste ermitteln möchte, auf welche nicht-normalisierten Wörter es reagieren würde, muss man aus der normalisierten Form alle möglichen nicht-normalisierten Wortformen erstellen. Das ist schwierig (siehe zum Beispiel hier). Es scheint mir aber auch gar keinen Grund zu geben, warum man von der technisch bedingt normalisierten Form zurück zur Originalform kommen möchte. Das kommt mir verkehrt herum gedacht vor.
- Trotzdem: Kann man die Originalform verwenden, um die korrekte Schreibung der Grundform abzuleiten? Beispiel "Wasserstraßen": Solange alles im Wort bis dahin übereinstimmt, kann man die Schreibung der Originalform übernehmen? Beispiel "flösse" mit Grundform fließen bzw. fliessen: Unterschied schon beim dritten Buchstaben: ö versus i, man kann also automatisiert nicht sagen, ob es fliessen oder fließen wäre. Außer natürlich dadurch, dass die deutsche Rechtschreibung einigermaßen regulär ist: nach ie muss ß stehen. Wenn man nicht in der Schweiz ist.
Eine Liste von möglicherweise schwierigen Wörtern:
- ß
- Russen: Russe -- rußen: rußen, Celex russen?, Grimm erwartet aber ruszen
- flössen -- Flößen: Celex kann sie nicht unterscheiden
- Masse -- Maße: Celex kann sie nicht unterscheiden
- mußte: müssen
- Wasserstraße: ss und ß
- Fußangel: Grimm erwartet Fuszangel. "automatisch erstellter Rückverweis": Fußangel.
- Umlaute
- musste: müssen
- Bäume: Baum (ein im Deutschen üblicher Fall)
- Zooeingang, Poet
- Suppletionen (sind wohl lexikalisiert, also kein großes Problem?)
- waren: sein
- wären: sein
- besser: gut
- Sprachschichten
- abnötigen: Grimm erwartet abnöthigen. Hier braucht man die Normalisierung der Sprachschicht.
- weiteres:
- Schulden (kein Singular)
- einzigste, maximalst
Diakritika
Für Diakritika bedeutet Normalisierung in der Regel, dass sie entfernt werden.
- Diakritika, die in einer Sprache verwendet werden, werden nicht normalisiert: Beispiel ist ä ö ü im Deutschen.
- Diakritika zur Disambiguierung oder als Lesehilfe wie in aër und verò im Lateinischen, die in der modernen Schreibweise nicht mehr verwendet werden, werden normalisiert. Wenn sie nicht reine Lesehilfen sind, können aber noch zur Lemma-Disambiguierung oder zumindest zur Wortform-Disambiguierung beitragen.
- 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 der morphologischen Analyse erweist sich das als Problem.
- 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.
Auch Konsonanten können Diakritika haben. Es ist grundsätzlich möglich, dass in einer Sprache dasselbe Diakritikum bei verschiedenen Buchstaben, also beispielsweise ä und ö, zu verschiedenen Gruppen gehört.
Unicode-Fehler durch identisch aussehende Zeichen werden bei uns im Gegensatz zu Arboreal nicht normalisiert. Zum Beispiel ά (03AC) wird nicht zu ά (1F71) normalisiert. Es ist Aufgabe eines Workflow-Skriptes, solche Zeichen zu finden bzw. zu ersetzen.
Sprachschichten
Dieser Abschnitt ist noch nicht fertig ausgearbeitet. Es ist noch nicht klar, wie wir mit verschiedenen Sprachschichten umgehen sollen. Sehr wahrscheinlich muss es aber unterschiedliche Normalisierungen für unterschiedliche Sprachschichten geben. Beispielsweise ist es nicht sinnvoll, alle deutschen Texte auf die moderne Rechtschreibung zu normalisieren.
Sprachschicht meint eine Art Verfeinerung von Sprachstufen. Der Begriff Sprachstufe, also zum Beispiel Mittelhochdeutsch, Frühneuhochdeutsch und Neuhochdeutsch, ist wohl zu grob für unsere Zwecke. Ein Text von 1890 und von 1910 unterscheidet sich durch die unterschiedliche Schreibung von Thier versus Tier, aber es sind keine verschiedenen Sprachstufen.
Reicht es im Deutschen, nur für die Wörterbücher zu normalisieren? Dann würde zum Beispiel "worinn" angezeigt werden, aber der Wörterbucheintrag für "worin" gezeigt werden. Oder erwartet der Benutzer, dass das Wort in der normalisierten Textanzeige so aussieht wie das nachgeschlagene Wort? Problem ist, dass dem Benutzer bei deutschsprachigen Texten bei einem Unterschied zwischen beiden Formen nicht klar sein muss, ob unser System sich etwas dabei gedacht hat oder ob es schlicht geraten hat und eventuell den falschen Wörterbucheintrag anzeigt.
Ein Beispiel im Lateinischen: 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).
- Möglicherweise brauchen wir eine Sprachschicht "Mittellatein".
- Als Alternative zum Standard-Latein oder als vor- oder nachgeschaltetes Modul? Beachte dabei, dass Benedetti Wortformen aus beiden Sprachschichten hat.
Paul: Dass es in Benedetti caelum und caelum gibt, bedeutet nicht, dass Benedetti eine Mischung aus zwei Sprachschichten ist, sondern dass in dieser Sprachschicht beide Formen nebeneinander verwendet werden. Unterschiedliche Schreibweisen auch bei den Zeitgenossen Cicero und Sallust. Und das Ziel ist, das Wort im Wörterbuch zu finden. Problem der nicht-klassischen Wörter wie "veritas", für die wir kein Wörterbuch haben.
- Eine Wortliste, oder Ersetzungsregeln? Also "cœlum" zu "caelum" oder "cœl-" zu "cael-" oder œ zu ae?
- Wird die Schreibweise in der Textanzeige normalisiert, oder nur für das Wörterbuch? (Wäre das eine Aufgabe der Normalisierung? Gegen Regularisierung spricht: es ist kein Textfehler und auch nicht buchspezifisch.)
- 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? Eine buchspezifische Normalisierung ist quasi eine hochspezialisierte Sprachstufe. Oder wird unser System damit zu zersplittert? Unsere Texte könnten dann praktisch nur noch bei uns korrekt angezeigt werden. Wir könnten aber einen Service anbieten, dass sich Benutzer das XML mit dem entsprechend normalisierten Text herunterladen können.
- 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 identisch sind, weiß ich nicht. Es ist im Alvarus auch oft nicht klar, ob ein Diakritikum optisch bzw. semantisch eher ein Makron, eine Tilde oder "Umlaut-Punkte" ist. Das Beispiel ë ist jedenfalls frei ausgedacht, und im regularisierten Text sollten bedeutungstragende Diakritika gar nicht mehr vorkommen.
Jedem Text ist eine Sprachschicht zugeordnet, entweder durch eine explizite Angabe in den Metadaten oder durch eine implizite Folgerung aus der Sprache des Textes und seinem Erscheinungsjahr.
Jochen: Der Benutzer soll aber auch die Möglichkeit haben, den Text mit den Normalisierungen für andere Sprachschichten auszuprobieren.
- Sollte man einen französischen Text auch probehalber mit den italienischen Normalisierungsregeln anzeigen lassen können, oder nur mit unterschiedlichen Sprachschichten der gleichen Sprache?
- Ich gehe davon aus, dass die Wahl der Sprachschicht sich sowohl auf die Textanzeige als auch auf die Wörterbuch-Normalisierung bezieht.
Normalisierung und Suche
Die Suche sollte per default zu intuitiv nachvollziehbaren Ergebnissen kommen. Wir können uns noch überlegen, welche Suchoptionen wir anbieten wollen, aber zuerst muss das default-Verhalten stimmen. Minimal-Anforderungen:
- Ein Suchwort soll sich immer selbst finden, auch in Originalschreibweise. Konkret soll man ein Wort aus dem Text herauskopieren können, und die Suche findet es dann wieder. Beispiel: Wenn man nach Œuvre sucht, soll zumindest jedes Œuvre im Text gefunden werden. Das ist schwieriger als es klingt, siehe Ticket #58 mit der Form "eiuſdẽ".
- Die normalisierte Form soll alle Formen finden, die zu dieser Form normalisiert werden. Beispiel: oeuvre sollte œuvre finden, und eiusdem sollte eiuſdẽ finden (falls es zu eiuſdem regularisiert wurde und daher zu eiusdem normalisiert wird).
- Die Suche sollte als default nicht zwischen Groß- und Kleinbuchstaben unterscheiden, d.h. das Suchwörter Œuvre und œuvre sollten dieselben Ergebnisse liefern.
eXist und Lucene haben meines Wissens immer noch ein Problem mit mehreren Indexen zu demselben Dokument. Deshalb gehe ich davon aus, dass zu jedem Wort die normalisierte Schreibweise indexiert wird. Beispiel: Original eiuſdẽ wird zu eiuſdem regularisiert und die regularisierte Form wird zu eiusdem normalisiert, daher wird eiuſdẽ als eiusdem indexiert.
Zu Punkt 1: Ein Wort findet sich selbst, wenn man das Suchwort nach den gleichen Regeln normalisiert wie die Wörter im Text. Wahrscheinlich möchte man bei der Indexierung noch die sprachimmantente Normalisierung dazunehmen, so dass das Suchwort ἀλλά auch ἀλλὰ findet. Punkt 2 sollte dann auch kein Problem sein.
Zu Punkt 3: Bei den Regeln für Latein (siehe unten) versuche ich, nur die Normalisierungen aufzuzählen, die im Benedetti tatsächlich benötigt werden. Insbesondere wird zum Beispiel œ normalisiert und Œ nicht, weil es im Benedetti nicht vorkommt. Wenn die Suche nach Œuvre und œuvre dasselbe Ergebnis liefern soll, muss Œuvre also zuerst in Kleinbuchstaben umgewandelt und danach normalisiert werden. (Wenn man bei der Normalisierung doch nicht zwischen Groß- und Kleinbuchstaben unterscheidet, kann man auch erst normalisieren und dann in Kleinbuchstaben umwandeln.)
Die Suche nach "benedicti" soll aber auch das Wort BENEDICTI auf der Titelseite finden. Das heißt, für den Index muss dieses Wort auch in Kleinbuchstaben umgewandelt werden. Dabei gilt wieder: entweder zuerst umwandeln und dann normalisieren, oder die Regeln müssen auch für Großbuchstaben gelten. Im Sinne der Modularität wäre es sinnvoller, dass man erst bis zur sprachimmanenten Form kommt und dann in Kleinbuchstaben umwandelt. Oder das Umwandeln in Kleinbuchstaben ist automatisch Teil der sprachimmanenten Normalisierung (jedenfalls nicht Teil der Normalisierung für die Textanzeige); aber dann kommt es für Wörter wie Œuvre oder ŒUVRE zu spät. Das (fiktive) ŒUVRE muss für die Textanzeige zu OEUVRE normalisiert werden, und dann muss es in Kleinbuchstaben umgewandelt werden. Da es andersrum nicht geht, braucht man wohl doch eine Regel für Œ. (Das würde auch das technische Problem der Kleinbuchstaben in <emph style="sc"> lösen, die in Wirklichkeit small caps sind und im Sinne der Regeln als Großbuchstaben behandelt werden müssten.)
Also folgender Vorschlag:
- Index und Suche mit der sprachimmanenten Normalisierung.
- In der sprachimmanenten Normalisierung werden die Wörter immer in Kleinbuchstaben umgewandelt.
- Erst einen Test mit minimalen Normalisierungsregeln, danach eventuell Regeln für Großbuchstaben ergänzen.
Zu 2: Ist das überhaupt nötig?
- Verwenden wir irgendwelche Wörterbücher, die mit vollständiger Kleinschreibung ein Problem hätten?
- Und andersrum: Nehmen uns die Wörterbücher diese Arbeit ab, indem sie selbst gar nicht nach Groß- und Kleinschreibung unterscheiden? Dann könnte bei einem einzelnen Wörterbuch, das mit Großbuchstaben nicht umgehen kann, die Umwandlung in Kleinbuchstaben Teil der technisch bedingten Normalisierung sein.
- Wichtig: Wie geht eXist und insbesondere Lucene mit Großbuchstaben um?
Zu 3: Vorläufig werden in der neuen Normalisierung für Latein nur die wirklich notwendigen Regeln verwendet, um zu sehen, ob das vielleicht schon ausreicht, und um keine Fehler zu übertünchen. Und beispielsweise sollte aus der Regel "J wird zu I" eigentlich nicht "j wird zu i" folgen, weil j wie in major fast immer falsch ist. Aber siehe unten: Vielleicht muss <reg> dann aufpassen, dass alle j korrigiert sind, und die Normalisierung macht aus major maior, egal ob es ein Transkriptionsfehler ist oder nicht. Wenn wir alle Regeln auch für Großbuchstaben formulieren, würden abgesehen von den Einzelwortregeln noch Regeln für Ę Œ J À È Ò Ù dazukommen. Mindestens die Regeln für Ę À È Ò Ù werden in einem echten lateinischen Text wohl nie angewendet. (Gibt es diese Zeichen überhaupt in einem Setzkasten im 16. Jh.?) Das würde dafür sprechen, das Suchwort einfach in Kleinbuchstaben umzuwandeln und dann erst zu normalisieren (und wenn es für die Architektur einfacher ist, es dann nochmal in Kleinbuchstaben umzuwandeln, was natürlich keinen Effekt mehr hat). Echte Wörter werden erst normalisiert und erst dann in Kleinbuchstaben umgewandelt.
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 und für die Suche im normalisierten Text wird ein Bindestrich am Ende der Zeile entfernt und das Wort zusammengesetzt.
- Als normalisierenswerte Diakritika kommen in der Regel nur ó ò ô ö õ ō ŏ in Frage, alle anderen Diakritika werden nicht normalisiert. Andere Diakritika wie ḫ in der Transliterierung eines Keilschrifttextes oder ǘ in Pinyin gelten von vornherein als Absicht. Und auch bei den Diakritika ó ò ô ö õ ō ŏ müssen bei jeder Sprache die Diakritika, die normalisiert werden sollen, jeweils explizit angegeben werden.
- Umgang mit hyphen und soft hyphen, <lb/> etc.
- Umgang mit combining characters versus precomposed characters
- Falls nicht anders angegeben, gelten 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.
Es ist wohl nicht sinnvoll, ein sprachunabhängiges Modul zu haben, das zum Beispiel die Regel "ſ wird zu s" enthält. (Die sprachspezifische Normalisierung würde dann aus dem sprachunabhängigen Modul und einem sprachabhängigen Modul bestehen.) Der Grund ist, dass ein Zeichen wie ſ irgendwo eine andere Bedeutung haben kann und nicht normalisiert werden soll. Ein anderes Beispiel ist ß: In fast allen Sprachen wird ß zu ss. Wenn es im sprachunabhängigen Modul die Regel "ß wird zu ss" gibt, muss sie vom Modul für Deutsch durch die Regel "ß wird nicht normalisiert" ersetzt werden. Dadurch würde das Ändern der Regeln schwieriger, und man könnte das sprachunabhängige Modul nicht mehr einfach vor dem sprachabhängigen Modul ausführen, da ß ja sonst bereits zu ss normalisiert wäre. Ohne ein sprachunabhängiges Modul muss die Regel "ſ wird zu s" zwar in jedem sprachabhängigen Modul wiederholt werden. Andererseits gibt es nur wenige sprachunabhängige Regeln.
Die Normalisierungsmodule für Textanzeige und Wörterbuch sind dagegen wohl nicht unabhängig voneinander, sondern man kann sie hintereinanderschalten: Erst das Modul für die Textanzeige, dann die sprachimmanente Wörterbuch-Normalisierung, dann technisch bedingte Normalisierungen, dann die Grundformbildung. Die sprachimmanente Wörterbuch-Normalisierung besteht dann nur noch aus den zusätzlichen Normalisierungen, die für die Textanzeige nicht gemacht werden. Die bisher einzige Ausnahme ist die Wortform-Disambiguierung durch Lesehilfen wie hîc. Das wäre aber wohl ein lösbares Problem, denn man könnte die Disambiguierungsinformation getrennt aufbewahren.
Latein
Ziel der Normalisierung im Lateinischen ist die moderne Schreibweise.
- Im Gegensatz zum Deutschen wird ß wie in eße oder serenißimi normalisiert.
- æ wird zu ae
- ę wird ebenfalls 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.
- Ich habe es zwar nicht überprüft, gehe aber davon aus, dass der Umgang mit getrennten Wörter grundsätzlich richtig ist: Bei der Regel "u zu v" kann vor dem u noch ein Zeilenumbruch sein (d.h. das u ist am Zeilenanfang wie bei "di-<lb/>uiſa") und bei der Regel "v zu u" kann nach dem v noch ein Zeilenumbruch sein (d.h. das v ist am Zeilenende wie im hypothetischen "SOLV-<lb/>TIONES"). Ein v am Zeilenende kommt zumindest im Benedetti nicht vor. (Überhaupt kommt der Kleinbuchstabe v im Benedetti offenbar nur am Anfang eines Wortes vor; technische Ausnahme: small caps werden innerhalb eines tags mit Kleinbuchstaben wiedergegeben.)
- Eine Regel "qv" wird zu "qu" muss ergänzt werden.
- Eine Neu-Implementierung in Lex wäre sinnvoll.
Überflüssige Diakritika können zur Lemma- und Wortform-Disambiguierung verwendet werden. Details müssen noch geklärt werden:
- ò ist wohl eine reine Lesehilfe. Wann genau wird sie verwendet?
- ô ist wohl ein Längezeichen, das zur Disambiguierung verwendet werden kann
- ö ist wohl eine reine Lesehilfe, die Information "kein Diphthong" hilft wohl nicht bei der Disambiguierung
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 keine 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 besser: <num value="1585" style="sc">mdlxxxv</num>, und <num> wird wie <var> ausgenommen.)
Beachte das Kodierungsproblem bei der Kommunikation mit Donatus: Wahrscheinlich wird ISO 8859-1 verwendet.
unklare Punkte von Arboreal:
- ç wird vorläufig nicht normalisiert
Benedetti
Eine Untersuchung der Diakritika im Benedetti mit einem Skript ergibt (die Zahlen sind nur ungefähr richtig; das Skript findet keine Formen wie ſeptì<unsure/>mi oder prin-<pb/>cipìum):
- Gravis
- à oft, über 10x bei poſteà proptereà quàm à vnà. Meistens am Wortende, Ausnahmen oft quàm, 8x aliàs, 1x hàbebit, 1x postquàm, 1x etiàm (steht so im Text), 1x peràccidens (im Text: per àccidens).
- è oft, und nur am Ende. Wenn nicht am Ende, ist es ein Fehler (falsches Zeichen oder fehlendes Leerzeichen)
- ì nur 6x in merkwürdigen Wörtern: nicht normalisieren
- ò oft, 24x Quòd, ansonsten praktisch immer am Ende (1x mòdum: Satzfehler?)
- ù einige Male (insgesamt ca. 16x), auch im Wort, davon meistens (10x) -ùm. futùra, qùæ sind Transkriptionsfehler, tùc muss ein Satzfehler sein, tantùm steht so im Text, 3x più ist in italienischen Zitaten.
- Zirkumflex
- î nur 14x, davon 11x hîc, 1x quîret (p.268), 1x alíâs (p.303) schlechter Druck?, 1x Quî (384).
- hîc ist wohl (ein Längezeichen und) ein Hinweis, dass nicht die Form von hic haec hoc, sondern das Adverb "hier/dort" gemeint ist?
- Andere Vokale kommen nicht vor.
- Diärese kommt im Benedetti nicht vor, aber in einem anderen Text gibt es oft aër.
- Akut ist wohl ein Hinweis auf einen (Transkriptions-)Fehler:
- 1x quám
- 14x é (außer vnitaté kein Wort mehr als einmal), manchmal offensichtlich Tilde gemeint: differétia
- 8x í : einzelne Wörter, z.B. commutatíuæ: Transkriptionsfehler bei schlechtem Druck
- ó 2x
- ú 11x, davon 2x cú wohl für Tilde, z.B. ſecundú ist Tilde
- Makron kommt nicht vor.
- Breve kommt nicht vor.
- Tilde ist ein Abkürzungszeichen.
- Großbuchstaben mit Diakritika kommen nicht vor.
Ein wichtiges Ergebnis ist, dass man verschiedene Vokale mit demselben Diakritikum nicht gleich behandeln darf.
Gravis am Wortende Zeichen für starre Form (meistens Adverb), im Wort Wortformdisambiguierung? Zum Beispiel quòd gar keine Wortform-Disambiguierung und auch keine echte Lesehilfe, sondern eine "wortübergreifende Disambiguierung", um durch den manchmal schlechten Druck bedingte Fehllesungen zu vermeiden? (Auch "per àccidens" am Anfang einer Zeile? Regel?)
Œ und Ę kommen im Gegensatz zu Æ nicht vor, also keine Regel. (Alternative wäre: eine Regel, die im Benedetti nie angewendet wird.)
Großes J kommt 4x vor:
- JACOBO und JLLVST. jeweils kursiv,
- JD unklares drop cap,
- Jupiter Transkriptionsfehler durch schlechten Druck.
Also keine Regel für IJ. Kleine j ohne i sind Transkriptionsfehler. (Es gibt aber 1x DIj: Regel dafür? Oder regularisieren? Dann müsste man aber bei allen drop caps regularisieren.) Alternative wäre, nicht die ij-Regel aus dem Italienischen zu übernehmen, sondern einfach jedes j zu i zu machen. Wäre das besser? Verdeckt Transkriptionsfehler. Wenigstens J zu I? Ist ein J am Anfang eines Wortes denn wirklich ein eigener Buchstabe, oder ist es eine graphische Variante des kursiven I, ähnlich wie quam und QVAM? In der Zeile von JACOBO gibt es auch ein normales I. Trotzdem: "AD EVNDEM IACOBVM" (upright) Wikipedia: I unfd J seit dem Mittelalter verschiedene Laute, aber in der Schrift noch nicht klar getrennt. Also: <reg> sollte aufpassen, dass im wesentlichen keine j übrig sind, und die Normalisierung darf jedes noch übrige j zu i machen?
Deshalb auf der Basis des Benedetti vorläufig folgende explizite Liste für Latein:
- ſ : s
- ß : ss
- æ ę : ae
- Æ : AE
- œ : oe
- ij : ii
- u/v-Regeln
- überflüssige Diakritika:
- -à -è -ò -ùm (am Wortende)
- einzelne Wörter: quàm (auch als Quàm), aliàs, hîc, quòd (auch als Quòd QVòd), Cùmque, aër
Die Normalisierung sollte möglichst wenige Einzelwörter aufzählen, aber ganz vermeiden lassen sie sich nicht.
- besser Regel -àm statt Regel für Einzelwörter quàm / Quàm, postquàm, etiàm? (wohl ja)
- besser Regel -às, obwohl es nur in aliàs vorkommt?
- außer in hîc sollte î nicht normalisiert werden
- besser Regel -òd, obwohl es nur in quòd / Quòd / QVòd vorkommt? Argument wäre auch, dass man nicht mit den u/v-Regeln durcheinander kommt.
- Cùmque kann man nicht sinnvoll mit -ùm verbinden.
- besser Regel "ë wird e", auch wenn es bisher nur in aër vorkommt?
Für die erste Umsetzung bis Weihnachten:
- Architektur erstmal wie bisher oder schon wie sie sein soll?
- Java oder Lex?
- Code aus Arboreal übernehmen oder nicht?
- Die einfachen Ersetzungsregeln können direkt aus dem Lateinischen bzw. Italienischen übernommen werden.
- Die u/v-Regeln können mit Anpassungen bei Zeilenumbrüchen, Fehlerkorrekturen und einer Ergänzung für qu aus dem Italienischen übernommen werden.
- Die Diakritika-Regeln sind anders.
- Die Disambiguierung von hîc fehlt ganz. In der ersten Version weglassen?
- keine technisch bedingte Normalisierung
- auf Basis des Benedetti, wird daher sicher durch weitere Texte noch ein bisschen erweitert werden
- vielleicht auch noch Umstellung der Einzelwörter zu allgemeinen Regeln
Vor weiteren Änderungen der Regeln sollten wir die erste Implementation abwarten und schauen, wie gut die Regeln in der Praxis funktionieren.
Italienisch
Über Italienisch weiß ich wenig. Aber zumindest die u/v-Regeln gelten auch hier.
unklare Punkte von Arboreal:
- Gravis (accento grave) zu Akut (accento acuto)?
Englisch
Gibt es überhaupt sprachspezifische Normalisierungen?
Problem der älteren Sprachstufen (und Sprachschichten).
Französisch
Über Französisch weiß ich wenig.
- Es gibt wohl keine überflüssigen Diakritika.
- Übliche Diakritika, die nicht normalisiert werden, sind ó ò ô.
- œ wird im Gegensatz zum Lateinischen nicht normalisiert.
- Wie ist es mit ß und u/v?
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; und wenn überhaupt, dann in der Regularisierung. Am Ende der Zeile wird das Wort ohne Bindestrich zusammengesetzt, außer der zweite Teil beginnt mit einem Großbuchstaben. Alles, was dann immer 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.
unklare Punkte von Arboreal:
- Die Regel "é wird zu e" wird vorläufig 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 eine 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. (Der Unicode-Codepoint ist leider kein verwertbarer Hinweis: Der Codepoint des Standardzeichens kann wie hier höher sein als der Codepoint der Zeichenvariante. Die Unihan-Datenbank von Unicode liefert mehr Information.)
Technisch gesehen ähnelt die Normalisierung einer Zeichenvariante damit dem Finden der Grundform wie bei "Bäume" zu "Baum" (linguistisch ist es allerdings nicht das gleiche). Es gibt im Chinesischen dann wie im Lateinischen und Griechischen eine Wortliste. Unterschiede sind:
- Die Wortliste wird sowohl in der Textanzeige als auch für das Wörterbuch verwendet.
- Die Wortliste ist notwendigerweise niemals vollständig, beispielsweise wenn Unicode weitere Schriftzeichen aufnimmt.
Im Chinesischen gibt es eine Schwelle, unter der eine Zeichenvariante nicht mehr sinnvoll vom Standardzeichen unterschieden werden kann. (Die Variante 歴 von 歷 gehört nicht dazu, auch wenn die beiden Zeichen für das ungeübte Auge gleich aussehen. Tatsächlich hat 歴 zwei Striche weniger als 歷.) 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.
Die Normalisierung für das Wörterbuch ist wie immer unabhängig vom Textanzeigemodus: Auch im Original-Modus soll das Standardzeichen an das Wörterbuch geschickt werden.
Wenn man ein <s> hat wie zum Beispiel "凡古今一言之嘉", sind die Wortgrenzen erstmal noch nicht bekannt. Wir haben noch keinen Mechanismus, um Wortgrenzen zu bestimmen. Soll auf einer Zwischenseite für zum Beispiel 古 auch 古今 vorgeschlagen werden? Kann man herausfinden, ob das Wörterbuch diesen Eintrag haben wird? Oder überlässt man dem Wörterbuch, was es aus 古 macht? (Wäre das dann wiederum ein rudimentärer Mechanismus zum Bestimmen von Wortgrenzen? Das zugrundeliegende Wörterbuch müsste jedenfalls für klassisches Chinesisch sein, sonst gibt es gar keine Chance, dass dieser Ansatz funktioniert.)
Die ZWS werden zumindest in der Normalisierung für das Wörterbuch entfernt. Falls wir die ZWS aber zur Wortendemarkierung verwenden, ist die Information, dass zwischen zwei Zeichen kein ZWS steht, ein Hinweis, dass die Zeichen zusammen ein Wort bilden. Das ist noch nicht ausgereift, denn mit unsichtbaren Zeichen wie ZWS kann man nicht gut arbeiten.
Einen Service zur Umwandlung von Lang- in Kurzzeichen könnten wir zwar auch anbieten, aber wirklich sinnvoll wäre das für klassisches Chinesisch wohl nicht.
Arabisch
Über Arabisch weiß ich zu wenig.
Keilschrift
Unicode enthält:
- Ugaritisch (10380-1039F)
- Altpersisch (103A0-103DF)
- Zahlen und Interpunktion (12400-1247F)
Über Keilschrifttexte weiß ich zu wenig. Es geht aber wohl nicht Unicode-Zeichen, sondern um Transliterierungen der originalen Texte. Vermutlich wird hier gar nichts normalisiert.
Griechisch
Ziel der Normalisierung im Griechischen ist die moderne Schreibweise des Altgriechischen.
- Im griechischen Text sollten alle Ligaturen regularisiert sein, d.h. in das faithful-Attribut verschoben. 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 für Ticket 64 Änderungen an Donatus / Pollux nötig? Oder brauchen wir ein kleines Konvertierungsmodul?