Frage von DrunkenHolger, 67

Wie programmiert man ein Programm, welches mit Hilfe von Datenbanken Fragen beantworten kann?

Hey liebe Community, ich schreibe gerade meine Masterarbeit und hatte eine Idee, deren Umsetzung jedoch einige Probleme macht. Ich schreibe über ein bestimmtes Buch und wollte mit Hilfe eines Programmes erreichen, dass Schüler mit dem verstorbenen Autor "kommunizieren" können. (Die Arbeit ist im pädagogischen Bereich angesiedelt). Sie sollen also Fragen eingeben, wie: "Wo bist du geboren?" - Das Programm gibt danach die Antwort aus. So weit kein Problem. Jedoch muss damit die Frage damit Wort für Wort passen und auch kleinste Abweichungen wie: "Wo wurden Sie geboren?" würde einen Fehler auswerfen. Kann man mit irgendeinen Programm einzelne Schlüsselwörter abspeichern, die dann zur Antwort führen (also z.B. geboren, Geburtsort o.ä.), welche dann zu der Antwort führen?

Ich danke euch für die Hilfe. MFG DHolger

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Herb3472, 45

Mit dem Datenbankprogramm Microsoft Access (=Teil des Office Professional Pakets) und VBA (Visual Basic for Applications) könntest Du eine Datenbank aufbauen, in der die Schlüsselwörter samt Verweis zur richtigen Antwort in einer Tabelle enthalten sind. Mittels einer beim Eingabefeld hinterlegten Ereignisprozedur könnte man die Tabelle per SQL-Abfrage und VBA nach dem Schlüsselwort durchsuchen und entweder die passende Antwort oder eine Fehlermeldung ausgeben.

Kommentar von DrunkenHolger ,

Vielen Dank,

da ich Mac-User bin konnte ich den Datensatz zwar nur in Excel machen, jedoch war der Ansatz genau das, was ich brauchte. Ich habe jetzt tatsächlich ein Programm erstellt, welches meinen Anforderungen genügt. Nochmals vielen Dank.

Kommentar von Herb3472 ,

Freut mich, dass ich helfen konnte :-)

Antwort
von maximilianus7, 20

ich habe die frage so verstanden, dass es die (zunächst) nicht um die technische umsetzung geht (programmiersprache/system, datenbanksystem) sondern um die grundsätzliche strategie: 

ich denke es ist sinnvoll, bei den eingegeben wörtern zwischen "key words" und "stop-words" (=irrelevante wörter) zu unterscheiden. im beispiel: da die fragen sich an eine andere bestimmte person richten, ist es das vorhandensein von "du" oder "sie" - oder ob überhaupt eins von beiden- irrelevant. käme also nur die beiden wörter "wo" und "geboren" in eine key-word-tabelle (keyword - antwort-satz-nr)

die antwort-satz-nr ist eine eindeutige nr (id) in der antwort-tabelle (AT). Neben der der id und der antwort wäre als 3. spalte eine "standard-frage" sinnvoll.

es können aber mehrere einträge für ein key in der key-word-tabelle (KWT) vorhanden sein, im fall "geboren" auch auf die antwort für "wann geboren". und für das "wo" wird es viele antworten geben. 

du holst aus den angebenen wörter (auf z.b. klein-buchstaben normiert) aus der KWT jeweils die zutreffenden key-word-menge heraus, bildest daraus die schnittmenge in der hoffnung, dass diese aus einem einzigen key besteht, mit dem du dann die antwort ausgeben kannst. bei mehren keys (antworten), könnst du mit Hilfe der standard fragen eine nachfrage generieren.

Antwort
von iwolmis, 30

Ich würde den "Psychologe Programm" umbauen, und mit Datenbank verknüpfen.

https://de.wikipedia.org/wiki/ELIZA

Es gabs auch eine Programmierer Sprache und Programm für Geologen

um in normale Sprachen alles zu abfragen von den Steinproben vom Mond.

Leider habe ich diesen Buch nicht mehr. Die Sprache war "S**" oder "L***"

Dort war auch die ganze Englische Grammatik beschrieben.

So was kann man auch im LISP schreiben.

Kommentar von iwolmis ,

Falls man den "AI programm paranoiker" mit "Psychologe Programm" verbindet - kann man lachen:-)

Aber man kann auch an dem "Psychologe Programm" mit Datenbank verbinden.

Antwort
von wotan38, 11

Ich habe einige ähnlich gelagerte Probleme auf folgende Weise erfolgreich lösen können:

Ich erstelle zu jedem Schlüsselwort ein codiertes Wort. Dazu wird das Schlüsselwort vereinfacht, indem alles auf Kleinbuchstaben umgewandelt wird, Doppellaute als Einzelbuchstaben, harte und weiche Konsonanten wie d und t oder k und g gleichgesetzt werden, teils auch Zeichenfolgen umgesetzt werden wie ck zu k oder iks zu x, tz zu z, ß und ss zu s, ie und ieh zu i, oh zu o usw. Zwischenräume und Bindestriche werden ignoriert. Diesem codierten Wort werden in einer Datenbanktabelle das gewünschte korrekte Wort zugeordnet.

Die vom Anwender eingegebenen Wörter werden genauso umcodiert und gemäß der hinterlegten Datenbanktabelle zum vermeintlich richtigen Wort zurückverwandelt.

Bei den Antworten werden nun die zu erwartenden richtigen Wörter als eine oder mehrere gültige Kombinationen als Suchargument für die Antwort hinterlegt.

Im praktischen Betrieb können dabei auch mehrere Treffer zustandekommen. In diesem Fall wird dem Anwender eine Liste zur Auswahl angeboten. Man hat dann noch die Möglichkeit, das Ganze aufgrund von Tests und Erfahrungen bei der Anwendung zu verfeinern, um die Erkennungsrate zu steigern.

Auf jeden Fall sollte die zur Verarbeitung bestimmte Frage angezeigt werden, damit der Anwender kontrollieren kann, ob die ausgegebene Antwort wirklich zu seiner Frage gehört.

In einer meiner Anwendungen läuft das seit 20 Jahren mit nur wenigen Nachbesserungen am Anfang.


Antwort
von iwolmis, 17

Noch mal ich;  alle diese Programme arbeiten per Chat, also Tastatur.

Aber Verknüpfung mit Spracherkennung und Sprachsymulator finde ich ganz OK. Manche findest Du kostenlos, manche nicht. Ich war bei IBM bei ViaVoice Telephony Tools and Runtime  - es ist alles möglich  -)

Keine passende Antwort gefunden?

Fragen Sie die Community