Prueba para bots en Twitch.tv

Como sabes, hay bots en Twitch.tv. No estoy hablando de bots "malos" para engañar a los espectadores o chatear, sino de bots que permiten que un transmisor agregue una u otra funcionalidad a una transmisión o chat durante una transmisión. Entre los más famosos están: Moobot, Nightbot y MirRobot. Este último será discutido. Mirrobot está escrito por nuestro compatriota e incluye merecidamente el número de los bots más populares. Una de sus características, que tiene una gran demanda, es realizar un cuestionario en el chat. 

La esencia del cuestionario MirRobot: con cierta frecuencia, el bot hace una pregunta al público en el chat. Si dentro de cierto tiempo, nadie puede responder correctamente, el bot da pistas que indican el número de letras en la respuesta y revela algunas letras (de acuerdo con el principio de "Horca" o "Campos de milagros").
Ejemplo de juego de prueba:

Tan pronto como alguien responde correctamente, en primer lugar, está bien hecho y, en segundo lugar, el bot recuerda que fue este espectador quien respondió correctamente. Una lista de los espectadores que dieron las respuestas más correctas a las preguntas del cuestionario también está disponible en el chat en un equipo especial. Para cada canal, esta lista es diferente.

La idea


Una vez, al experimentar cómo encontrar respuestas a preguntas arbitrarias en Internet, recordé sobre el cuestionario en Twitch y decidí intentar hacer un bot que participara en el cuestionario por sí mismo. También me resultó interesante descubrir qué sucedería si el mismo jugador está en la parte superior de la prueba en canales completamente diferentes. ¿Esto causará sospechas de la audiencia o del desarrollador? ¿Cuál será la reacción? ¿O tal vez alguien ya hizo un bot antes que yo, y ya no hay personas reales en la cima?

La primera versión de trabajo del bot se escribió durante la noche en las vacaciones de mayo. El bot pudo conectarse al canal deseado en Twitch, analizar el chat, reconocer cuándo aparece una pregunta de prueba en el chat y buscar la respuesta en Internet.

Desafortunadamente, no pudimos encontrar inmediatamente un servicio normal que pudiera responder preguntas arbitrarias en ruso. Google y Yandex no son adecuados para tales fines, ya que no dan una respuesta preparada, sino enlaces a páginas en Internet que necesitan, al menos, analizarse mínimamente. Para una persona, dicho análisis no es un problema, pero cómo hacer que se haga un automóvil es una tarea separada. Idealmente, estaba buscando algo similar a Wolfram Alpha, pero con soporte para el idioma ruso. Por cierto, si alguien tiene en mente un servicio tan abierto, escriba los comentarios.

Implementación


Para el cuestionario sobre Twitch, resultó ser suficiente para buscar respuestas en uno de los muchos sitios dedicados a crucigramas, escándalos y otros juegos similares. En principio, después de haber probado varios sitios similares, elegí el que tenía el formato más simple de la página de resultados de búsqueda. Mirando hacia el futuro, diré que resultó que la base principal de MirRobot se compone de tales "preguntas de crucigramas". La eficacia del algoritmo para preguntas educativas generales resultó ser bastante alta (70%) y, habiendo escrito este bot funcional desde el principio, ya no tuvimos que volver a él.

Después de una serie de mejoras, el bot pudo: 
  • Juega con éxito el cuestionario simultáneamente en varios canales de chat.
  • Independientemente, encuentre nuevos canales en los que MirRobot estaba activado y hubiera un número mínimo de espectadores.
  • Mantenga su base de datos de respuestas correctas a las preguntas para no confiar en la efectividad de la búsqueda en la red y poder responder preguntas específicas sobre juegos de computadora.
  • Mantenga un registro de la parte superior de los participantes del cuestionario en los canales y tenga en cuenta su posición en la parte superior para decidir la respuesta;
  • Vuelva a conectar en caso de desconexión de Internet.
  • Verifique la correspondencia de su respuesta esperada y las indicaciones en el cuestionario.
  • Trabaje de manera completamente autónoma: aloje en una nube PaaS, envíe los análisis necesarios a la web para monitorear y mantener una base de datos en DBaaS.
  • Simule el chat con una mención personal (esta funcionalidad se implementó mucho más tarde).
  • Simule el ritmo y la manera de la respuesta de una persona.

Lo que no funcionó o no se implementó por varias razones:
  • No se implementa la detección de si el bot está prohibido en el chat en el canal.
  • Hubo dos errores molestos que no pude solucionar. En el caso de su detección, el bot simplemente se reinicia.


Tecnologías utilizadas:
  • Python 3 (aproximadamente 1 mil líneas de código).
  • IRC (Twitch chat es en realidad un chat IRC).
  • Camarera / Frasco para la interfaz web.
  • MongoDB (mlab.com).
  • PaaS IBM Bluemix.

Como resultado, se logró la independencia total del bot. Se ha logrado un desafío global. Los últimos 2 meses el bot trabajó de forma autónoma.

Bot vs humano



La capacidad de no destacarse fue la más importante para el funcionamiento exitoso del bot. Fue bastante fácil enseñarle al bot a responder preguntas. En función de sus capacidades técnicas, en la mayoría de los casos, el bot puede responder la pregunta del cuestionario en el primer segundo, pero esto genera sospechas de inmediato: la persona no es algo para escribir la respuesta, ni siquiera tiene tiempo para leer toda la pregunta durante este tiempo. Otra característica es que una persona no responde igualmente rápido a diferentes preguntas: a las simples, rápidamente, a las complejas, no muy. Por lo tanto, si simplemente pone un retraso significativo en la respuesta, resulta que los participantes en vivo “harán clic” en preguntas simples, y el bot responderá magistralmente a todas las preguntas complejas. Tal "erudito", que da las respuestas correctas a preguntas especializadas completamente diferentes, atraerá inmediatamente la atención hacia usted.No comencé a implementar una evaluación de la "complejidad" de la pregunta.

En la captura de pantalla en el grupo de uno de los streamers, están indignados por aquellos que buscan respuestas al cuestionario en Google:

Como resultado, para no destacar entre los espectadores comunes, tuvimos que reducir significativamente la probabilidad de que el bot respondiera correctamente: 
  • Introducir una regla para dar respuestas en no más del 30–40% de los casos.
  • Aumente el retraso antes de intentar responder (valor aleatorio).
  • En algunos casos, dé las respuestas correctas, a pesar de que alguien acaba de dar la respuesta correcta, creando la ilusión de que una persona está escribiendo en el chat.

El resultado de tales "optimizaciones" (es extraño llamar a "optimización" una disminución en la eficiencia) fue que en uno de los canales muy populares con varios miles de espectadores en vivo y preguntas de prueba con una frecuencia de 1-2 minutos, el bot ganó en promedio 5-7 veces en la prueba por hora Para los canales en los que la actividad de los espectadores en vivo era baja, la probabilidad de ganar del bot simplemente buscaba la probabilidad básica de una respuesta (20-30%).

Al mismo tiempo, tal subestimación de la eficiencia del robot permitió un poco de "conciencia tranquila". Resultó que el bot respondió poco y principalmente en los casos en que no había nadie entre la audiencia que supiera la respuesta correcta. Podemos decir que el bot compitió con "googlers", es decir, con aquellos que no sabían de inmediato la respuesta, intentaron encontrarla en Internet, o solo pudieron adivinar después de algunos consejos.
Por supuesto, con tal eficiencia, el bot no podría competir a corta distancia con los participantes en vivo de la prueba, lo que podría dar fácilmente la respuesta correcta antes del bot. Mirando a través de las estadísticas del bot en el futuro en el contexto del cambio en la parte superior, estaba claro que un jugador activo en vivo durante un período de tiempo limitado da más respuestas correctas que el bot. A veces, en el canal muy activo, es posible que no se le permita al bot dar la respuesta correcta durante una hora y media o dos. Este estado de cosas resultó ser aceptable: el bot no dio muchas respuestas correctas, no molestó a nadie en el chat con su participación y no despertó sospechas, sino que se movió constantemente al cuestionario superior, debido al hecho de que, a diferencia de una persona, no descansaba, no dormía, no dormía cansado, y constantemente participó en cada transmisión.

En algún momento, "atornillé" el motor de chat del bot para que pudiera responder a mensajes privados e intentar imitar por completo a una persona. El motor, a juzgar por los artículos en Internet, se mostró muy bien en las pruebas de Turing. Por supuesto, Twitch tiene sus propios detalles de chat: por ejemplo, solo necesita filtrar mensajes de emoticones. Pero a menudo era posible mantener la ilusión, y a veces los diálogos resultaron bastante divertidos. Era un poco vergonzoso que a veces el robot controlara al interlocutor y se presentara como una niña de 10 años, pero en general el problema de comunicación estaba resuelto.

¿Has notado el bot?


El hecho de que el bot estaba en la parte superior al mismo tiempo de casi 50 canales, nadie lo notó. Aquí, en mi opinión, la gran fragmentación de los grupos de audiencia, así como el hecho de que de aproximadamente 2 mil canales donde se usa MirRobot, el cuestionario se incluyó en solo unos pocos cientos. Si hablamos de canales donde hubo una prueba y donde había al menos unas pocas docenas de personas en el chat, entonces hubo ~ 160 de esos canales, y la mayoría de ellos eran transmisiones raras irregulares o canales con menos de 50 espectadores (se excluyeron específicamente ), o canales en los que solo experimentaron brevemente con un cuestionario. Literalmente había un par de canales activos con una parte superior "grande", que no se podía ingresar, y la prueba en ellos ya había estado desactivada durante mucho tiempo, pero la parte superior anterior permaneció.
El siguiente gráfico muestra que el bot entró constantemente en la parte superior de varios canales:

Por otro lado, el bot se notó en canales donde hay muy poca actividad en el chat. Esto incluyó ambos canales donde simplemente hay pocos espectadores, y canales donde los espectadores se quedaron con un pequeño número de personas "en vivo". En varios canales, el bot fue enviado a la prohibición. Lo que lo traicionó, tal como lo entendí, fue:
  • No respondió a llamadas arbitrarias a él en mensajes privados y en el chat en general. Usando el motor de chat bot que implementé mucho más tarde que el inicio del proyecto.
  • En canales las 24 horas, las 24 horas del día estaban presentes y respondían periódicamente en un chat.

¿Qué hay de los demás?


Muchas personas solo buscan respuestas en Google. No les gustan estas personas en el chat e incluso luchan activamente contra ellas.

Entonces, en algún momento, el autor del bot comenzó a reemplazar algunas letras de la pregunta con letras en inglés de aspecto similar, lo que realmente complicó la búsqueda. Google y los sitios con bases de datos de preguntas no saben cómo manejar tales galimatías. Yandex hace frente a tales solicitudes, lo que dejó a Google al menos algunas posibilidades. En cuanto al bot, actualizar el algoritmo de análisis no fue gran cosa.

Es como un enfrentamiento eterno entre un escudo y una espada. Puede obtener una ventaja solo en un corto período de tiempo.

Sorprendentemente, resultó que hay otros bots o scripts automáticos para jugar el cuestionario. Al menos una vez, vi en un chat que alguien de una cuenta completamente nueva respondió la prueba literalmente dentro de 1 segundo después de que surgió la pregunta.

Hubo quienes no pudieron ser identificados incondicionalmente como un bot o script. Sin embargo, con respecto a varios apodos, a juzgar por varios factores, estaba 90% seguro de que se usaba algún tipo de automatización. Aquí hay un ejemplo del registro de todos los mensajes de un participante sospechoso en un canal durante 6 horas:

Lo que se puede notar en este registro:
  • Todas las publicaciones son muy cortas y no están relacionadas. Este es un intento de dar respuestas a la prueba. Además de tratar de responder en el chat en unas pocas horas, no hubo nada de este participante. Es decir, una persona ya no escribe nada en el chat.
  • Todos los mensajes están en mayúscula y no hay errores tipográficos.
  • , . (, ) .
  • 3–5 , 1–1,5 . , - , .

El registro dado es muy atípico para una persona viva. Todo se ve agravado por el hecho de que para este participante este comportamiento se observa no solo una noche, sino durante 7 días consecutivos. Además, este estudio se registró recientemente, a principios de septiembre, probablemente solo por una prueba.

Incluso intenté hablarles personalmente sobre este tema, pero no tuvo lugar un diálogo inteligible. Si estas personas usan un bot, algún tipo de ayuda parcialmente automatizada o simplemente se sientan en las transmisiones toda la noche para jugar un cuestionario, con un 100% de probabilidad de que sea imposible de determinar. Esta pregunta aún está abierta.

¿Hubo algún beneficio?


Era posible obtener algo, pero no, no había beneficio. En primer lugar, la esencia del experimento era no obtener ningún premio. En segundo lugar, los premios no valieron la pena.

Por ejemplo, en uno de los canales se realiza un concurso semanal en el que los principales encuestados reciben oro en World of Tanks. Al final resultó que, el bot irrumpió constantemente en la parte superior y podría recibir premios. Resultó más tarde simplemente buscando el apodo utilizado en el motor de búsqueda, que apuntaba a las publicaciones en la comunidad correspondiente.

Algunas estadísticas


  • Tiempo de trabajo: 4 meses
  • Se dieron las respuestas correctas: ~ 8 mil (en promedio 60–70 por día)
  • Recolectado en nuestra propia base de datos de preguntas y respuestas: ~ 83 mil (total de preguntas en el cuestionario 110 mil)
  • Ubicado en la parte superior ~ 50 canales (de 160 con un cuestionario)
  • Prohibido en al menos 3 canales



Conclusión y conclusiones


¿Fue interesante? - si. La revelación fue que alguien también automatizó el juego de preguntas.

¿Fue útil esto? - Sí, pero solo como el desarrollo de la tecnología y la creación de algo nuevo.

PS. Hasta ahora, el bot continúa funcionando en modo automático. Suponemos que el experimento aún no ha alcanzado su etapa final. Por lo tanto, si está luchando en la prueba intelectual, forzando la circunvolución, asegúrese de no enfrentarse a un guión inteligente.

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


All Articles