Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 30

Thema: [KI Diskussion] Chatbots

  1. #1

    [KI Diskussion] Chatbots

    Nachdem wir ja schon mehrfach über künstliche Intelligenz geredet haben, möchte ich mal wieder ein neues Kapitel ansprechen. Ich hoff mal, die Diskussion wird wieder so interessant wie die letzten beiden.

    Und zwar gehts diesmal um Chatbots. Die Alicebot Engine is ja schon ganz gut, macht aber immer noch typische Fehler. Beispielsweise reagieren die Bots nicht drauf, wenn man eine Frage mehrfach gestellt wird. Da kommen zwar verschiedene Antworten, aber kein "Hey, das hab ich dir doch schon erzählt". Außerdem werden viele Sachen aus dem Kontext gerissen beantwortet und der Bot merkt sich viel zu wenig.

    Habt ihr irgendwelche Ideen oder konzepte, wie man das verbessern könnte? Hat vielleicht jemand von euch mal ein eigenes AIML Set für Alice geschrieben?

  2. #2

    Users Awaiting Email Confirmation

    Man könnte vielleicht damit anfangen, ihr Erinnerungsvermögen zu erweitern und vor allem ihr Wissen und ihr Ausdrucksvermögen! Vor allem letzeres ist wichtig, damit sie nicht die selbe Aussage immer mit dem selben Satz aussagt, sondern mal ein wenig Variation hineinbringt.
    Außerdem fände ich es wichtig, dass sie besser lernt, die Sprachen auseinander zu halten. Selbst in ihren eigenen Sätzen spricht sie manchmal zweisprachig!
    Das alles ist aber noch gar nicht so schlimm, darüber könnte man gut hinwegsehen, wenn sie nicht ab und zu wirklich total unpassende Dinge sagt. Ich hab jetzt gerade kein Beispiel mehr im Kopf, ich red nochmal mit ihr und schreib dann nochwas rein. Das kommt nicht unbedingt selten vor.

  3. #3
    Zitat Zitat von .Mi
    Man könnte vielleicht damit anfangen, ihr Erinnerungsvermögen zu erweitern und vor allem ihr Wissen und ihr Ausdrucksvermögen! Vor allem letzeres ist wichtig, damit sie nicht die selbe Aussage immer mit dem selben Satz aussagt, sondern mal ein wenig Variation hineinbringt.
    Außerdem fände ich es wichtig, dass sie besser lernt, die Sprachen auseinander zu halten. Selbst in ihren eigenen Sätzen spricht sie manchmal zweisprachig!
    Das alles ist aber noch gar nicht so schlimm, darüber könnte man gut hinwegsehen, wenn sie nicht ab und zu wirklich total unpassende Dinge sagt. Ich hab jetzt gerade kein Beispiel mehr im Kopf, ich red nochmal mit ihr und schreib dann nochwas rein. Das kommt nicht unbedingt selten vor.
    Also ich weiss nicht, fuer mich klingt das absolut nach DJ N3CK, nur dass er nicht nur manchmal Zweisprachrig redet.

    PS: Sorry 4 Spam, aber ich hab derbe Halsschmerzen und muste mich durch einen unqualifizierten Themenfremden Beitrag aufmuntern.

  4. #4
    Nunja. Man könnte das mit den variationen per Zufall machen, was dann aber auch nicht wirklich KI entsprechen würde. Aber man könnte, wenn Alice fragen stellen kann, eine Funktion einbauen, die sich die Antworten merkt. Das würde das ganze dnan der Ki ein wenig näher bringen...

  5. #5
    Realistische Bots müssen menschlicher wirken, also auch Bedürftnisse haben, automatisch Away-Messages erzeigen und sowas. Witzig wäre ja wenn sie Fehler machen, z.B. wie hier in meiner mini-Buchtsbendreher Funktion:

    Code:
    function FalschSchreiber(S: String; W: Integer): String;
    var
     i: Integer;
     t: char;
    begin
     // W ist Prozent (ist es aber nicht wirklich, 
     // ergab ein Versuch von mir mit 1000 Versuchen
     // [Computer ausgewertet ;)])
     // W = 10  | Normal
     // W = 20  | In Eile
     // W = 100 | dadie xD
     randomize;
     i := random(100);
     if i <= W then
     Begin
      randomize;
      i := random(Length(S)-2)+1;
      t := S[i];
      S[i] := S[i+1];
      S[i+1] := t;
     End;
     result := s;
    End;
    Meist kommen einem die erzeugten Sätze auch gut rüber:
    Hallo ich bin Deutschland. => "Hall oich bin Deutschland." => "Hallo ich bin Duetschland."

    Also wie sie ständig passieren könnten.

    edit:
    Zitat Zitat von raian
    Nunja. Man könnte das mit den variationen per Zufall machen, was dann aber auch nicht wirklich KI entsprechen würde. Aber man könnte, wenn Alice fragen stellen kann, eine Funktion einbauen, die sich die Antworten merkt. Das würde das ganze dnan der Ki ein wenig näher bringen...
    Ist doch beim Virtual-God-Dings (basiert auf Alice) drin, wenn ich sag "My name is WordsBG" und frag ihn danach "weiß" er es.

  6. #6
    Zitat Zitat von raian
    Nunja. Man könnte das mit den variationen per Zufall machen, was dann aber auch nicht wirklich KI entsprechen würde.
    Hat Alice in genau der Form.

    Crashs Buchstabendreheridee gefällt mir. Das könnt man sogar recht einfach testweise einbauen. Analog dazu bräuchte man aber auch ne Funktion, die solche Buchstabendreher eigenständig erkennt. Bisher kenn ichs nur so, dass eben ne Datei mit typischen Tippfehlern und deren korrigierten Versionen existiert. Da müsste man so was wie die Rechtschreibprüfung von Word integrieren und dafür sorgen, dass bei der Auswahl das im Kontext wahrscheinlichste Wort genommen wird.

    Zitat Zitat von Crash-Override
    Ist doch beim Virtual-God-Dings (basiert auf Alice) drin, wenn ich sag "My name is WordsBG" und frag ihn danach "weiß" er es.
    Aber auch nur, weil in der aiml Datei festgelegt wird, dass eben wenn der Satz "My name is DFYX" kommt in die Variable name der Wert "DFYX" gesetzt wird. Alice merkt sich also nur das, was der Autor der AIML Datei vorgegeben hat. Besser wäre es, wenn Alice zusätzlich bei Bedarf den bisherigen Gesprächsverlauf noch mal neu analysiert, um die Informationen zu bekommen.

    Zitat Zitat von .Mi
    Selbst in ihren eigenen Sätzen spricht sie manchmal zweisprachig!
    Das liegt dann aber an einer schlampig geschriebenen AIML Datei. Alice sagt nur genau die Sätze, die man ihr vorgibt und baut keine eigenen. Demnach kann sie gar keine Sprache beherrschen, die ihr nicht vorgegeben wurde.

    Mir kommt noch die Idee mit einer Datenbank mit Synonymen zu arbeiten. Ich weiß nicht, ob ihr das von den alten Word Versionen kennt (Die neuen haben das AFAIK nicht mehr). Da konnte man auf ein Wort klicken und hat dann Synonyme dafür bekommen. Dadurch wären die Antworten schon flexibler.

  7. #7
    Das Problem dabei ist, daß der Bot eine semantische Analyse vornehmen müßte, um zu erkennen, was mit einem Satz gemeint ist; ansonsten würden bloße Umformulierungen ihn schon völlig aus der Bahn werfen. Das ist zwar ansatzweise schon möglich, aber wie der Rest der Spracherkennung und -generierung derzeit ein heißes Forschungsthema - wir haben jetzt erst die Werkzeuge, um so etwas überhaupt erforschen zu können. (Nebenbei ist das ein Thema, auf das ich ein Auge geworfen habe. Ich finde Linguistik interessant und in Verbindung mit der Informatik könnte sich da ein schönes Thema für die Diplomarbeit ergeben...)

    Was man bei einem einfachen Chatbot machen könnte wäre eine Logik, die versucht, das Thema einer Zeile zu bestimmen - dazu könnte man eine Reihe von Wörterbüchern anlegen, die häufige Themen identifizieren (am besten mit Gewichtungsfaktoren - "Sturm" kann sowohl in einer Diskussion über das Wetter als auch in vielen Metaphern vorkommen, während "Kaltfront" sehr meteorologiespezifisch ist) und bei nicht zuzuordnenden Sätzen (auch bei solchen, wo die summierten Faktoren der Wörterbucheinträge eine gewisse Schwelle nicht überschreiten) einen wichtig aussehenden Satzteil heraussuchen und in eine Tabelle eintragen. Paralllel behält man für die letzten N analysierten Zeilen die Zwischenergebnisse im Speicher, damit Trends erkannt werden können - wenn beispielsweise "DVD-R" und "Brenner" oft zusammen auftauchen wird zwischen ihnen eine (natürlich gewichtete) Beziehung aufgebaut.
    So kann der Bot sich mit der Zeit ein Netzwerk von Wörtern erarbeiten, die er als Hinweise auf das eine oder andere Thema sieht; so kann er einigermaßen bestimmen, worum die Unterhaltung sich gerade in etwa dreht. Man könnte als administrative Funktion eine Ja/Nein-Lernfunktion einbauen, wa wohl auch die Qualität verbessern dürfte (der Bot hat eine Liste von Vermutungen (beispielsweise "Zwischen 'Klaus' und 'Fahrrad' besteht ein Zusammenhang" oder "Wir sprechen gerade über das Thema 'KI'") und der Admin kann diese jeweils mit Ja oder Nein beantworten (oder ignorieren), woraus der Bot weitere Schlüsse zieht - in etwa wie moderne Spamfilter es tun).


    @DFYX: Der Fachbegriff ist "Thesaurus" und abgesehen davon, daß ein halbwegs vollständiger Thesaurus eine Menge Platz benötigt ist es eine gute Idee, einen einzubauen - dadurch könnte die Trefferquote erheblich steigen (allerdings auch die Quote der Fehltreffer, wenn ein Wort fälschlicherweise als Synonym für etwas anderes erkannt wird).

  8. #8
    Das Klingt ja fast al swürde hier nen Forenprojekt geplant werden. (Was bei diesem thema keien schlechte Idee wäre..^^ Schlagzeile: Forum programmiert noch nie dagewesenes...*rumspinn*)

    Hmm, das mit den Synonymen wäre eigentlich ganz gut. Wenn man diese dnan noch in einem bestimmten Format, beispielsweise


    [Oberbegriff des möglichen themas]
    Wort
    Synonym
    Synonym
    Synonym
    -
    Anderes Wort
    Synonym
    Synonym
    Synonym

    [Oberbegriff]
    [..]


    ersellen würde.

    Alice könnte das Thema erkennen und raussuchen. Wnn es nicht existiert Wörter udn Sätze elrnen, mit ,,Erzähl mir etwas darüber", oder ,,Kann man das auch anders sagen?" könnte dann die Datei erweitert werden.

    Wenn es existiert könnte es das mögliche thema suchen, dnan den Begriff in den Synnonymen und Wörtern. Wenn es nicht in dem thema ist, eine Globale suche starten, also in der gesamten datei.


    So könnte Alice sich besser ausdrücken und auch besser ,,lernen".


    Oh mann..hätte nie gedacht das KI sn Spaß macht.. o.O

  9. #9
    Naja, so eine begrifforientierte Analyse hat immer mehr mit raten als mit verstehen zu tun. Das ist doch sehr ungenau und stößt zwangsläufig irgendwann an seine Grenzen. Eine semantische Untersuchung dagegen würde sicher etliches mehr bringen. Das Programme sollte erstmal mit einem Satz umgehen, wie ein Schüler mit einem schwierigen, lateinischen Satz umgeht. Also erstmal wesentliche Bestandteile, wie Subjekt und Prädikat, erkennen und übersetzen. Nur so können unwichtige Wörter ausgefiltert werden.
    Das ist natürlich viel Arbeit und es erfordet gewissen linguistische Kentnisse, aber es führt doch eindeutig mehr zum Ziel künstliche Intelligenz. Und wenn man sich ein wenig mit Wortstämmen und deren Veränderung durch Konjugation und Deklination auskennt und auch etwas von der Syntax deutscher Sätze versteht, könnte man schon einiges erreichen.

    freundliche Grüße, Rolus

  10. #10
    Trotzdem bräuchte man wieder eine gute Datenbank an Sätzen, oder zusammegehörigkeit, weil sonst Sätze wie

    ,,Meine Nuss hat drei Ecken ohne Wasser!"


    Oder noch schlimmeres, hier habe ich auch schon deinen Vorschlag von der Verb dekleration und Pronomina erkennung durch ,,meine" beachtet, was shcon schwer zu realisieren wäre nwen du mcih fragst.

  11. #11

    Users Awaiting Email Confirmation

    Da stimme ich Rolus zu... die Idee mit dem Satz auseinander frimeln gefällt mir besser... aber andererseits... vielleicht ist es auch zu menschlich gedacht? jedenfalls wäre es doch auch um längen komplizierter zu programmieren!?!

    Was ich noch immer nicht ganz verstanden habe ist, wie der bot das thema eines satzes erkennen kann. wenn ich z.b. irgendwas über programmieren erzählen (z.b.: "hallo, ich kann programmieren") . klar, der bot kann nun den string "programmieren" speichern und kann jederzeit abrufen, dass ich programmieren kann, aber woher weiß er, was programmieren ist? er soll schließlich mit mir sprechen, z.b. wäre eine nächste sinnvolle frage "mit welchen sprachen programmierst du denn?". das setzt aber wie gesagt vorraus, dass er weiß, was programmieren ist.
    hat jmd. einen ansatz, wie ich ihm erklären kann, was programmieren ist? anfangen könnte man mit der frage "ich weiß nicht, was 'programmieren' ist, kannst du mir das erklären?" - aber wie macht man dann weiter?

    schließlich ist es erst dann eine KI, wenn er lernen kann*.

    * afaik muss nicht jede KI lernen können, aber bei chatbots ist es imo erforderlich, sonst ist es sinnlos! wie bei jeder menschen-simulation...

  12. #12
    Die semantische Analyse ist extrem schwer, weil man sowohl "lol ihr stinkt" als auch "Wer tun können will muß auch lernen tun wollen" als auch "Du mußt in der Kernel-config nach rivafb greppen; die Config liegt in /usr/src/linux/.config." erkennen können muß - und das ist erst der Anfang. Die deutsche Sprache (und erst recht das, was im Internet als kommunikation durchgeht!) erlaubt eine Vielzahl von bescheuerten Satzkonstrukten, die einen - sofern man sie alle parsen können will - einen in den Wahnsinn treiben können.

    Um hingegen grob das Thema eines Satzes zu bestimmen kann man viel lascher vorgehen - wenn man in Kauf nimmt, daß man ab und zu eben Unsinn erkennt. Man nimmt ein paar ganz allgemeine Regeln, nach denen man den Satz durchgeht und die immer irgendetwas zurückgeben, dann erhält man für jede Eingabe ein wahrscheinliches Thema. Wenn man da die Liste der möglichen Stichwörter einfließen läßt (über Stringähnlichkeitsalgorithmen und einen Baum kann man wahrscheinlich mit halbwegs erträglichem Aufwand gegen alle bekannten Wörter prüfen) sollte die Trefferquote mit genug Training halbwegs gehen.

  13. #13

    Users Awaiting Email Confirmation

    naja, so ganz überzeugend wirkt es auf mich noch nicht...
    wenn ich deine methode benutze, kann es, wenn ichs richtig verstanden hab, dazu kommen, dass ich kein thema finde, weil der mensch z.b. über programmieren redet, das programm aber nicht weiß, was programmieren ist. also hat das programm "programmieren" nciht gespeichert und findet ncihts - und wie gehts jetzt weiter?

  14. #14
    Deshalb habe ich ja gesagt, daß die Funktion, die nach dem wahrscheinlichen Thema sucht, immer irgendetwas zurückgibt. Das ist dann wahrscheinlich falsch aber vielleicht macht es genug Sinn, daß man eine halbwegs plausible Antwort geben kann...

    Beachte, daß meine Methode gar nicht erst versucht, Perfektion zu erreichen - im Wesentlichen läuft es darauf hinaus, daß man eine Liste von Wortsammlungen anlegt und versucht, die aktuelle Diskussion in eine dieser Sammlungen einzuordnen. Das ist ziemlich unpräzise und funktioniert nur dann gut, wenn man in einem Chat mit relativ wenigen Themen arbeitet, aber es erspart einem den Aufwand, einen qualitativ hochwertigen Parser für die Chatsprache zu schreiben, was für sich schon ein Abenteuer ist.

  15. #15
    Zitat Zitat von Jesus_666
    "Wer tun können will muß auch lernen tun wollen" als auch "Du mußt in der Kernel-config nach rivafb greppen; die Config liegt in /usr/src/linux/.config."
    Also ich kenne viele Menschen, die das nicht verstehen würden. Und es ist auch kein richtiges Deutsch. Sinn einer solchen KI sollte es nicht sein, jeden menschlichen Unsinn zu verstehen. Wenn ich mich tiefer mit dem Thema beschäftigen würde, würde ich das ganz sicher nicht unter dem Titel "Chatbot" angehen. Von einem Chatbot erwartet man vielleicht, dass er mit sinnlosen Eingaben umgehen kann und den Benutzer auf lustige Art und Weise unterhält. Ein Programm muss meiner Meinung nach nicht wissen, was "greppen" bedeutet. Es soll ja nach Möglichkeit intelligent antworten. Und auf manchen menschlichen Unfug gibt es nunmal keine intelligente Antwort außer dem Schweigen.

    Also würde ich mich erstmal auf die Auswertung normaler Sätze beschränken. Auch das dürfte schon schwierig genug sein, aber bei weitem sinnvoller als die Auswertung dummer Sprüche. Fazit: Man sollte vielleicht keine Imitation des Menschen, sondern vielmehr eine andere Form der Intelligenz anstreben, denke ich.

    freundliche Grüße, Rolus

  16. #16
    Zitat Zitat
    keine intelligente Antwort außer dem Schweigen.
    Wo wir beim nächsten Problem von Alice sind. Gespräche mit Alice laufen immer darauf hinaus, dass die Nachrichten streng abwechselnd geschickt werden. Es wäre besser, wenn der Bot auch mal abwarten würde, ob noch mehr Informationen kommen oder mehrere Sachen schreiben würde, wenn keine Antwort kommt (oder wenn eine Antwort aus mehreren Sätzen besteht). Als kleines Extra könnte man auch noch ne Verzögerung abhängig von der Länge der Antwort einbauen, um die Zeit zu simulieren, die man zum Tippen bräuchte, aber das is dann schon wieder die Sorte "kann man machen, muss man aber nicht".

    Zitat Zitat
    Man sollte vielleicht keine Imitation des Menschen, sondern vielmehr eine andere Form der Intelligenz anstreben, denke ich.
    Der Satz setzt implizit voraus, dass Menschen intelligent sind. Da wär ich mir ehrlich gesagt nicht so sicher.

  17. #17
    Zitat Zitat von Rolus
    Also ich kenne viele Menschen, die das nicht verstehen würden. Und es ist auch kein richtiges Deutsch.
    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 Zitat
    Sinn einer solchen KI sollte es nicht sein, jeden menschlichen Unsinn zu verstehen. Wenn ich mich tiefer mit dem Thema beschäftigen würde, würde ich das ganz sicher nicht unter dem Titel "Chatbot" angehen. Von einem Chatbot erwartet man vielleicht, dass er mit sinnlosen Eingaben umgehen kann und den Benutzer auf lustige Art und Weise unterhält.
    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 Zitat
    Ein Programm muss meiner Meinung nach nicht wissen, was "greppen" bedeutet. Es soll ja nach Möglichkeit intelligent antworten. Und auf manchen menschlichen Unfug gibt es nunmal keine intelligente Antwort außer dem Schweigen.
    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?
    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.

    Zitat Zitat
    Also würde ich mich erstmal auf die Auswertung normaler Sätze beschränken. Auch das dürfte schon schwierig genug sein, aber bei weitem sinnvoller als die Auswertung dummer Sprüche. Fazit: Man sollte vielleicht keine Imitation des Menschen, sondern vielmehr eine andere Form der Intelligenz anstreben, denke ich.
    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.
    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.

  18. #18

    Users Awaiting Email Confirmation

    Ich muss euch beiden, Jesus_666 und Rolus, recht geben... (mehr Rolus, aber egal)

    Obwohl es schön wäre, wenn das Programm die Sprache beherrscht, die ich auch beherrsche*. Mit allem Slang etc., der dazu gehört. Andererseits ist das wohl kaum realistisch, ein solches Programm entwickeln zu wollen. Die logische Folge ist also eine Einschränkung. Ich würde Programmbegriffe nicht kathegorisch ablehnen, aber nur insoweit erlauben, wie sie wirklich jeder halbwegs gebildete Mensch der industrialisierten Welt (also nicht Dritte Welt etc.) versteht. Insofern würde Windows, Office, Powerpoint, Unix, Linux und Firefox z.b. sehr wohl zum Vokablar gehören, greppen, coden, proggen, C++ oder andere "Fachausdrücke" hingegen würden erst mal wegfallen. Als Orientierung wären zum Beispiel Kinder hilfreich, alles, was ein durchschnittliches Kind im Alter von 9-12 Jahren weiß, dass auf eine Realschule oder ein Gymnasium geht, ist als bekannt vorraussetzbar. Betonung liegt auf durchschnittlich. Es gibt ja tatsächlich auch Kinder in diesem Alter, die wissen, dass Html ein Programm zum Schreiben von Internetseiten ist -.- ! Also, Beschränkung Ja, nur-duden-deutsch Nein.

    Das ein Chatbot allerdings nicht verstehen muss, was ein Wort bedeutet, find ich nicht. Darauf haben meine Postings vorher ja abgezielt - ich will einen Bot, der weiß wovon ich rede, und nicht einfach einen, der so tut als ob er alles versteht! Sonst können da sehr sinnlose Antworten herauskommen. Außerdem will ich zumindest mit einem einigermaßen
    ebenwürdigen Partner sprechen und mir nichts vorgaukeln zu lassen. Das das tierisch kompliziert - vielleicht sogar gar nicht - programmierbar ist, weiß ich, aber das ist gerade der Reiz an der Sache! Desshalb auch ständig meine Fragen, wie ich einem Computer ein Wort erklären kann, dass er nicht kennt. Das würde unser Problem mit den Fachausdrücken wie greppen auch wesentlich eindämmen, wenn ich es ihm einfach wie einem Menschen erklären könnte. Es müsste sich praktisch anfangs um einen "BabyChatbot" handeln, der sprechen kann und durch seine Gesprächspartner immer mehr Wissen erlangt. Ähnlich einem Menschen eben.

    Aber ich nehme nicht an, dass man das einem Computer beibringen kann? Geht das, dass ein Computer die Bedeutung eines Begriffs wie "greppen" wirklich lernen kann, durch blose Erklärungen, ohne Programmierung, und ihn trotzdem ähnlich wie ein Mensch versteht?

    * Wo ist der Hauptsatz geblieben? Kommt davon, wenn man seinen Beitrag mitten im Schreiben völlig umstrukturiert, sorry Leute!

  19. #19
    Zitat Zitat von DFYX
    Der Satz setzt implizit voraus, dass Menschen intelligent sind. Da wär ich mir ehrlich gesagt nicht so sicher.
    Hehe, dein Satz setzt 'ne Menge Ironie voraus. Also mir ist noch keine höhere, natürliche Form der Intelligenz begegnet. Deshalb würde ich schon sagen, dass der Mensch relativ intelligent ist.
    Zitat Zitat von Jesus_66
    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.
    Ich hatte eigentlich gar nicht die Absicht, dir irgendetwas zu unterstellen. Ich wollte nur sagen, dass ein Chatbot meiner Meinung nach weniger interessant und weniger KI-behaftet ist. Für einen einfach Chatbot, der auf niedrigem Niveau mit Menschen chatten soll, würde ich mir auch nicht unbedingt die Mühe machen, eine komplette semantische Analyse zu entwickeln. Ich fände es halt spannender und bin damit wohl etwas vom Thema "Chatbot" abgekommen.

    freundliche Grüße, Rolus

  20. #20
    @.Mi:
    Das Problem beim Verständnis ist, daß man um ein relaiv komplettes Vokabular nicht herumkommt. Um das Konzept von "Baum" zu verstehen muß das Programm beipielsweise wissen, was eine Pflanze ist und was das Konzpt "groß" bedeutet, außerdem muß es "Substantiv" kennen, weil "Baum" nun mal eins ist. Für diese Abhängigkeiten brauchen wir dann die Konzepte "Lebewesen", "unbeweglich", "Photosynthese" und "Erde" (die mit Humus drin, nicht der Planet) für die Pflanze, sowie "Größe" und "Verhältnis" für "groß" und "Satzbaustein" und "Wort" für Substantiv. Und so weiter... Und bei diesem Abhängigkeitenbaum habe ich schon vieles weggelassen (zu den Abhängigkeiten von "Baum" müßte beispielsweise eigentlich auch "Diagramm" gehören).

    Effektiv müßte man sämtliche Begriffe so lange durchdefinieren, bis man bei extrem einfachen Grundkomponenten ankommt, die der Computer kennt - also Zahlen und Wahr/Falsch. Dazu kommt noch, daß man Konnotationen eintragen müßte. Ich schätze mal, was man für eine halbwegs intelligente Konversation (was ja das Ziel dieser Überlegungen ist) für Datenmengen braucht:

    Laut Wikipedia ist der durchschnittliche Wortschatz zwischen 8.000 und 10.000 Wörtern; für die Alltagssprache werden zwischen 400 und 800 Wörter benötigt. Die Zahl der in der Datenbank vorhandenen Wörter sei für einen Bot mit einfacher Kommunikationsfähigkeit also 400. (GRUNDWÖRTER = 400)
    Gehen wir davon aus, daß jedes Wort nur so weit durchdefiniert ist, daß man frühestmöglich auf eine Zahl, Wahr oder Falsch abbilden kann. Dazu nehme ich an, daß jedes Wort mit nur fünf Schritten auf einen dieser Werte zurückgeführt werden kann (SCHRITTE = 5) und daß jedes Wort nur zwei Abhängigkeiten hat, die alle einen Schritt näher an einem Grundwert dran sind als das Wort, das von ihnen abhängig ist (ABHÄNGIGKEITEN = 2). Außerdem gehe ich davon aus, daß kein Wort eine Abhängigkeit mit einem anderen Wort teilt (die geteilten Abhängigkeiten werden durch die Zahl von nur zwei durchschnittlichen Abhängigkeiten berücksichtigt).

    Die Anzahl der Wörter auf der untersten Ebene (fünfte Abhängigkeit) ist demnach:
    WÖRTER_A5 = GRUNDWÖRTER * (ABHÄNGIGKEITEN ^ (SCHRITTE - 1)) (SCHRITTE - 1 deshalb, weil der letzte Schritt ja auf einen Grundwert verweist)
    Die der nächsthöheren Ebene ist:
    WÖRTER_A4 = GRUNDWÖRTER * (ABHÄNGIGKEITEN ^ (SCHRITTE - 2))
    Die Anzahl der für den Abhängigkeitenbaum benötigten Wörter ist also:
    WÖRTER = WÖRTER_A5 + WÖRTER_A4 + WÖRTER_A3 + WÖRTER_A2 + GRUNDWÖRTER
    WÖRTER = 400*2^4 + 400*2^3 + 400*2^2 + 400*2^1 + 400
    WÖRTER = 6400 + 3200 + 1600 + 800 + 400
    WÖRTER = 12400
    In Wirklichkeit dürfte die Zahl der benötigten Wörter größer sein, aber ich arbeite mal mit diesem Schätzwert weiter.

    Für die Zahl der benötigten Verbindungen zwischen diesen Wörtern gehe ich davon aus, daß jedes Wort mit seinen Abhängigkeiten sowie mit zwei anderen Wörtern (Konnotationen) verbunden ist. Außerdem gehe ich davon aus, daß alle Konnotationen sich in unserem Wortschatz befinden. Die Verbindungen der elementar definierbarenen Wörter zu ihren Grundwerten ignoriere ich mal.
    VERBINDUNGEN = WÖRTER * 4
    VERBINDUNGEN = 49600

    Mit jedem neuen Wort wächst die Anzahl der Gesamtwörter um [b]2^4 + 2^3 + 2^2 + 2^1 + 1 = 31[b] Wörter und es gibt 124 neue Verbindungen innerhalb des Graphen (denn genau das ist unser Wortschatz jetzt).

    Es ist sicherlich machbar und irgendwann nimmt die Komplexität für das Eintragen eines neuen Wortes ab, aber für wirkliches Verständnis müßte man einen Riesenhaufen von Daten einpflegen. Ein menschenartiger Denkprozeß wäre zwar vorstellbar, wurde bisher aber noch nicht erfolgreich umgesetzt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •