Changes between Version 2 and Version 3 of normalization/1
- Timestamp:
- Dec 10, 2010, 11:56:58 AM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
normalization/1
v2 v3 3 3 == 1. Wie werden Wörter zurzeit normalisiert? == 4 4 5 I m folgenden gehe ich alle Sprachen einzeln durch. Zuerst werden jeweils die Normalisierungen in der Arboreal-Klasse [attachment:OrthographicRules.java OrthographicRules] aufgelistet, danach werden die Änderungen in der Backend-Klasse [attachment:MpdlNormalizer.java MpdlNormalizer] (siehe auch [source:hg/software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/analyzer/MpdlNormalizer.java hier]) aufgelistet.5 In Arboreal wird jede Sprache getrennt normalisiert. Im folgenden gehe ich die Sprachen einzeln durch. Zuerst werden jeweils die Normalisierungen in der Arboreal-Klasse [attachment:OrthographicRules.java OrthographicRules] aufgelistet, danach werden die Änderungen in der Backend-Klasse [attachment:MpdlNormalizer.java MpdlNormalizer] (siehe auch [source:hg/software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/analyzer/MpdlNormalizer.java hier]) aufgelistet. 6 6 7 7 In den Tabellen wird immer zuerst die normalisierte Form genannt, und dann alle Formen, die in dieselbe Form normalisiert werden. Beispiel: … … 16 16 17 17 ";" wird getilgt, wenn das Zeichen direkt davor kein Buchstabe ("Character.isLetter") ist. 18 19 Malcolm: Linguistic note: /u/ and /v/ are rarely phonemic in Latin, as in20 * alui 's/he nourished' vs. alvi 'of a belly',21 * volui 's/he wished' or 'it rolled' vs. volvi 'to be rolled',22 * (in)seruit 's/he joined together' vs. (in)servit 's/he serves'.23 18 24 19 || -- || combining ò (0300) combining ó (0301) combining ô (0302) soft hyphen (00AD) || … … 43 38 || -- || 〈 (2329) 〉 (232A) || 44 39 45 46 Beachte: Zirkumflex (z.B. û 00FB, ê 00EA) wird normalisiert, aber nicht Tilde (z.B. ũ 0169, ẽ 1EBD) 40 Das Zirkumflex (z.B. û 00FB, ê 00EA) wird normalisiert, aber nicht die Tilde (z.B. ũ 0169, ẽ 1EBD). 47 41 48 42 Backend zusätzlich: … … 54 48 === Italienisch === 55 49 56 Regeln: 57 * j: ij wird zu ii 58 * t: tio wird zu zio (i und o können auch groß sein) 59 * h am Wortanfang wird getilgt, außer bei hai, hanno, ho* ('h' only appears at the beginning of some pres. indic. forms of 'avere' -- with the exception of some unimportant loanwords in modern Italian (which I choose to ignore)) 60 * hyphen/soft hyphen wird vor whitespace getilgt, soft hyphen wird durch hyphen ersetzt 61 50 Regeln für u/v: 62 51 * u wird zu v, wenn direkt davor und danach ein Vokal (d.h. A E I O U Æ Œ in groß/klein) steht (hyphen/soft hyphen davor wird übersprungen) 63 52 * v wird zu u, wenn direkt davor und danach ein Konsonant (d.h. B C D F G H K L M N P Q R S T V W X Z in groß/klein sowie ſ ß) steht (hyphen/soft hyphen danach wird übersprungen). Am Anfang eines Wortes oder wenn direkt davor kein Buchstabe ist, reicht ein Konsonant danach. 64 Beachte den Unterschied zur einfachen Regel "v wird u" im Lateinischen.Beispiele für Malcolms Algorithmus:53 Die Regeln für u/v stehen im Gegensatz zur einfachen Regel "v wird zu u" im Lateinischen. Lateinische Beispiele für Malcolms Algorithmus: 65 54 66 55 || vnum || unum || … … 76 65 while ((((c_n = s.charAt(y)) == '-') || (c_n == '\u00ad')) && (y++ < s.length() - 1)); 77 66 }}} 67 68 weitere Regeln: 69 * j: ij wird zu ii 70 * t: tio wird zu zio (i und o können auch groß sein) 71 * h am Wortanfang wird getilgt, außer bei hai, hanno, ho* ('h' only appears at the beginning of some pres. indic. forms of 'avere' -- with the exception of some unimportant loanwords in modern Italian (which I choose to ignore)) 72 * hyphen/soft hyphen wird vor whitespace getilgt, soft hyphen wird durch hyphen ersetzt 78 73 79 74 Wortanfang definiert als whitespace oder ’ (2019) oder \ … … 101 96 102 97 Backend: 103 104 Regeln für u, j, v, t, h, hyphen nicht übertragen wegen Programmfehler(n) 105 106 stattdessen die lateinischen Regeln übernommen (allerdings ohne j, v, "q;", ";", combining characters, soft hyphen, 〈 〉). 107 Die zusätzlichen e-Varianten sind ebenfalls nicht übernommen, stattdessen eine neue Regel "ẍ (1E8D) wird zu e" (gemeint ist ẽ (1EBD), was auch in den zusätzlichen Regeln für Latein vorkommt). 98 * Regeln für u, j, v, t, h, hyphen nicht übertragen wegen Programmfehler(n) 99 * Stattdessen die lateinischen Regeln übernommen (allerdings ohne j, v, "q;", ";", combining characters, soft hyphen, 〈 〉). 100 * Die zusätzlichen e-Varianten sind ebenfalls nicht übernommen, stattdessen eine neue Regel "ẍ (1E8D) wird zu e" (gemeint ist ẽ (1EBD), was auch in den zusätzlichen Regeln für Latein vorkommt). 108 101 109 102 === Englisch === … … 112 105 113 106 Backend: wie bei Latein; wieder ohne j, v, "q;", ";", aber mit combining characters, soft hyphen, 〈 〉. Wieder zusätzlich mit ẍ (1E8D). 114 115 107 116 108 === Französisch === … … 197 189 || -- || hyphen (002D) soft hyphen (00AD) || 198 190 199 Optisch identisch, aber "Tonos" (der monotonische Akzent im modernen Griechisch) wird zu "Oxia" (der Akut im Altgriechischen).191 ά έ ή ί ό ύ ώ: Optisch identisch, aber "Tonos" (der monotonische Akzent im modernen Griechisch) wird zu "Oxia" (der Akut im Altgriechischen). 200 192 201 193 Tippfehler: \uu1f7d statt \u1f7d bei ώ … … 249 241 || ι (03B9) || ί (03AF) || 250 242 251 Diese Regeln sind offenbar nicht oft verwendet worden. 252 243 Weiterer Tippfehler bei Ί (1FDB). 244 245 Die Codepoints 1F58, 1F5A, 1F5C, 1F5E in der Klasse von Υ sind im Gegensatz zu 1F59, 1F5B, 1F5D, 1F5F in Unicode nicht belegt, denn Υ mit Spritus lenis ("psili") gibt es nicht. 253 246 254 247 Backend: genauso … … 256 249 === Weiteres === 257 250 258 In Arboreal werden alle Buchstaben eines Wortes außer dem ersten in Kleinbuchstaben normalisiert. (Ausnahme natürlich u.a. Chinesisch.)In der Backend-Version wurde dies weggelassen.251 In Arboreal werden alle Buchstaben eines Wortes außer dem ersten zu Kleinbuchstaben normalisiert (Ausnahme natürlich u.a. Chinesisch). In der Backend-Version wurde dies weggelassen. 259 252 260 253 In der Backend-Version gibt es zusätzlich eine Methode "deNormalizeToRegExpr". Diese Methode erstellt Teile von regexes, die für Latein, Deutsch und Englisch wohl aus einer normalisierten Form alle Wortformen finden soll, die zu dieser Wortform normalisiert werden. Die Implementation scheint allerdings fehlerhaft zu sein. Ein Beispiel: Wasserstraße wird normalisiert zu Wasserstrasse, daraus wird in "deNormalizeToRegExpr" wiederum "Waßerstraße|Wass[eé]rstrass[eé]". Es werden also die Wortformen Waßerstraße, Wasserstrasse, Wassérstrasse, Wasserstrassé und Wassérstrassé gefunden, aber nicht die originale Form Wasserstraße.