Lo que realmente comprueba la prueba de Turing

Hace algún tiempo, sugerí jugar la Prueba de Turing con mi bot Misha. Quien lo haya probado sabe que el robot jugador está determinado de manera elemental. Aquellos que no lo hayan intentado pueden leerlo en el primer comentario de ese artículo.

Ahora ha llegado el momento de organizar una reunión informativa, hablar sobre el dispositivo del bot y sacar conclusiones.



Reglas del juego


Las reglas del juego se enumeraron en un artículo anterior, repetiré aquí para que usted y yo no se ejecuten en los enlaces.

  1. Cada participante conectado al bot puede asumir el papel del jugador que responde las preguntas, o el juez que hace estas preguntas.
  2. Si un participante decide ser un juez, el robot selecciona al azar un jugador para él, ya sea entre jugadores humanos o conecta un robot. Es decir, en el juego siempre hay alguien que responde, y el juez solo le hace preguntas.
  3. Si un participante decide ser un jugador, entonces el robot lo busca de manera similar para emparejar un juez participante.
  4. El juego se divide en rondas de 5 preguntas. Al final de cada ronda, el juez toma una decisión con quién se comunica, con una persona o con una máquina: este es el final del juego. Si no puede decidir, puede comenzar la siguiente ronda o darse por vencido, deteniendo el juego.
  5. El robot interpreta el papel del pequeño Misha, de cinco años. Para no facilitar la tarea al juez, se recomienda que la persona del jugador también responda en nombre de Misha.


Desde el lanzamiento hasta el momento de la escritura, se jugaron 256 juegos (un poco extraño, pero cierto).

De estos, terminaron con un resultado obvio, es decir, ambos lados jugaron hasta el final de la siguiente ronda (nadie jugó más de una ronda) y el juez decidió: 115 juegos

  • Solución de robot - 74
  • la decisión "hombre" - 41

Hubo 26 decisiones equivocadas, de las cuales:

  • solución "robot" (en realidad una persona) - 15
  • solución humana (en realidad un robot) - 11

Como puede ver, más a menudo una persona fue confundida con un robot que un robot con una persona.

Como resultado, el robot fue identificado correctamente en (74-15) / 115 = 51% de los juegos, y el robot fue confundido con una persona en 11/115 = 9.5% de los juegos, es decir, podemos decir con confianza que el bot Misha no pasó la prueba.


A modo de comparación, en una competencia en 2012, en el 29% de 150 conversaciones, los jueces tomaron a Odessa bot Zhenya Gustman por una persona, y en 2014, el 33% de los jueces se basaron en 300 entrevistas.

¿Qué hay debajo del capó?


El bot está escrito en Python y, en general, consta de tres módulos:

  • en realidad un bot con un motor de juego
  • gerente de robot
  • el robot

El algoritmo principal del juego está contenido en la clase Juego, que almacena la identificación de los participantes e implementa una máquina de estado simple:

  • Inicio del juego
  • Esperando una pregunta del juez
  • Esperando una respuesta del jugador
  • Esperando una decisión del juez
  • Juego terminado


En las transiciones entre estados, el bot pasa las preguntas del juez al jugador, las respuestas del jugador al juez. Solo se transmite un mensaje y el bot pasa al siguiente estado, por lo que si alguien intentó preguntar o responder con dos, vio que el bot no lo permite.

Cuando el robot recibe una respuesta del robot, no lo transmite de inmediato, pero con un retraso de tiempo: no apareció de inmediato, lo agregué de acuerdo con el comentario galqiwi , gracias.

Cada cambio de estado se guarda en la base de datos SQLite, en caso de situaciones imprevistas: cortes de energía, reinicios del sistema operativo, o simplemente el propietario del bot (quiero decir) quería detenerlo y rehacer algo. Con un nuevo comienzo, el bot carga los juegos guardados de la base de datos y el juego continúa.

Además, hay dos líneas de espera: jueces en espera de jugadores y jugadores en espera de jueces. Cuando un participante comienza un nuevo juego, la cola correspondiente se ve si tiene un compañero. Si no, entonces el participante está en cola.

El administrador de robots vive en un hilo separado. Periódicamente revisa la línea de jueces que esperan a los jugadores y crea una copia del robot para ellos. Deliberadamente hizo una demora para que el robot no siempre tuviera tiempo de interceptar al juez y el jugador humano también tuvo la oportunidad de conectarse al juego. El gerente tiene la capacidad de crear varias opciones para robots, solo necesita registrar sus clases. Pero hasta ahora solo se ha implementado uno.

Y finalmente, el módulo robot. Pero antes de hablar sobre el interior del robot, le contaré sobre la base de preguntas y respuestas con las que funciona.

Primero rellené este archivo de texto:

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/es427259/


All Articles