Was der Turing-Test wirklich überprüft

Vor einiger Zeit schlug ich vor, den Turing-Test mit meinem Bot Misha zu spielen. Wer es versucht hat, weiß, dass der Roboterspieler elementar bestimmt ist. Diejenigen, die es nicht versucht haben, können es im ersten Kommentar unter diesem Artikel lesen.

Jetzt ist es an der Zeit, eine Nachbesprechung zu arrangieren, über das Gerät des Bots zu sprechen und Schlussfolgerungen zu ziehen.



Spielregel


Die Spielregeln wurden in einem früheren Artikel aufgeführt. Ich werde sie hier wiederholen, damit Sie und ich nicht auf den Links laufen.

  1. Jeder mit dem Bot verbundene Teilnehmer kann die Rolle des Spielers übernehmen, der Fragen beantwortet, oder des Richters, der diese Fragen stellt.
  2. Wenn sich ein Teilnehmer als Richter entscheidet, wählt der Bot zufällig einen Spieler für ihn aus - entweder unter menschlichen Spielern oder verbindet einen Roboter. Das heißt, im Spiel gibt es immer jemanden, der antwortet, und der Richter stellt nur ihm Fragen.
  3. Wenn sich ein Teilnehmer dafür entscheidet, ein Spieler zu sein, sucht der Bot in ähnlicher Weise nach ihm, um einen Teilnehmer-Richter zu paaren.
  4. Das Spiel ist in Runden mit 5 Fragen unterteilt. Am Ende jeder Runde trifft der Richter eine Entscheidung, mit wem er kommuniziert, mit einer Person oder mit einer Maschine - dies ist das Ende des Spiels. Wenn er sich nicht entscheiden kann, kann er die nächste Runde beginnen oder aufgeben und das Spiel beenden.
  5. Der Roboter spielt die Rolle des kleinen Jungen Mischa, der fünf Jahre alt ist. Um dem Richter die Aufgabe nicht zu erleichtern, wird empfohlen, dass die Spielerperson auch im Namen von Mischa antwortet.


Vom Start bis zum Zeitpunkt des Schreibens wurden 256 Spiele gespielt (etwas seltsam, aber wahr).

Von diesen endeten sie mit einem offensichtlichen Ergebnis, dh beide Seiten spielten bis zum Ende der nächsten Runde (niemand spielte mehr als eine Runde) und der Richter entschied - 115 Spiele

  • Roboterlösung - 74
  • die Entscheidung "Mann" - 41

Es gab 26 falsche Entscheidungen, von denen:

  • Lösung "Roboter" (eigentlich eine Person) - 15
  • menschliche Lösung (eigentlich ein Roboter) - 11

Wie Sie sehen können, wurde eine Person häufiger mit einem Roboter verwechselt als ein Roboter mit einer Person.

Infolgedessen wurde der Roboter in (74-15) / 115 = 51% der Spiele korrekt identifiziert, und der Roboter wurde in 11/115 = 9,5% der Spiele für eine Person gehalten, dh wir können mit Sicherheit sagen, dass der Mischa-Bot den Test nicht bestanden hat.


Zum Vergleich: Bei einem Wettbewerb im Jahr 2012 nahmen die Richter in 29% von 150 Gesprächen Odessa bot Zhenya Gustman für eine Person und im Jahr 2014 33% der Richter anhand von 300 Interviews.

Was ist unter der Haube


Der Bot ist in Python geschrieben und besteht im Großen und Ganzen aus drei Modulen:

  • Eigentlich ein Bot mit einer Game Engine
  • Robotermanager
  • der Roboter

Der Hauptalgorithmus des Spiels ist in der Spielklasse enthalten, in der die Teilnehmer-ID gespeichert und eine einfache Zustandsmaschine implementiert wird:

  • Spielstart
  • Warten auf eine Frage des Richters
  • Warten auf eine Antwort des Spielers
  • Warten auf eine Entscheidung des Richters
  • Spiel vorbei


Bei Übergängen zwischen Zuständen gibt der Bot die Fragen des Richters an den Spieler weiter, die Antworten des Spielers an den Richter. Es wird nur eine Nachricht gesendet und der Bot befindet sich im nächsten Status. Wenn also jemand versucht hat, mit zwei zu fragen oder zu antworten, hat er festgestellt, dass der Bot dies nicht zulässt.

Wenn der Bot eine Antwort vom Roboter erhält, sendet er sie nicht sofort, sondern mit einer Zeitverzögerung - sie erschien nicht sofort, ich fügte sie gemäß der Bemerkung galqiwi hinzu , danke.

Jede Statusänderung wird in der SQLite-Datenbank gespeichert, falls unvorhergesehene Situationen auftreten - Stromausfälle, Neustarts des Betriebssystems oder einfach der Bot-Besitzer (ich meine) wollte sie stoppen und etwas wiederholen. Bei einem Neustart lädt der Bot die gespeicherten Spiele aus der Datenbank und das Spiel wird fortgesetzt.

Außerdem gibt es zwei Warteschlangen - Richter, die auf Spieler warten, und Spieler, die auf Richter warten. Wenn ein Teilnehmer ein neues Spiel startet, wird in der entsprechenden Warteschlange angezeigt, ob er einen Partner hat. Wenn nicht, wird der Teilnehmer in die Warteschlange gestellt.

Der Robotermanager lebt in einem separaten Thread. Er überprüft regelmäßig die Reihe der Richter, die auf die Spieler warten, und erstellt für sie eine Kopie des Roboters. Es wurde absichtlich verzögert, so dass der Roboter nicht immer Zeit hatte, den Richter abzufangen, und der menschliche Spieler auch die Möglichkeit hatte, sich mit dem Spiel zu verbinden. Der Manager hat die Möglichkeit, verschiedene Optionen für Roboter zu erstellen. Sie müssen lediglich deren Klassen registrieren. Bisher wurde jedoch nur eine implementiert.

Und schließlich das Robotermodul. Bevor ich jedoch über die Innenseiten des Roboters erzähle, werde ich Ihnen die Grundlagen der Fragen und Antworten erläutern, mit denen er funktioniert.

Zuerst habe ich diese Textdatei gestopft:

T: 
T:   
Q:   ?
Q:   ?
Q:   ?
Q:   ?
Q:  ?

T: 
Q:   ?

T:  
T: 
Q:  ?
Q:   ?
Q:   ?

T:  
T: , 
Q:  ?
Q:  ?

… . — , , --. . , . pymorphy2 kmike, YARN, XML SQLite — 22 , …

:

    def normalSynonyms(self,orig):
        r = self.morph.parse(orig)
        res = []
        for parse in r:
            word = parse.normal_form
            syns = self.yarn.synonyms(word)
            for g in syns:
                words = self.yarn.words(syns[g])
                res = res + words
        return res

.

getAnswer(self, text)

, . , - , . , .

:

  1. , . , .
  2. -, , , , . .


, «» , , — , . , , — .

" , , 12000 . «-» 300 . ."

, , , . , .


, , , , , .

, , , . , , .   - , . , , .

— , , . , .

. ,   , — - - . - , . , , « » — . , , .

, , , , - . , , , .


, -:


Raspberry Pi 3. SSD, , , .

, .


, , — . , , , , , , .

, , , " ?" ( «Computing Machinery and Intelligence»)   « ». , , — , . .

:
"    ,   « »   ,     .   , ,   - .   ,   , ,  , ."

- , , , , . , .


:
"     , ,  ,   .    ."

, , . , , , , , , — « [] ?», , .

:
"2018-10-23 13:01:53,385 186 Player2Judge , ?"

— , :





, , . , , ?

. « » ? R2-D2 C-3PO « »? «A.I.»? « »? « »? - ? , , , , - .

— , ? , , .

, R2-D2 -, , .

, , — . ( « » ) , , , , , , , .

, C-3PO , , , , . - , .

. , , :

  • , ;
  • , , , .

, —   . .

, . , « ?», (1950), , . « » , .

:
"… , , , , ; , , ."

Source: https://habr.com/ru/post/de427259/


All Articles