Done Work
see also:
WorkBook for a list of open jobs
Eintragen zusätzlicher Namen
- Supervisor: KilianAFoth
- Priority: High
- Difficulty: Low
- Status: done
Durch die Erweiterung unserer Gold-Annotationen auf die vorletzten
Tausend sind viele neue Namen notwendig geworden.
Hier ist die Liste der derzeit nicht im
Lexikon stehenden Namen.
Bundle the container library
- Supervisor:
- Priority:
- Difficulty:
- Status: done
Unsere selbstgeschriebenen C-Container-Strukturen wurden vor einiger
Zeit zu einer selbständigen Bibliothek BLAH ausgelagert. Aber niemand
außer CDG hat sie je benutzt, es ist umständlicher, an zwei Modulen zu
arbeiten als einem (die Bibliothek muß erst auf alle Systeme
installiert werden, die sie brauchen könnten, bevor man neue
Funktionen tatsächlich benutzen kann). Deshalb sollte der Code wieder
ins Modul CDG überführt werden.
- Es gibt immer noch das Verzeichnis
cdg/libcontainer
, also sollte man die Quellen dort ins Projekt einfügen.
- Die Quellen zu CDG können immer noch
<blah.h>
benutzen, aber nicht aus /usr
, sondern aus libcontainer
(oder wir könnten den albernen Namen ganz abschaffen).
- Die Dokumentation durch Doxygen zu Hashes, Listem etc. sollte natürlich genauso wie vorher funktionieren, und zwar unter dem Target
docs
im Makefile von CDG.
- Die Konfiguration von CDG vereinfacht sich, weil nicht mehr nach libblah gesucht werden muß. Die betreffenden Teile in
acinclude.m4
fallen weg. Stattdessen muß libcontainer
wieder zu -I und -L hinzugefügt werden.
Erkennung von LAUTEN PASSAGEN
- Supervisor: KilianAFoth
- Priority:
- Difficulty:
- Status: done
Derzeit werden GROSSGESCHRIEBENE Wörter nicht erkannt, wenn sie
nicht genauso im Lexikon stehen. Es gibt eine Extraregel für Worte
am Satzanfang, die mit Großbuchstaben beginnen: Wenn ein Satz mit
`Und' beginnt und `Und' nicht im Lexikon ist, wird auch `und'
nachgeschlagen.
Derselbe Trick sollte nun auch angewandt werden, wenn UND auftaucht,
und zwar unabhängig von der Stellung im Satz. Beispielsweise stehen
oft ganze Überschriften oder Sätze ganz in Großbuchstaben:
`KARL AURINGER, FRANKFURT' Solche Sätze wollen wir analysieren
können, ohne daß `FRANKFURT' im Lexikon stehen muß.
Es sollte also folgende weitere Regel implementiert werden:
Wenn ein Wort ganz aus Großbuchstaben besteht (FRANKFURT) und
nicht im Lexikon zu finden ist, sollte auch die kapitalisierte Form
(Frankfurt) und die kleingeschriebene Form (frankfurt) nachgeschlagen
werden. Das Nachschlagen von zusammengesetzten Formen und das
Nachladen von Formen aus der Datenbank sollen transparent mit diesem neuen
Feature zusammenarbeiten, d.h. `GROSS-FRANKFURT' sollte erlaubt
sein, selbst wenn nur `Frankfurt' bekannt ist, indem zuerst das
Zusammensetzungs-Regel und dann die Kapitalisierungregel angewandt
wird. Möglicherweise ist dafür noch eine weitere Funktion notwendig,
die zwischen die beiden bestehenden inputLexiconGetExactly() und
inputLexiconGet() eingeschoben wird.
Erkennung von unmarkierten Komposita
- Supervisor: KilianAFoth
- Priority:
- Difficulty:
- Status: done
Derzeit können Zusammensetzungen nur erkannt werden, wenn sie mit
Bindestrich markiert sind. Aus `Rechner' können wir also den
Lexikoneintrag für `Server-Rechner' konstruieren, aber nicht den für
`Großrechner'. Möglicherweise wäre es besser, wenn auch das möglich
wäre. Dazu bräuchten wir eine weitere Regel, die, wenn alles andere
fehlschlägt, beliebige Suffixe eines Wortes im Lexikon nachschlägt und
neue Einträge konstruiert.
- Auch diese Regel muß natürlich mit den anderen zusammenarbeiten, damit z.B. aus `Rechner' auch ein Wort wie `Master-Serverrechner' abgeleitet werden kann.
- Wenn verschiedene solche Zusammensetzungen möglich sind, sollte die mit dem längsten Stamm gewählt werden, z.B. sollte `Serverrechner' von `Rechner' abgeleitet werden und nicht von `er'.
- Wahrscheinlich sollte man solche Ableitungen überhaupt auf die sog. offenen Wortklassen beschränken (NN, ADJA etc.) und damit umarkierte Ableitungen von Pronomen wie `er' von vornherein aussschließen.
- Bei einer unmarkierten Ableitung gelten wiederum andere Großschreibungsregeln; `Serverrechner' sollte von `Rechner' abgeleitet werden können, aber nicht von `rechner' (wenn es so ein Wort gäbe). Umgekehrt darf `grünrot' nur von `rot' abgeleitet werden, aber nicht von `Rot'.
Simple Demo of CDG
Xcdg: Bugfixing and reengineering der Databrowser
- Supervisor: MichaelDaum
- Priority:
- Difficulty: medium
- Status: done by DietmarDreyer
Web-Frontend Bug
Irgendeine Komponente der Parser-Demo verträgt keine langen Eingaben:
der Satz
Geheime, proprietäre Software, unzureichende Überprüfungen
derselben im Auswahl- und Zertifizierungsprozess und deren
Anfälligkeit für Angriffe durch die Programmierer seien an
elektronischen Stimmerfassungs-Systemen ebenso zu kritisieren wie
das Fehlen von Überprüfungsmöglichkeiten der korrekten
Stimmerfassung durch den Wähler, schreiben die vier Experten.
erzeugt einen Internal Server Error. Es ist nicht etwa der Parser, der
versagt -- der terminiert brav nach 100 Sekunden -- sondern das
Perl-Skript `parse', weil es 2GB RAM alloziert und daran stirbt. Das
ist typisch für Perl vor Version 5.8, wenn komplizierte dynamische
Datenstrukturen auf illegale Weise dereferenziert werden. Durch
Protokollierung muß untersucht werden, welche falschen Annahmen in
diesem Skript gemacht werden.
Lexikonzugriff: Transliteration von UTF in iso-8859-1
Wenn von xcdg aus Strings an cdg-Funktionen übergeben werden, sind sie
als Unicode dargestellt, und zwar in der Kodierung UTF8
(
ftp://ftp.rfc-editor.org/in-notes/rfc2279.txt). Die gesamte libcdg
geht aber von der normalen iso-8859-1-Kodierung aus (ASCII auf 8 bit
erweitert, und zwar für westeuropäische Sprachen). Wenn also jemand im
xcdg `lexicon Straße' eintippt, wird eine andere Datenstruktur an
inputLexiconGet() übergeben als wenn man es in cdgp eintippt.
Insbesondere würde der Aufruf in cdgp gelingen, aber in xcdg scheitern.
Das Verhalten von Tcl, immer Unicode zu benutzen, kann man nicht
abstellen, daher muß libcdg darum herumarbeiten. Alle Strings, die
eingetippt werden, werden deshalb von Hand transliteriert. Nun habe
ich aber die Standardfunktion iconv() gefunden, die dasselbe leistet.
Der umständliche `switch' in inputEncodeUmlauts() sollte also durch
einen normalen Aufruf von iconv() ersetzt werden.
(Die Funktion inputEncodeUmlauts() erfüllt eigentlich eine andere,
verwandte Aufgabe: sie ersetzt die Schreibvariante "s durch ß, "a
durch ä etc. Die Transliteration von UTF nach ISO wurde im nachhinein
dazugefügt. Möglicherweise wären zwei einzelne Funktionen überschtlicher.)
Fernsteuerung
Beim Betrachten von cdg-Output braucht man oft die Funktionalität
`Können wir das bitte im Bild sehen?' oder `Zeige alle Fälle von
nichtprojektiven Relativsätzen in diesem Korpus' etc. Das ist
möglich, indem man xcdg mit
xcdg -s showparse deutsch s2
startet, oder sogar mit
xcdg -e 'showparse s3 s43 s53 s152 s543' deutsch
und die Erzeugung dieses Aufrufs automatisiert. So kann man z.B. in
einem Emacs-Modus auf Knopfdruck bestimmte Phänomene anzeigen und
korrigieren.
Der Nachteil ist, daß der Prozeß danach nicht mehr auf die
Kommandozeile hört. Stellt man die Anschlußfrage `...und welche
projektive Relativsätze haben wir?', so muß man entweder deren nummern
von Hand eintippen oder ein neues XCDG starten. Beides ist
Verschwendung. Stattdessen sollte xcdg so gestartet werden können, daß
es auf weitere Befehle wartet (über Sockets, Signale oder ähnliches)
und sie ausführt.
Constraint-Compiler
This module is practically out of work as it does not compile the
DeutschGrammar
(
NegraGrammar and
HeiseGrammar neither). The constraint language has been extended in
variuos ways (
has()
,
is()
,
lookup()
), but these addons dont compile. Test-cases
have to be provided for constraint grammar compilation. The efficientcy of the
compiled agains the interpreted consrtraint grammar needs to be evaluted again.