Programmierprojekt: Verbesserte Tippfehlerkorrektur durch Tagger-Information
Bearbeiter: Francis Schnyder
Betreuer: Simon Clematide
Einführung
In vielen Anwendungen der Sprachverarbeitung (Textverarbeitung, Maschinelle Übersetzung, Information Retrieval) müssen inkorrekt geschriebene Wortformen erkannt und korrigiert werden. Die Korrektur kann (häufig) nur nach Rücksprache mit dem Benutzer geschehen, da die intendierte Wortform nicht eindeutig bestimmt werden kann. Um diese Interaktion möglichst komfortabel zu gestalten, sollen die Korrekturvorschläge aufgrund von Tagger-Information nach Relevanz sortiert werden.
-
Ziel und Zweck
Im Rahmen dieser Arbeit soll die Arbeit von M. Schüssler erweitert werden, so dass intelligente kontext-abhängige Korrekturvorschläge gemacht werden. Die Korrekturvorschläge sollen im Kontext auf Grund der Tagger-Information nach Relevanz geordnet erscheinen.
Arbeitsschritte
- Corrector-Programm von Matthias Schüssler durcharbeiten
- GULP kennenlernen
- Ausgabeformat von Tagger und Gertwol kennenlernen
- Entscheidung über Corrector-Aufruf implementieren (einschl. Sonderbehandlung für Eigennamen)
- Taggerfilter für Corrector-Output implementieren
- Präsentation der Korrekturvorschläge für HTML-Seite
Anforderung
- Kenntnisse in Prolog, etwas Kenntnisse in PERL und HTML
Benötigte Ressourcen
- Corrector-Programm-Bestandteile von M. Schüssler (Zweck: Verstehen der bisherigen Korrekturvorschlagprozedur)
- spc.pl: Prolog-Programm, das ein potentiell falsch geschriebenes Wort entgegennimmt, alle möglichen Schreibfehlervarianten davon erzeugt und diese Varianten von Gertwol auf morphologische Wohlgeformtheit überprüfen lässt.
- gertwol.pl: Prolog-Bibliothek, dass den Gertwol-Aufruf macht und daraus die lexikalischen Fakten assertiert.
- corrector.perl: PERL-Programm, dass als CGI-Script die Funktionalität für das WWW-Interface zur Verfügung stellt. D.H. Entgegennehmen des Wortes, berechnen der möglichen Korrekturen via spc.pl und Ausgabe der Antwort-HTML-Datei
- corrector_prep.sh (Tokenizer, Gertwol- und Taggeraufruf)
- corrector_prep.sh: UNIX-Shell-Skript, dass die Funktionalität von gertwol.pl ersetzt und zusätzlich um einen Aufruf, des Part-op-Speech-Taggers (treetagger mit UIS-Tagset) erweitert. corrector_prep.sh nimmt durch Leerzeichen getrennte Wörter als Satz entgegen (grün) auf dem Standard Input und produziert PROLOG-Klauseln (braun) als Output auf Standard Output. Die lex/2 und tag/3-Fakten enthalten als GULP-Merkmalstrukturen die lexikalische Information aus Gertwol und die Tagging-Information aus dem Tagger.
- <shell> corrector-prep.sh
Wo ist das Haus >Q>
:- dynamic lex/2, tag/4.
lex('Wo', 'ADV'(lemma:'wo')).
lex('ist', 'AUX'(lemma:'sein'..vform:fin..modus:'IND'..tempus:'PRAES'..numerus:'SG'..person:3)).
lex('das', 'ART'(lemma:'das'..typ:'DEF'..numerus:'SG'..kasus:'NOM'..genus:'NEUTR')).
lex('das', 'ART'(lemma:'das'..typ:'DEF'..numerus:'SG'..kasus:'AKK'..genus:'NEUTR')).
lex('das', 'PRON'(lemma:'das'..typ:'DEM'..numerus:'SG'..kasus:'NOM'..genus:'NEUTR')).
lex('das', 'PRON'(lemma:'das'..typ:'DEM'..numerus:'SG'..kasus:'AKK'..genus:'NEUTR')).
lex('das', 'PRON'(lemma:'das'..typ:'RELAT'..numerus:'SG'..kasus:'NOM'..genus:'NEUTR')).
lex('das', 'PRON'(lemma:'das'..typ:'RELAT'..numerus:'SG'..kasus:'AKK'..genus:'NEUTR')).
lex('Haus', 'S'(lemma:'Haus'..eigen:'-'..genus:'NEUTR'..numerus:'SG'..kasus:'NOM')).
lex('Haus', 'S'(lemma:'Haus'..eigen:'-'..genus:'NEUTR'..numerus:'SG'..kasus:'AKK')).
lex('Haus', 'S'(lemma:'Haus'..eigen:'-'..genus:'NEUTR'..numerus:'SG'..kasus:'DAT')).
lex('Haus', 'S'(lemma:'Hau'..eigen:'-'..genus:'MASK'..numerus:'SG'..kasus:'GEN')).
lex('Haus', 'S'()).
lex('Haus', 'S'()).
tag(0,'Wo','ADV'(typ:'INTERROG'),first).
tag(1,'ist','AUX'(vform:fin),first).
tag(2,'das','ART'(typ:'DEF'),first).
tag(3,'Haus','S'(eigen:'-'),first).
tag(3,'Haus','S(PART)'(_),first).
tag(3,'Haus','S(A)'(_),first).
tag(4,'>Q>','S'(eigen:'+'),first).
Literatur und Links
- [Berghel 87]
- H. Berghel: A logical framework for the correction of spelling errors in electronic documents. In: Information Processing and Management. Vol.23 (5). 1987. 477-494.
- [Mays 91]
- E. Mays and F.J. Damerau and R.L. Mercer: Context based spelling correction. In: Information Processing and Management. Vol.27 (5). 1991. 517-522.
- [Peterson 1980]
- James L. Peterson: Computer Programs for Spelling Correction: An Experiment in Program Design. Berlin: Springer Verlag. 1980.
- [Schüssler 1998]
- Matthias Schüssler: Dokumentation: Behandlung von unbekannten Wörtern im UIS. Programmierprojekt im SS 1998.
- [Golding 1995]
- Golding, A. R. (1995). A Bayesion Hybrid Method for Context-Sensitive Spelling Correction. Cambridge, Mitsubishi Electric Information Technology Center: 17. (PDF)
- [Golding, A. R. and Y. Schabes 1996]
- Golding, A. R. and Y. Schabes (1996). Combining Trigram-based and Feature-based Methods for Context-Sensitive Spelling Corrections. Cambridge, Mitsubishi Electric Research Laboratories. (PDF)
[Heckmann 1999] Regula Heckmann: Zusammenfassung der obigen Artikel.
[Tillenius 1996]
- Efficient generation and ranking of spelling error corrections (PDF)
[Kann 1998]
- Implementation aspects and applications of a spelling correction algorithm (PDF)
Simon Clematide