Cómo integrar detección de toxicidad en tus chatbots

Cómo hacer que tus chatbots sean más seguros mediante la integración de un detector de toxicidad.

-

El equipo de Xatkit se preocupa del buen comportamiento en las conversaciones con chatbots. El respeto es fundamental en la comunicación en Internet, y esto también se aplica en los chatbots. No queremos que nuestros chatbots sean ofendidos, y más importante, no queremos que nuestros clientes malgasten recursos en procesar comentarios tóxicos de trolls o cualquier usuario indeseable. Hoy explicaremos cómo integrar detección de toxicidad en tus chatbots para hacerlos más seguros.

¿Qué es toxicidad?

La definición formal de toxicidad es “muy dañino o desagradable de forma general o maliciosa”. El lenguaje de este tipo puede ser ofensivo para mucha gente o para colectivos específicos y debe ser evitado todo lo posible para garantizar una comunidad sana y sin odio.

¿Cómo puede ser detectada?

Como en la mayoría de técnicas del Procesamiento del Lenguaje Natural, un detector de toxicidad está implementado como un modelo del lenguaje que, dado un input (e.g. el mensaje que se envía al chatbot) produce una salida (en este caso la probabilidad de que el mensaje sea tóxico). Muchos modelos pueden ir más allá de solamente detectar si es tóxico o no. También existe la posibilidad de clasificar la toxicidad por tipos como “insulto”, “obscenidad”, “amenaza”, etc. Esto es muy útil, por ejemplo, en páginas web donde un administrador debe analizar las principales causas del odio en los chats, bloquear a usuarios irrespetuosos o censurar contenido inapropiado.

Dos maneras de añadir detector de toxicidad en tus chatbots con Xatkit

Xatkit es una plataforma de orquestación en la que intentamos siempre traer las mejores herramientas de NLP disponibles y permitir su uso en nuestros chatbots de una forma sencilla. Respecto a la toxicidad, hemos añadido un nuevo procesador del lenguaje para el análisis de la toxicidad. Es más, hemos proveído dos diferentes implementaciones de detección de lenguaje tóxico. Como cliente, eres libre de escoger la opción que mejor cumpla tus necesidades.

PerspectiveAPI

“PerspectiveAPI es el producto de investigación colaborativa por Jigsaw y Google’s Counter Abuse Technology team. Nosotros hacemos de nuestros experimentos, herramientas y datos de investigación un contenido open-source para combatir la toxicidad online y el acoso” (extraído y traducido del sitio web de PerspectiveAPI).

Esta herramienta permite detectar muchos tipos de toxicidad, algunos de ellos en diferentes idiomas. Al usar esta implementación, el chatbot de Xatkit envía una petición a la API para cada mensaje del usuario y recibe una puntuación entre 0 (0% tóxico) y 1 (100% tóxico) para cada tipo de toxicidad que deseemos conocer. Estas puntuaciones están disponibles para el creador del chatbot para decidir qué hacer o cómo responder ante el mensaje basándose en el nivel de toxicidad calculado.

Detoxify

“En Unitary buscamos frenar el contenido ofensivo online interpretando el contenido visual en contexto”.

Detoxify es el resultado de tres competiciones de Kaggle propuestas para mejorar los clasificadores de toxicidad. Cada una tuvo un propósito diferente en el contexto de detección de toxicidad.

  • Toxicity comment classification challenge: La primera competición pedía la creación de un detector de toxicidad genérico que fuera capaz de detectar diferentes tipos de toxicidad (insulto, amenaza, sexualidad…).
  • Unintended Bias in Toxicity Classification: Es un hecho que hay muchas palabras que causan confusión, puesto que a menudo son utilizadas para ofender a diferentes colectivos (e.g. palabras relacionadas con la homosexualidad, las mujeres o diferentes razas). En esta segunda versión, se pretendió mejorar los prejuicios inintencionados que surgen al clasificar la toxicidad del texto.
  • Multilingual Toxic Comment Classification: En la última competición se pretendía desarrollar la detección de toxicidad en muchos más lenguajes. Las dos competiciones anteriores se centraban en el inglés, así que en esta ocasión se pidió obtener buenos resultados con otros idiomas.

Estos tres modelos pueden ser utilizados con Xatkit. Al igual que con PerspectiveAPI, las puntuaciones de toxicidad están disponibles para el desarrollador del chatbot para detectar a usuarios troll, maleducados o irrespetuosos. Puedes echar un vistazo a nuestro prototipo de REST API que empaqueta y permite hacer consultas desde Xatkit a los modelos de Detoxify.

Chatbot de ejemplo

Hemos construido un bot de ejemplo que detecta la toxicidad de los mensajes, que puedes encontrar en el directorio de LanguageProcessorsBots

Ejemplo de uso del ToxicityPostProcessor en un chatbot

En este extracto de código hay una simple definición de un estado de un bot. En este estado se quiere obtener la estimación de la toxicidad que PerspectiveAPI ha calculado para un mensaje de un usuario, y en base a su valor escoger la respuesta del chatbot. Aquí se asume que todo valor mayor que 0.7 se considera tóxico. Además se comprueba que el valor haya sido correctamente escrito, con la expresión booleana !toxicity.equals(PerspectiveApiScore.DEFAULT_SCORE).

Una puntuación será igual a “default expression” cuando no haya sido correctamente calculada (ya sea por fallos en PerspectiveAPI o por problemas internos del bot), a modo de sistema de seguridad para que el chatbot no se “rompa” a la hora de acceder a un valor no definido.

Entradas del mismo autor

Deja un comentario