1 geg.: Text "moderner" Orthographie für Antiquasatz, alle kleinen s rund.
3 Liste von 470 000 Wörtern mit korrekter Lang-S-Schreibung,
4 davon 190 000 Wörter mit mindestens einem langem ſ
5 und 130 000 Wörter mit mindestens einem kleinem runden s
6 (davon 80 000 Wörter mit rundem s im Wortinneren).
8 ges.: Text in Orthographie für den Satz mit gebrochenen Schriften (Latin
9 alphabet, Fraktur) mit korrekter Nutzung des runden und langen S)
12 Während die Wandlung "de-Latf" -> "de" eindeutig ist (replace('ſ',
13 's')), muß jedes 's' im Ausgangstext je nach Lage im Wort entweder in
14 'ſ' gewandelt werden oder als 's' stehenbleiben.
17 Implementierungsvarianten:
22 1a) Die Wortliste wird in ein "dictionary/assoziatives Array" gelesen::
25 for word in open('words_de-1901-Latf'):
26 s_word = word.replace(u'ſ', u's')
29 Die Wörter werden ersetzt::
36 Einfach aber ineffizient und problematisch für Wörter die nicht in der
39 1b) Die Wortliste wird in zwei Dictionaries
40 gelesen, eines für Wörter mit langem S, das andere für Wörter mit
45 for word in open('words_de-1901-Latf'):
46 s_word = word.replace(u'ſ', u's')
48 words_lang[s_word] = word
50 words_rund[s_word] = word
52 Die Wörter werden ersetzt::
57 w_Latf = words_lang[word]
59 assert (word in words_rund, "Achtung: Wort unbekannt!")
63 Etwas effizienter. Rückmeldung für nicht erfaßte Wörter.
65 Auch mit dem komplexeren Ansatz hat die Implementierung mit Dictionary
66 das entscheidende Problem, daß nur explizit erfaßte Wörter korrekt gewandelt
67 werden. Neben einem Speicherproblem bedeutet das auch, daß
68 Neubildungen und "vergessene" Wörter "Handarbeit" erfordern.
70 Ein nachgeschalteter Test auf Zusammensetzungen bekannter Wörter (ggf. mit
71 Fugen-s) kann das Problem mindern, aber nicht beheben.
73 2 *spell Rechtschreibprüfung
74 ============================
76 Für die Rechtschreibprüfprogramme ispell/aspell/hunspell wurden effektive
77 Darstellungen gefunden, um aus ca. 371 000 Einträgen der expandierten Liste
78 (dump) eine kompakte Liste mit 83 000 Einträgen zu generieren.
80 Rechtschreibprüfprogramme haben bereits die Fähigkeit zum Ersetzen einzelner
81 Wörter im Text (under Beibehaltung der Satz- und Steuerzeichen).
83 Mit einem Wörterbuch "de-1901-Latf" könnte (nach vorheriger Prüfung des
84 Texts mit "de-1901") automatisch die Wandlung in korrekte Lang-S-Schreibung
85 mittels "alle Fehler ohne Nachfrage korrigieren" erfolgen.
87 Es bleibt das Problem der nicht erfaßten Wörter bzw. der Einträge in privaten
90 In jedem Fall ist ein solches Wörterbuch für die Kontrolle vorhandener oder
91 selbst mit Langem-S erstellter Texte äußerst wünschenswert.
94 Was ist dafür noch nötig?
95 -------------------------
97 * Prüfen der ca. 400 Wörter und Abkürzungen mit weniger als 4 Buchstaben.
100 es gibt viele Ausnahme für Abkürzungen, da diese so geschrieben werden
101 wie die Langform, z.B. "und ſo weiter" -> "uſw." Doppeldeutigkeiten
102 (Miſſ. (Missisipi) vs. Misſ (Fräulein)).
104 * Skript zum Übertragen der Lang-S-Schreibung auf die kompakte Liste
106 * Umstellen der "Expansionsregeln" auf Lang-S Orthographie.
108 * Kontakt zu Björn Jacke, dem Maintainer der deutschen *spell-Listen.
111 3 patgen-generierte Muster
112 ==========================
114 Die von Frank Liang entwickelte Datenstruktur "packed trie" ist äußerst
115 effizient für die Aufgabe, in Zeichenketten an durch Beispiele bestimmte
116 Stellen (Trenn-) Zeichen einzufügen.
118 Ein wesentlicher Vorteil der patgen-Muster ist ihre "Assoziativität": da die
119 Bildungsgesetze und Reglemäßigkeiten natürlicher Sprachen gut mit dem
120 Kompressionsalgorithmus von patgen zusammenpassen, ist für viele nicht
121 explizit angelernte Wörter die Ausgabe der Trennstellen korrekt.
123 Da die Lang-S Schreibung hauptsächlich auf der Grundannahme
126 rundes S am Wort- und Silbenende
128 beruht, können wir patgen für die oben gestellte Aufgabe der automatischen
129 Textkonversion nutzen:
133 Aus der Liste von 470 000 Wörtern mit korrekter Lang-S-Schreibung
134 eine Pseudo-Trennliste erzeugt. Dabei gibt es zwei
135 "Kodierungsmöglchkeiten":
137 a) Trennstellen folgen auf Rund-S:
139 "s" -> "s-" # am Wortende "s"
142 Vorteil: "logische" Pseudo-Trennmuster: Trennstrich an Morphemgrenzen.
144 Bsp.: `words-de-*-Latf.txt` ::
154 b) Trennstellen folgen auf Lang-S und (wegen der
155 Nichtunterscheidung von Groß- und Kleinschreibung) Großes S:
160 Bsp.: `words-de-*-x-lang-s.txt` ::
170 Diese Listen werden mit "patgen" zu Mustersätzen komprimiert:
172 ======= ====================== ====== ==================== ======
173 Sprache Wortliste Wörter Musterdatei Muster
174 ======= ====================== ====== ==================== ======
175 de-1901 words-de-1901-Latf.txt 443151 de-1901-Latf.pat 2383
176 de-1996 words-de-1996-Latf.txt 443319 de-1996-Latf.pat 2517
177 beide words-de-Latf.txt 450106 de-Latf.pat 6783
179 de-1901 words-de-1901-Latf.txt 443151 de-1901-x-long-s.pat 2105
180 de-1996 words-de-1996-Latf.txt 443319 de-1996-x-long-s.pat 2254
181 beide words-de-Latf.txt 450106 de-x-long-s.pat 4179
182 ======= ====================== ====== ==================== ======
184 2. Konversion auf Basis der "Lang-S-Mustersätze"
186 Mit dem "TeX hyphenation algorithm" (oder einer der Portierungen auf
187 Perl, Ruby, Python, PHP, ...) werden für die Wörter des Textes
188 "Lang-S-Trennstellen" bestimmt.
190 Darauf erfolgt die Rückwandlung in ein "Lang-S-Wort".
192 Siehe `skripte/python/patuse/de_Latf_conversion.py` (- nach rund-S)
193 und `skripte/python/patuse/lang_s_conversion.py` (- nach Lang-S)
198 Behandlung von nicht erfaßten Wörtern über die Generalisierung der
199 verarbeiteten Stichprobe.
202 Unbestimmtes Ergebnis bei nicht gelernten Wörtern.
204 Falsch konvertierte gelernte Wörter:
206 ======= ==================== ====================
207 Sprache Musterdatei Konvertierungsfehler
208 ======= ==================== ====================
209 de-1901 de-1901-Latf.pat 0
210 de-1996 de-1996-Latf.pat 0
211 beide de-Latf.pat 344
213 de-1901 de-1901-x-long-s.pat 0
214 de-1996 de-1996-x-long-s.pat 0
215 beide de-x-long-s.pat 254
216 ======= ==================== ====================