Torri
Anmeldungsdatum: 29. Mai 2008
Beiträge: 824
|
Okay. Ich muss mich noch etwas in die Abhängigkeiten reinfitzen, aber das wird schon. Ich würde morgen einfach mal 30 Fragen und Personennamen schreiben, dann haben wir erstmal was zum Testen. Nach und nach kann man es ja weiter füllen. Ich schreibe auch mal den Threadersteller an, er wollte ja eigentlich auch mitmachen.
|
Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
deadtronic schrieb: diesch schrieb: Tabelle fragen_abhaengigkeit : Jede Zeile enthält zwei FrageID-Antwort-Paare. Wenn Frage1 mit Antwort1 beantwortet wurde, heißt das, dass man bei Frage2 von Antwort2 ausgehen kann, ohne Frage2 stellen zu müssen.
Angemerkt sei, dass es ebenso die Möglichkeit gibt, dass die Frage aufgrund einer anderen nicht zutrifft. Z.b. Frage Ist die person blond? Zweite Frage: Ist die person rothaarig? Wenn Frage eins gestellt würde, lautet die Antwort für die zweite Nein.
Ja, da gibts ein kleines Problem mit dem Code: Es gibt eine Spalte Haarfarbe. Da ist dann drin Blond, Rothaarig, Schwarz, Braun, etc. Aktuell ist es so, dass man nach allen 4 Kriterien gefragt wird. Das habe ich irgendwie nicht bedacht *Kopfkratz - wie konnt ich das nur vergessen* Werd das mal abändern gehen ☺ mfg
|
deadtronic
Anmeldungsdatum: 18. Februar 2010
Beiträge: 762
|
Torri schrieb: Ich würde morgen einfach mal 30 Fragen und Personennamen schreiben, dann haben wir erstmal was zum Testen. Nach und nach kann man es ja weiter füllen. Ich schreibe auch mal den Threadersteller an, er wollte ja eigentlich auch mitmachen.
Prima, mach das. 👍 Übrigens, soweit ich das gerade beurteilen kann, ist die Fragenanzahl nicht allzu wichtig. Zum einem guten Ergebnis tragen hauptsächlich die Personen, deren Verknüpfungen mit Fragen und die Abhängigkeiten bei. Wenn wir am Ende 50-100 Fragen haben, die ausreichend in die anderen Tabellen integriert sind, dürfte das schon zu einem sehr guten Ergebnis führen. Das ist übrigens bei Akinator ebenso, da fällt auch auf dass einige Fragen eigentlich immer gestellt werden und die Auswahl nicht allzu groß ist. Deshalb machst du vielleicht lieber mal nur 10 oder 15 Fragen und dafür umsp bessere Verknüpfungen und Abhängigkeiten. 😉 Ich erstelle die Datenbankstruktur nachher auch nochmal neu, da ich bei einigen etwas vergessen habe, könnte sein dass die Abhängigkeiten und Verknüfungen auch noch ein ID-Feld bekommt, das aber eher unwichtig ist. Ist aber auch nicht schwer zu merken, immer das erste Feld frei zu lassen oder. TDeveloper schrieb: deadtronic schrieb:
Ja, da gibts ein kleines Problem mit dem Code: Es gibt eine Spalte Haarfarbe. Da ist dann drin Blond, Rothaarig, Schwarz, Braun, etc. Aktuell ist es so, dass man nach allen 4 Kriterien gefragt wird. Das habe ich irgendwie nicht bedacht *Kopfkratz - wie konnt ich das nur vergessen* Werd das mal abändern gehen ☺
Du solltest vorallem mal die 4 Tabellen einbauen, an den momentanen Listen rumzufeilen lohnt sich nicht. Ich schreibe demnächst dann wirklich mal die Datenbankklasse, kannst dich also darauf einstellen, Funktionen zu bekommen die dir eine bestimmte Spalte zurückliefern. Am besten, du emulierst das mal, indem du einfach eine Funktion baust, die dir eine Liste/Tupel, wahrscheinlich multidimensional, zurückgibt Die Funktionen werden *wahrscheinlich* so aussehen: get_table(tabelle) # gesamte tabelle\\
return tuple(spalte1(id, name), spalte2(id, name), spalte3...)
get_column(tabelle, spalten) # gesamte zeile\\
return tuple((id, name, ev. wiki))
get_columns(tabelle, spalten[], wert) # mehrere spalten wo spalte = wert ist\\
return tuple((id, name, ev. wiki))
get_value(tabelle, spalte, zeile) # einzelner wert\\
return value Übrigens gibt es bei Wikipedia doch bereits den Code für eine Alpha-Beta-Suche, den kannst du doch einfach verwenden, musst ihn halt in Python umwalden sollte aber nicht allzu schwer sein. ☺
|
Torri
Anmeldungsdatum: 29. Mai 2008
Beiträge: 824
|
Wir haben jetzt 34 Fragen und 50 Personen - aber wir brauchen auf jeden Fall noch mehr Fragen, um später detaillierter arbeiten zu können. Für den Anfang reicht es aber. @deadtronic ... Erklärst du mir bitte nochmal die Abhängigkeiten und Verknüpfungen genauer? Was ist eigentlich der Unterschied?
|
Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
deadtronic schrieb: TDeveloper schrieb:
Ja, da gibts ein kleines Problem mit dem Code: Es gibt eine Spalte Haarfarbe. Da ist dann drin Blond, Rothaarig, Schwarz, Braun, etc. Aktuell ist es so, dass man nach allen 4 Kriterien gefragt wird. Das habe ich irgendwie nicht bedacht *Kopfkratz - wie konnt ich das nur vergessen* Werd das mal abändern gehen ☺
Du solltest vorallem mal die 4 Tabellen einbauen, an den momentanen Listen rumzufeilen lohnt sich nicht. Ich schreibe demnächst dann wirklich mal die Datenbankklasse, kannst dich also darauf einstellen, Funktionen zu bekommen die dir eine bestimmte Spalte zurückliefern. Am besten, du emulierst das mal, indem du einfach eine Funktion baust, die dir eine Liste/Tupel, wahrscheinlich multidimensional, zurückgibt
Keine Ahnung ob du meinen Code gesehen hast, aber ich "feil" da nicht an Listen rum. Ich räum nur den Code ein bisschen auf. Die Integration sollte an sich gar nicht so schwer sein, sofern ich aus der DB auch wieder Listen ziehen kann.
Übrigens gibt es bei Wikipedia doch bereits den Code für eine Alpha-Beta-Suche, den kannst du doch einfach verwenden, musst ihn halt in Python umwalden sollte aber nicht allzu schwer sein. ☺
Ich weiß, hab ich mir auch angesehen. Mein Code macht das gleiche. Nur anders. mfg
|
deadtronic
Anmeldungsdatum: 18. Februar 2010
Beiträge: 762
|
Torri schrieb: @deadtronic ... Erklärst du mir bitte nochmal die Abhängigkeiten und Verknüpfungen genauer? Was ist eigentlich der Unterschied?
Also Verknüpfungen sind einfach nur die Antwort auf die Fragen für jede Person. Da kommt die betroffene ID der Person rein und die ID der Frage und dann noch die Antwort (Ja oder nein = 1 oder 0). Abhängigkeiten sind Fragen, deren Antwort sich aus einer anderen Frage ergibt. Eingetragen werden die in dem Stil: Frage_ID_1 | Frage_ID_2 | Antwort 1(= Ist die Person männlich?) | 2 (= Ist die Person weiblich?) | 0 Also wenn die Frage eins bereits gestellt wurde, wird in dem Beispiel automatisch für die Frage 2 Nein angenommen. P.S. Gute Arbeit ☺ Nachtrag: Muss natürlich 0 statt Nein heissen.
|
deadtronic
Anmeldungsdatum: 18. Februar 2010
Beiträge: 762
|
TDeveloper schrieb: Keine Ahnung ob du meinen Code gesehen hast, aber ich "feil" da nicht an Listen rum. Ich räum nur den Code ein bisschen auf. Die Integration sollte an sich gar nicht so schwer sein, sofern ich aus der DB auch wieder Listen ziehen kann.
Habe ich, wenn auch nicht allzu ausführlich und verstanden habe ich ihn nicht so ganz. Wobei die Listen so kompliziert aussehen, ich denke das sieht mit Datenbankzugriff schon viel übersichtlicher aus. Die Datenbankklasse ist jedenfalls fertig, nur einzelne Werte auslesen geht noch nicht, aber mir fallen auch kaum Anwendungsszenarien dafür ein, vielleicht braucht man das garnicht, abwarten. Wenn es Wünsche gibt, kann ich die gerne noch einbauen. Ach ja, noch eine Info, die einfach irgendwo aufgeschrieben gehört, aber eigentlich nicht kratzt: Ich habe die Datenbankversion von 2 auf 3 umgestellt. Dabei musste ich eine kleine Anpassung am Code von sqlbuddy vornehmen, die Erkennung der Version funktioniert nämlich nicht.
|
diesch
Anmeldungsdatum: 18. Februar 2009
Beiträge: 5072
|
deadtronic schrieb: Torri schrieb: @deadtronic ... Erklärst du mir bitte nochmal die Abhängigkeiten und Verknüpfungen genauer? Was ist eigentlich der Unterschied?
Also Verknüpfungen sind einfach nur die Antwort auf die Fragen für jede Person. Da kommt die betroffene ID der Person rein und die ID der Frage und dann noch die Antwort (Ja oder nein = 1 oder 0). Abhängigkeiten sind Fragen, deren Antwort sich aus einer anderen Frage ergibt. Eingetragen werden die in dem Stil: Frage_ID_1 | Frage_ID_2 | Antwort 1(= Ist die Person männlich?) | 2 (= Ist die Person weiblich?) | 0 Also wenn die Frage eins bereits gestellt wurde, wird in dem Beispiel automatisch für die Frage 2 Nein angenommen.
Da muss noch eine Spalte mit der Antwort auf Frage1 rein, denn die kann ja verneint werden: 1 | J | 2 | N
1 | N | 2 | J Ein "Ja" als Antwort auf "Ist die Person männlich?" impliziert also ein "Nein" auf "Ist die Person weiblich?", und ein "Nein" als Antwort auf "Ist die Person männlich?" impliziert also ein "Ja" auf "Ist die Person weiblich?".
|
deadtronic
Anmeldungsdatum: 18. Februar 2010
Beiträge: 762
|
diesch schrieb: Ein "Ja" als Antwort auf "Ist die Person männlich?" impliziert also ein "Nein" auf "Ist die Person weiblich?", und ein "Nein" als Antwort auf "Ist die Person männlich?" impliziert also ein "Ja" auf "Ist die Person weiblich?".
Stimmt, so weit habe ich nicht gedacht. Da überlege ich mir allerdings, ob es nicht einfacher wäre, ob man bei einem Ja einfach die Antwort der ersten Frage annimmt und bei einem Nein die Gegenteilige antwort? Würde das glaube ich vereinfachen, was die Programmierung angeht als auch was das eintragen angeht. Torri, was ist dir lieber?
|
Torri
Anmeldungsdatum: 29. Mai 2008
Beiträge: 824
|
Ihr seid die Programmierer und habt somit den schwereren Job. Wir nehmen also, was euch die Arbeit am meisten vereinfacht! Wenn der Benutzer aber eine Frage bestimmt beantwortet, dann kann er damit ja auch falsch liegen (Tippfehler / Unwissen). Dann müssen wir auch Kontrollfragen stellen. Berücksichtigt das der Algorithmus?
|
Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Torri schrieb: Ihr seid die Programmierer und habt somit den schwereren Job. Wir nehmen also, was euch die Arbeit am meisten vereinfacht! Wenn der Benutzer aber eine Frage bestimmt beantwortet, dann kann er damit ja auch falsch liegen (Tippfehler / Unwissen). Dann müssen wir auch Kontrollfragen stellen. Berücksichtigt das der Algorithmus?
Nein, der Algorithmus berücksichtigt das zur Zeit nicht. Wenn man eine Antwort falsch gegeben hat, dann hat man ein Problem ☺ Aber dafür gibts ja den Button "Keine Ahnung / Ich weiß nicht" mfg
|
Torri
Anmeldungsdatum: 29. Mai 2008
Beiträge: 824
|
Das wäre aber noch wichtig. Ich beobachte bei mir, wenn ich den Akinator spiele, dass ich auch manchmal nach Gutdünken antworte (z.B. ob die Person einen Sohn hat) - es klappt da ja auch. Aber keine Sorge: Das kann noch kommen 😉
|
Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Torri schrieb: Das wäre aber noch wichtig. Ich beobachte bei mir, wenn ich den Akinator spiele, dass ich auch manchmal nach Gutdünken antworte (z.B. ob die Person einen Sohn hat) - es klappt da ja auch. Aber keine Sorge: Das kann noch kommen 😉
Dann müsste man aber einen Algorithmus schreiben der zusätzlich noch überprüft, ob es eine Person gibt die zum Beispiel mindestens 90% mit den Antworten übereinstimmt. Irgendwie auch blöd, denn dafür ist der aktuelle Code gar nicht ausgelegt.
|
Torri
Anmeldungsdatum: 29. Mai 2008
Beiträge: 824
|
Ich fürchte leider, dass es nicht anders geht. Wir müssten dann mit Wahrscheinlichkeiten arbeiten. Ansonsten produzieren wir viele Fälle, in denen eine Person nicht erraten wird, obwohl sie in der Datenbank vorhanden ist.
|
Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Torri schrieb: Ich fürchte leider, dass es nicht anders geht. Wir müssten dann mit Wahrscheinlichkeiten arbeiten. Ansonsten produzieren wir viele Fälle, in denen eine Person nicht erraten wird, obwohl sie in der Datenbank vorhanden ist.
Sollte mir morgen nix dazwischen kommen (so wie heute), dann werd ich versuchen den Code nochmals komplett zu ändern und eine Wahrscheinlichkeit direkt integrieren. Dann sollte man mit falsch beantworteten Fragen keine Probleme mehr haben ☺ mfg
|