Changes between Initial Version and Version 1 of normalization


Ignore:
Timestamp:
Nov 7, 2010, 12:53:12 PM (14 years ago)
Author:
Wolfgang Schmidle
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • normalization

    v1 v1  
     1= Normalisierung =
     2
     3[[PageOutline(1-4,,pullout)]]
     4
     5== 1. Wie werden Wörter zurzeit normalisiert? ==
     6
     7Im folgenden gehe ich alle Sprachen einzeln durch. Zuerst werden jeweils die Normalisierungen in der Arboreal-Klasse `OrthographicRules.java` aufgelistet, danach werden die Änderungen in der Backend-Klasse `MpdlNormalizer.java` aufgelistet.
     8
     9In den Tabellen wird immer zuerst die normalisierte Form genannt, und dann alle Formen, die in dieselbe Form normalisiert werden. Beispiel:
     10|| ae || æ (00E6) ę (0119)  ||
     11bedeutet, dass æ und ę zu ae normalisiert werden. "--" bedeutet, dass die Form ganz getilgt wird. Bei combining characters habe ich jeweils ein o dazugemacht, damit man es besser erkennen kann.
     12
     13=== Latein ===
     14
     15|| i || j ||
     16|| u || v ||
     17|| que || q; ||
     18
     19";" wird getilgt, wenn das Zeichen direkt davor kein Buchstabe ("Character.isLetter") ist.
     20
     21|| -- || combining ò (0300) combining ó (0301) combining ô (0302) soft hyphen (00AD)  ||
     22|| A || À (00C0) Á (00C1) Â (00C2) Ä (00C4) Ā (0100) Ă (0102)  ||
     23|| Ae || Æ (00C6) Ę (0118)  ||
     24|| C || Ç (00C7)  ||
     25|| E || È (00C8) É (00C9) Ê (00CA) Ë (00CB) Ē (0112) Ĕ (0114)  ||
     26|| I || Ì (00CC) Í (00CD) Î (00CE) Ï (00CF) Ī (012A) Ĭ (012C)  ||
     27|| O || Ò (00D2) Ó (00D3) Ô (00D4) Ö (00D6) Ō (014C) Ŏ (014E)  ||
     28|| Oe || Œ (0152)  ||
     29|| U || Ù (00D9) Ú (00DA) Û (00DB) Ü (00DC) Ū (016A) Ŭ (016C)  ||
     30|| a || à (00E0) á (00E1) â (00E2) ä (00E4) ā (0101) ă (0103)  ||
     31|| ae || æ (00E6) ę (0119)  ||
     32|| c || ç (00E7)  ||
     33|| e || è (00E8) é (00E9) ê (00EA) ë (00EB) ē (0113) ĕ (0115)  ||
     34|| i || ì (00EC) í (00ED) î (00EE) ï (00EF) ī (012B) ĭ (012D)  ||
     35|| o || ò (00F2) ó (00F3) ô (00F4) ö (00F6) ō (014D) ŏ (014F)  ||
     36|| oe || œ (0153)  ||
     37|| s || ſ (017F)  ||
     38|| ss || ß (00DF)  ||
     39|| u || ù (00F9) ú (00FA) û (00FB) ü (00FC) ū (016B) ŭ (016D)  ||
     40|| -- || 〈 (2329) 〉 (232A)  ||
     41
     42Backend zusätzlich:
     43
     44|| e || Ḕ (1E14) ḕ (1E15) Ḗ (1E16) ḗ (1E17) Ḙ (1E18) ḙ (1E19) Ḛ (1E1A) ḛ (1E1B) Ḝ (1E1C) ḝ (1E1D) Ẹ (1EB8) ẹ (1EB9) Ẻ (1EBA) ẻ (1EBB) Ẽ (1EBC) ẽ (1EBD) Ế (1EBE) ế (1EBF) Ề (1EC0) ề (1EC1) Ể (1EC2) ể (1EC3) Ễ (1EC4) ễ (1EC5) Ệ (1EC6) ệ (1EC7)  ||
     45
     46
     47=== Italienisch ===
     48
     49Regeln:
     50 * 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)
     51 * j: ij wird zu ii
     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), außerdem am Anfang eines Wortes oder wenn direkt davor kein Buchstabe ist
     53 * t: tio wird zu zio (i und o können auch groß sein)
     54 * h am Wortanfang wird in 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))
     55 * hyphen/soft hyphen wird vor whitespace getilgt, soft hyphen wird durch hyphen ersetzt
     56
     57Wortanfang definiert als whitespace oder ’ (2019) oder \
     58
     59Programmfehler bei "v" (falsch, richtig):
     60{{{
     61while ((((c_n = s.charAt(y)) == '-') || (c_n == '\u00ad')) && (y++ > 0));
     62while ((((c_n = s.charAt(y)) == '-') || (c_n == '\u00ad')) && (y++ < s.length() - 1));
     63}}}
     64
     65|| Ae || Æ (00C6)  ||
     66|| Oe || Œ (0152)  ||
     67|| ae || æ (00E6)  ||
     68|| oe || œ (0153)  ||
     69|| s || ſ (017F)  ||
     70|| ss || ß (00DF)  ||
     71|| À (00C0) || Á (00C1)  ||
     72|| È (00C8) || É (00C9)  ||
     73|| Ì (00CC) || Í (00CD)  ||
     74|| Ò (00D2) || Ó (00D3)  ||
     75|| Ù (00D9) || Ú (00DA)  ||
     76|| à (00E0) || á (00E1)  ||
     77|| è (00E8) || é (00E9)  ||
     78|| ì (00EC) || í (00ED)  ||
     79|| ò (00F2) || ó (00F3)  ||
     80|| ù (00F9) || ú (00FA)  ||
     81
     82also:
     83 * Diphthongzeichen aufgelöst, ſ und ß (Teilmenge der Regeln für Latein)
     84 * Gravis wird zu Akut (anders als bei Latein)
     85
     86Backend:
     87
     88Regeln für u, j, v, t, h, hyphen nicht übertragen wegen Programmfehler(n)
     89
     90stattdessen die lateinischen Regeln übernommen (allerdings ohne j, v, "q;", ";", combining characters, soft hyphen, 〈 〉). 
     91Die 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).
     92
     93=== Englisch ===
     94
     95Englisch fehlt in Arboreal.
     96
     97Backend: wie bei Latein; wieder ohne j, v, "q;", ";", aber mit combining characters, soft hyphen, 〈 〉. Wieder zusätzlich mit ẍ (1E8D).
     98
     99
     100=== Französisch ===
     101
     102Regeln für u und v genau wie bei Italienisch, mit dem gleichen Programmfehler.
     103
     104|| -- || hyphen (002D) soft hyphen (00AD) ||
     105|| ae || æ (00E6)  ||
     106|| s || ſ (017F)  ||
     107|| ss || ß (00DF)  ||
     108
     109Backend: Regeln für u und v weggelassen. Ansonsten wie bei Arboreal.
     110
     111=== Deutsch ===
     112
     113In Arboreal eine andere Definition für Wortanfang ("beginWord") als zum Beispiel im Italienischen: nach Whitespace und . , : ; ? ! ( < [ ' " ‘ “ (wird nur dafür verwendet, das Wort ab dem zweiten Buchstaben in Kleinbuchstaben umzuwandeln)
     114
     115|| -- || hyphen (002D) soft hyphen (00AD)  ||
     116|| Ae || Ä (00C4)  ||
     117|| Oe || Ö (00D6)  ||
     118|| Ue || Ü (00DC)  ||
     119|| ae || ä (00E4)  ||
     120|| e || é (00E9)  ||
     121|| oe || ö (00F6)  ||
     122|| ss || ß (00DF)  ||
     123|| ue || ü (00FC)  ||
     124
     125Backend: genauso
     126
     127=== Chinesisch ===
     128
     129|| " " || " " (3000)  ||
     130|| , || 、 (3001)  ||
     131|| . || 。 (3002)  ||
     132|| 1 || ¹ (00B9)  ||
     133|| 2 || ² (00B2)  ||
     134|| 3 || ³ (00B3)  ||
     135|| 4 || ⁴ (2074)  ||
     136|| 5 || ⁵ (2075)  ||
     137
     138Die Zeile, die ZWS (200B) tilgt, ist auskommentiert mit dem Kommentar "BREAKS EVERYTHING!"
     139
     140Backend: Genauso, allerdings sind die Zeilen für " " (3000)  、(3001) 。(3002) als Folge von Ticket [https://it-dev.mpiwg-berlin.mpg.de/tracs/mpdl-project-software/ticket/32 #32] auskommentiert.
     141
     142
     143=== Arabisch ===
     144
     145Trage ich bei Interesse nach.
     146
     147(fehlt im Backend)
     148
     149=== Keilschrift ===
     150
     151Das meint:
     152 * akk: !Akkadisch/Akkadian
     153 * sux: !Sumerisch/Sumerian
     154 * elx: !Elamisch/Elamite
     155 * hit: !Hethitisch/Hittite
     156 * ura: !Urartäisch/Urartian? (ISO 639-3: ura ist eine Amazonas-Sprache (Urarina), Urartäisch ist xur)
     157 * peo: !Altpersisch/Old Persian
     158 * uga: !Ugaritisch/Ugaritic
     159 * qam: local use
     160 * qcu: local use
     161 * qhu: local use
     162 * qpc: local use
     163
     164Trage ich bei Interesse nach.
     165
     166(Backend: wie bei Arboreal)
     167
     168=== Griechisch ===
     169
     170|| σ (03C3) || ς (03C2)  ||
     171|| -- || < > [ ] 1 2 ||
     172|| ά (1F71) || ά (03AC)  ||
     173|| έ (1F73) || έ (03AD)  ||
     174|| ή (1F75) || ή (03AE)  ||
     175|| ί (1F77) || ί (03AF)  ||
     176|| ό (1F79) || ό (03CC)  ||
     177|| ύ (1F7B) || ύ (03CD)  ||
     178|| ώ (1F7D) || ώ (03CE)  ||
     179|| -- || hyphen (002D) soft hyphen (00AD)  ||
     180
     181Optisch identisch, aber Tonos wird zu Oxia.
     182
     183Tippfehler: \uu1f7d statt \u1f7d bei ώ
     184
     185Backend: genauso; Tippfehler korrigiert
     186
     187
     188=== Griechisch ohne Akzente ===
     189
     190Greek Atonic ("el_atonic"") meint, dass alle Akzente und Spiritus weggelassen werden. Normales modernes Griechisches hat dagegen noch Betonungszeichen (Oxia) bei mehrsilbigen Wörtern.
     191
     192|| σ (03C3) || ς (03C2)  ||
     193
     194"map characters with diacritics to their plain equivalent":
     195
     196|| ΁ (0381) || ά (03AC)  ||
     197|| ΅ (0385) || έ (03AD)  ||
     198|| · (0387) || ή (03AE)  ||
     199|| Ή (0389) || ί (03AF)  ||
     200|| Α (0391) || Ἀ (1F08) Ἁ (1F09) Ἂ (1F0A) Ἃ (1F0B) Ἄ (1F0C) Ἅ (1F0D) Ἆ (1F0E) Ἇ (1F0F) ᾈ (1F88) ᾉ (1F89) ᾊ (1F8A) ᾋ (1F8B) ᾌ (1F8C) ᾍ (1F8D) ᾎ (1F8E) ᾏ (1F8F) Ὰ (1FBA) Ά (1FBB) ᾼ (1FBC)  ||
     201|| Ε (0395) || Ἐ (1F18) Ἑ (1F19) Ἒ (1F1A) Ἓ (1F1B) Ἔ (1F1C) Ἕ (1F1D)  ||
     202|| Η (0397) || Ἠ (1F28) Ἡ (1F29) Ἢ (1F2A) Ἣ (1F2B) Ἤ (1F2C) Ἥ (1F2D) Ἦ (1F2E) Ἧ (1F2F) ᾘ (1F98) ᾙ (1F99) ᾚ (1F9A) ᾛ (1F9B) ᾜ (1F9C) ᾝ (1F9D) ᾞ (1F9E) ᾟ (1F9F) Ὴ (1FCA) Ή (1FCB) ῌ (1FCC)  ||
     203|| Ι (0399) || Ϊ (03AA) Ἰ (1F38) Ἱ (1F39) Ἲ (1F3A) Ἳ (1F3B) Ἴ (1F3C) Ἵ (1F3D) Ἶ (1F3E) Ἷ (1F3F) Ὶ (1FDA)  ||
     204|| Ο (039F) || Ὀ (1F48) Ὁ (1F49) Ὂ (1F4A) Ὃ (1F4B) Ὄ (1F4C) Ὅ (1F4D) Ί (1FDB) Ὸ (1FF8) Ό (1FF9)  ||
     205|| Ρ (03A1) || Ῥ (1FEC)  ||
     206|| Υ (03A5) || Ϋ (03AB) ὘ (1F58) Ὑ (1F59) ὚ (1F5A) Ὓ (1F5B) ὜ (1F5C) Ὕ (1F5D) ὞ (1F5E) Ὗ (1F5F) Ὺ (1FEA) Ύ (1FEB)  ||
     207|| Ω (03A9) || Ὠ (1F68) Ὡ (1F69) Ὢ (1F6A) Ὣ (1F6B) Ὤ (1F6C) Ὥ (1F6D) Ὦ (1F6E) Ὧ (1F6F) ᾨ (1FA8) ᾩ (1FA9) ᾪ (1FAA) ᾫ (1FAB) ᾬ (1FAC) ᾭ (1FAD) ᾮ (1FAE) ᾯ (1FAF) Ὼ (1FFA) Ώ (1FFB) ῼ (1FFC)  ||
     208|| α (03B1) || ἀ (1F00) ἁ (1F01) ἂ (1F02) ἃ (1F03) ἄ (1F04) ἅ (1F05) ἆ (1F06) ἇ (1F07) ὰ (1F70) ά (1F71) ᾀ (1F80) ᾁ (1F81) ᾂ (1F82) ᾃ (1F83) ᾄ (1F84) ᾅ (1F85) ᾆ (1F86) ᾇ (1F87) ᾲ (1FB2) ᾳ (1FB3) ᾴ (1FB4) ᾶ (1FB6) ᾷ (1FB7)  ||
     209|| ε (03B5) || ἐ (1F10) ἑ (1F11) ἒ (1F12) ἓ (1F13) ἔ (1F14) ἕ (1F15) ὲ (1F72) έ (1F73)  ||
     210|| η (03B7) || ἠ (1F20) ἡ (1F21) ἢ (1F22) ἣ (1F23) ἤ (1F24) ἥ (1F25) ἦ (1F26) ἧ (1F27) ὴ (1F74) ή (1F75) ᾐ (1F90) ᾑ (1F91) ᾒ (1F92) ᾓ (1F93) ᾔ (1F94) ᾕ (1F95) ᾖ (1F96) ᾗ (1F97) ῂ (1FC2) ῃ (1FC3) ῄ (1FC4) ῆ (1FC6) ῇ (1FC7)  ||
     211|| ι (03B9) || ϊ (03CA) ἰ (1F30) ἱ (1F31) ἲ (1F32) ἳ (1F33) ἴ (1F34) ἵ (1F35) ἶ (1F36) ἷ (1F37) ὶ (1F76) ί (1F77) ῒ (1FD2) ΐ (1FD3) ῖ (1FD6) ῗ (1FD7)  ||
     212|| ο (03BF) || ό (03CC) ὀ (1F40) ὁ (1F41) ὂ (1F42) ὃ (1F43) ὄ (1F44) ὅ (1F45) ὸ (1F78) ό (1F79)  ||
     213|| ρ (03C1) || ῤ (1FE4) ῥ (1FE5)  ||
     214|| υ (03C5) || ϋ (03CB) ύ (03CD) ὐ (1F50) ὑ (1F51) ὒ (1F52) ὓ (1F53) ὔ (1F54) ὕ (1F55) ὖ (1F56) ὗ (1F57) ὺ (1F7A) ύ (1F7B) ῢ (1FE2) ΰ (1FE3) ῦ (1FE6) ῧ (1FE7)  ||
     215|| ω (03C9) || ώ (03CE) ὠ (1F60) ὡ (1F61) ὢ (1F62) ὣ (1F63) ὤ (1F64) ὥ (1F65) ὦ (1F66) ὧ (1F67) ὼ (1F7C) ώ (1F7D) ᾠ (1FA0) ᾡ (1FA1) ᾢ (1FA2) ᾣ (1FA3) ᾤ (1FA4) ᾥ (1FA5) ᾦ (1FA6) ᾧ (1FA7) ῲ (1FF2) ῳ (1FF3) ῴ (1FF4) ῶ (1FF6) ῷ (1FF7)  ||
     216
     217Außerdem
     218|| -- || < > [ ] ||
     219|| -- || hyphen (002D) soft hyphen (00AD)  ||
     220
     221(aber nicht 1 und 2)
     222
     223Einträge wie
     224|| ΁ (0381) || ά (03AC)  ||
     225|| ΅ (0385) || έ (03AD)  ||
     226|| · (0387) || ή (03AE)  ||
     227|| Ή (0389) || ί (03AF)  ||
     228sind sehr wahrscheinlich falsch. Diese Regeln sind offenbar nicht oft verwendet worden.
     229
     230
     231Backend: genauso
     232
     233=== Weiteres ===
     234
     235In Arboreal werden alle Buchstaben eines Wortes außer dem ersten in Kleinbuchstaben normalisiert. (Ausnahme natürlich u.a. Chinesisch.) Dies fehlt in der Backend-Version.
     236
     237In 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, Wassérstrasse und Wassérstrassé gefunden, aber nicht die originale Form Wasserstraße.
     238
     239== 2. Und was bedeutet das? ==
     240
     241Die wichtigeste Frage ist, wo die Normalisierungsregeln überhaupt verwendet werden. Siehe dazu Abschnitt 3.
     242
     243== 3. Wann wird zurzeit normalisiert? ==
     244
     245Die wichtigste Erkenntnis ist, dass die Arboreal-Regeln gar nicht für die Textanzeige gedacht sind, aber im Backend dafür verwendet werden.
     246