Der erste Satz ist syntaktisch korrekt und nicht mehrdeutig - allerdings enthölt er sechs verben und einen halb versteckten Nebensatz, was nichtmenschliche Parser verwirren könnte. Der zweite Satz ist - zumindest im entsprechenden Umfeld - nicht wirklich außergewöhnlich. Daß "greppen" nicht im Duden steht sollte kein Grund sein, warum das Programm nicht mit dem Satz klarkommt; einen Bot zu bauen, der das komplette deutsche Vokabular versteht ist ohnehin ein eher nutzloses Unterfangen, da er entweder nur Standarddeutsch versteht (und damit bei sehr vielen Unterhaltungen passen muß) oder versucht, auch Slang und Dialekte zu verstehen (was zu einem vielfach größeren und sich selbst widersprechenden Vokabular führt).Zitat von Rolus
Aber die hier gestelte Aufgabe ist doch, einen Chatbot zu entwickeln, der einer Konversation folgen kann! Ich habe meine Beispiele übrigens extra gewählt um zu demonstrieren, daß ein vollständiger syntaktischer Parser als Methode hier ungeeignet ist. Ich weiß also nicht, warum du mir plötzlich unterstellst, ich wolle so etwas in einen Chatbo integrieren.Zitat
Gut, schließen wir Referenzen auf grep, eines der wichtigeren Unixprogramme, aus. Wenn wichtige Unixprogramme ausgeschlossen werden sollte das auch für andere Programme gelten also lassen wir den Bot zu jeder Zeile schweigen, in der "Explorer", "Firefox" oder "Office" vorkommt. Hm, irgendwie wird's da unpraktisch - sollte der Bot wirklich alles zurückweisen, was nicht in seiner Vokabulardatenbank steht?Zitat
Ich bin der Meinung, daß der Bot ohnehin nicht wissen sollte, was ein Wort bedeutet - das würde nicht nur lächerlich viel Aufwand bei der Datenverarbeitung bedeuten sondern auch, daß man lächerlich viele Daten erst mal einspeisen muß (denn fast alle Begriffe ergeben erst mit Kenntnis anderer Begriffe einen Sinn). Derartge Komplexität bräuchte man für eine Software, die selbstständig kommunizieren können soll (ha, drei Verben nacheinander und das völlig gerechtfertigt!), aber nicht für etwas, das das lediglich vorgibt.
Okay, das könntest du machen, dann würde dein Bot aber mit hoher Wahrscheinlichkeit schlechtere Ergebnisse haben als die Urform von ELIZA. Die Menschen neigen nun mal dazu, mit Sätzen zu arbeiten, die nicht strikt Subjekt-Prädikat-Objekt-Satzende sind. Und jede mögliche Variation des Satzbaus muß explizit in der Programmlogik behandelt werden, damit der Parser sie versteht. Komplexe Sätze mit nonstandard-Elementen sind keine "dummen Sprüche", sie sind der Normalfall, speziell im Internet, das einen Riesenhaufen von Subkulturen beheimatet, die alle ihren eigenen Mix aus diversen Slangs, Fachsprachen und internettypischen Wendungen sprechen.Zitat
Die menschliche Sprache (ich fasse hier mal alle zusammen, weil alle diese Eigenschaften haben) ist darauf ausgelegt, von Leuten verstanden zu werden, deren Mustererkennung das momentan technisch emulierbare bei Weitem übersteigt. Es macht uns kaum Aufwand, Sätze mental umzustrukturieren, damit sie Sinn ergeben, also tolerieren wir sehr freie und komplexe Regeln, die maschinell kaum verarbeitbar sind. Dazu kommt noch, daß die menschliche Sprache einen Teil Redundanz eingebaut hat, der für uns teilweise sinnvoll, für die Maschine aber zusätzlich aufwendig ist (und auch Einsparmöglichkeiten wie das Weglassen des "ist" nach "sinnvoll" in diesem Satz haben ihren Sinn, machen Maschinen aber das Leben schwer).
Wenn man dieses Gewusel verstehen will muß man einen Riesenaufwand betreiben. Computer sind in der Interpretation von Input eben nicht so schnell wie Menschen (führt jetzt bitte keine Rechnungen an; wir können die optische Wahrnehmung eines fliegenden Gegenstandes als solche erkennen und Flugbahn sowie Geschwindigkeit des Balls exrtapolieren, bevor der Rechner überhauot weiß, daß da was fliegt).
Deshalb rate ich davon ab, als Hobbyist ein verstehendes Programm schreiben zu wollen - entweder wird das Verständnis per Design stark lückenhaft sein oder man hat einen extremen Aufwand, wenn man den menschlichen Verstehensprozeß (und auf genau den sind menschliche Sprachen nun mal ausgelegt) nachbilden will. Deshalb versucht mein Vorschlag auch nicht, die Bedeutung eines Satzes zu erkennen sondern lediglich, eine Verbindung zu einem früheren Thema herzustellen.