C und patch

Adrian Holzwarth adrian at holzwarth.net
Don Nov 28 14:21:11 CET 2002


Das Reply kommt ein wenig verspätet, irgendwie hab ich irgendwo
dann doch die falsche Emailadresse eingetragen ;)


* Josef 'Jupp' Schugt <jupp at gmx.de> [021128 12:34]:
> * On 2002-11-21 20:48
> * Adrian Holzwarth <adrian at holzwarth.net> wrote:
> > Hasso beisst Heiko mit den Zähnen. 
> > 
> > Ein Deutscher weiß sofort, was gemeint ist, erkennt beim Hingucken aber
> > auch, daß dieser dämlich kurze Satz locker vier verschiedene Lesarten
> > hat.
> 
> Welche sollen das sein? Ich erkenne bestenfalls noch ein
> 
> Hasso beißt "Heiko mit den Zähnen"
> 
> aber dafür fehlen die Anführungszeichen.

Okay, für die Anführungszeichen gebe ich Dir einen Bonus und ziehe mir
den ab, weil ich mir mit der attributiven "mit ..."-Geschichte alles
andere als sicher bin. *Eine* Alternative hättest Du immerhin aber 
entdecken können. Nehmen wir meinetwegen:

"Jo sieht Bea im Bett." 

So. Damit hätten wir

1: Jo und Bea sind im Bett, Bea wird von Jo gesehen.
   [ PP hängt am Satz ]

2: Jo macht die Schlafzimmertür auf und sieht Bea im Bett.
   [ PP hängt am Objekt... Hoffentlich war Bea alleine... ;) ]

3: Jo und Bea sind im Bett, Bea ist die Sehende.
   [ Objekt-Topikalisierung, PP hängt am Satz ]

4: Die Bea, die da im Bett rumhängt, sieht Jo.
   [ Objekt-Topikalisierung, PP hängt am Subjekt ]

Ich kann jetzt auswendig nicht sagen, ob es auch ein 5: und 6: in
ausreichendem Umfang gibt, also so daß z.B. Jo im Bett ist und von 
Bea gesehen wird usw... Generell sollte dieses Beispiel aber genug 
Demonstration sein, um das Problem, das bei maschineller Verarbeitung 
auftritt, mit dem Rotstift einzukreisen:
Der dämlichen Maschine fehlt in aller Regel das nötige Wissen um die 
Häufigkeit der grammatikalischen Strukturen für bestimmte Verben (es
gibt aber durchaus statistische Parser!), es fehlt in aller Regel
formalisiertes Weltwissen, das uns Menschen auch zur Auflösung von
Mehrdeutigkeiten verhilft.

Klar macht man auf dem Gebiet Fortschritte. Wunder sind mir aber nicht
bekannt. Und grade die Voranstellung des Objektes (WEN sieht Bea? JO
sieht Bea!) ist im Deutschen nicht unbekannt, wird verwendet und ist,
wenn man den Nominalphrasen den Kasus nicht ansieht, nicht unbedingt
problemlos zu erkennen.

Klassische Beispiele (taugen sicher auch als Suchstrings fürs Googeln)
die andere Ambiguitäten verdeutlichen - weiterführende Literatur gibt
es en masse: 

time flies like an arrow.
fruit flies like a banana.   [1]

Muellers sahen Kraniche auf ihrem Flug nach Süden.

Der Mann sah die Frau mit dem Fernrohr.

Nur weil immer wieder dieselben Beispiele verwendet werden, heißt das
übrigens nicht, daß diese Problematik nicht alltäglich wäre...

> > Allein schon, weil der Rechner im Gegensatz zu Dir und mir erstens
> > genau keinen Fehler machen darf
> 
> Windows existiert.

Gesundheit. Du bist glücklicher Windows-Nutzer, ja? 

> > Ambiguitäten bei Programmiersprachen kamen mir eigentlich nur
> > unter, wenn ich versuchte, fehlerhaften Quellcode "trotzdem" zu
> > parsen.
> 
> Also beispielsweise bei 99.9% aller Internetseiten.

Du siehst ja täglich, was dabei herauskommt.
> 
> > Robustheit verlangt ihren Preis: Eindeutigkeit. Schließlich kann
> > die Maschine nicht mit Sicherheit sagen, welchen Fehler der
> > Programmierer nun gemacht hat.
> 
> Das nicht, aber warum soll er nicht das tun, wofür es im Enlischen
> den prägnanten Ausdruck "well-educated guess" gibt - sinnvoll raten
> (allerdings sollte er einem natürlich verraten, was er sich da
> gedacht hat).

Möchtest Du einen "well-educated guess", wenn Du 'make&run' ein Compilat 
bastelst? Ein Programm, das aus statis(ti)scher Information entscheidet,
welchen Fehler Du wahrscheinlich gemacht hast? Nein danke. 

Bei meinen Recherchen stieß ich zum Thema "fehlertolerantes Parsen" im 
Sprachwissenschaftsgebäude auf Zustimmung, im Informatik-Trakt jedoch
erwartungsgemäß auf erschrockene Ablehnung. 
> 
> Ich dachte bislang, dass Robustheit gerade darin besteht, mit
> Uneindeutigkeiten und ähnlich unvorhersagbaren Dingen umgehen zu
> können.

Welche Programmiersprache läßt denn eigentlich in gehobenem Maße 
Uneindeutigkeiten zu?

Du schickst ein Programm in den gcc. Du hast Dich an mehreren Stellen
verhauen. Die "Robustheit" des gcc besteht darin, daß er Dich anmault, 
eine Hypothese oder zumindest einen Wiederaufsetzpunkt hat und damit
dann weitermacht, aber kein Kompilat erzeugt, oder? Die Robustheit 
eines Browsers besteht darin, fehlerhaften html-Code irgendwie
"sinnvoll" darzustellen - aber die Entscheidung, was sinnvoll ist oder 
nicht, fällt der Browser für Dich. Ich hab genug kaputte Seiten gesehen 
um behaupten zu dürfen, daß auch ein Browser [2] fehlbar ist.

"Umgehen" ist Definitionssache. 

Adrian

[1] Das ist richtig. Wir haben die mit Bananen gezüchtet und
    im Schließfach vor dem Lehrerzimmer deponiert...

[2] Opera-adv/Linux schien in den letzten Tagen *besonders* fehlbar 
    zu sein.

-- 
Computers are not intelligent.  They only think they are.