PANGEA: IA conversacional para viajeros

La Paz. Deep Learning. 2021

Existen diversos servicios para viajeros, desde páginas de hoteles hasta ofertas turísticas a unos cuantos clics de distancia, no obstante, el ser humano ha conseguido su información por siglos y siglos a través de preguntas y bases de conocimiento, por lo que le es más natural hacer consultas de esa forma, así surge Pangea, como un servicio web de Inteligencia Artificial conversacional con el que el viajero puede interactuar y conseguir las respuestas a sus más inquietantes preguntas.

Un viajero prudente nunca se lanza a viajar si no tiene la información más relevante de su destino, en su cabeza se encuentran preguntas que en primera instancia cuestionan su seguridad, por lo que investiga al respecto y logra resolver sus dudas en probablemente muchos minutos, de igual forma si ya se aventuró a viajar y necesita conocer alguna costumbre, plato típico, música o lugares para visitar, son tantas las preguntas y mucho el tiempo invertido en responderlas, de esa forma los viajeros pierden tan importante recurso.

Por lo que al usar textos como datos a analizar en la tarea de respuesta a preguntas se requiere el uso de Natural Language Processing (NLP) o en español conocido como el procesamiento del lenguaje natural, entiéndase como la rama de la Inteligencia artificial (IA) que entrena a una computadora para comprender, procesar y generar lenguaje (conversacional).


Descripción del problema

Concretamente el problema es el tedioso y tardío acceso a respuestas inmediatas sobre dudas y consultas acerca de un destino turístico, como ser: comida, hospedaje, actividades turísticas, transporte, centros de salud, cultura, música, conflictos políticos, entre otros.


Objetivo

Desarrollar mediante Inteligencia Artificial un servicio web conversacional de pregunta-respuesta para viajeros aplicando NLP mediante la aplicación de un modelo de deep learning.


Técnicas implementadas

Se presentan las técnicas complementarias a la resolución del problema, ya que todo modelo de Deep Learning requiere ser alimentado por datos.


Búsqueda de datos

La Inteligencia Artificial conversacional Pangea se centra en responder preguntas y no sería posible sin cantidades ingentes de información con las cuales interactuar y usarlas como una fuente de conocimiento (contexto), en ese sentido, se realizó la búsqueda de páginas web que contengan las respuestas más coincidentes de acuerdo a la pregunta del usuario viajero; hacerlo de forma manual representaría demasiado trabajo, por lo cual, se decidió usar la biblioteca de Python, Google Search, el cual emplea al motor de búsqueda Google como fuente de información para brindar las URLs de los sitios webs requeridos.


Captura de datos

Una vez obtenidas las URLs de los sitios webs que contienen la información requerida, se empleó la técnica del Web Scraping para obtener el contenido literal de dichos sitios, es decir, los distintos párrafos y textos presentes en el sitio. Web Scraping es una técnica cuyo objetivo es recolectar información de la web a través de código. En este caso se usó la biblioteca Beautiful Soup disponible en pypi.


Selección y evaluación del modelo

Modelo Bert: es un codificador bidireccional de transformers, que aprende a interpretar el lenguaje.

Cuando al modelo Bert se le añade capas adicionales y es entrenado con un propósito o tarea especializada, se obtiene un modelo Bert que resuelve una tarea en específico.

En el proyecto se aplicó ya modelos ajustados para la tarea de pregunta y respuestas, que fueron previamente ajustados mediante el dataset de los conjuntos de datos de respuesta a preguntas Stanford(SQuAD).

Ambos modelos fueron obtenidos y reutilizados de la biblioteca hugging Face Transformers. Dichos modelos reciben una pregunta y un contexto para procesarlo y analizarlo con el fin de devolver las respuestas que mejor se ajusten a la pregunta.

La elección del mejor modelo fue dado en base a los resultados:

  • Bert en inglés:bert-large-uncased-whole-word-masking-finetuned-squad
  • Bert en español (Beto): distill-bert-base-spanish-wwm-cased-Finetuned-spa-squad2-es
Tabla 1. Evaluación de Modelos

Se seleccionó y grafico un caso en específico, para demostrar como se comportan ambos modelos a una misma pregunta y cuales son las respuestas textuales que dan cada uno en su respectivo lenguaje, figura 1.

Figura 1. Gráfico de barras — Representación de respuestas Modelo Bert y Beto a la misma pregunta.


Flujo de Trabajo del Sistema

El sistema consta de distintos procedimientos para resolver una determinada pregunta, por lo que el usuario viajero debe partir lanzando una pregunta, posteriormente el sistema realiza una búsqueda con Google Search en relación a tal pregunta y devuelve unas cuantas URLs (máximo 5) con las que el web scraper realiza la tarea de extraer todo el texto (párrafos) del sitio hospedado en la URL para pasarle como contexto al modelo, el modelo utiliza el contexto, la pregunta y lanza una respuesta, se captura la respuesta y la url,ambas son representadas en formato de mensaje de chat, figura 2.

Figura 2 . Elaboración propia


Análisis de resultados (Bert vs Beto)

Pangea devuelve las respuestas y la URLs de donde han sido obtenidas tales respuestas, según la cantidad de pruebas se puede observar que el uso de Beto se adecua más según el porcentaje de aciertos. Y en las gráficas se visualiza como el modelo Beto da respuestas con mayor precisión a la misma pregunta realizada en ambos idiomas de acuerdo al modelo.


Conclusión y recomendaciones

Las conclusiones obtenidas tras el desarrollo y resolución del objetivo general son:

  • Se obtuvo un 64.7 % de respuestas correctas de un total de 17 preguntas por parte del modelo BERT en español en relación al 30% del modelo BERT en inglés, en ese sentido, el modelo BERT pre-entrenado con mayor precisión en sus respuestas es el español, ya que las preguntas tuvieron a Bolivia como contexto principal y es razonable puesto que no muchos sitios en inglés tienen información actualizada y específica de Bolivia.
  • La técnica del Web Scraping aportó correctamente el contenido web necesario para que el modelo BERT pudiese responder las preguntas adecuadamente.
  • Dado que el servicio (Pangea) se desplegó por un momento se logró registrar el uso de 2.5 GB de memoria RAM con una demora de aproximadamente 30 segundos mientras el modelo responde a la pregunta.
  • El Servicio Web que se ofreció por unos instantes logró capturar la curiosidad y asombro de los usuarios por su diseño minimalista e interesante forma de interactuar.

Por otra parte las recomendaciones al respecto son:

  • El modelo BERT empleado fue afinado (fine-tuning ) con el dataset SQUAD el cual tiene un formato pregunta-respuesta de dominio parcialmente general, por lo que se tiene mayores expectativas con un afinado específico para el área de turismo.
  • La información recolectada por el servicio proviene de Google que es un motor de búsqueda, el sistema funcionaría mucho mejor y tendría una mayor calidad en sus respuestas si el motor de búsqueda y los datos que en él residen fueran recolectados cautelosa y selectivamente.
  • Como Pangea se centra en el servicio para viajeros y turistas, es recomendable incrementar distintos modelos BERT en varios lenguajes.


Autores del proyecto

  • Ana Paola Céspedes Sejas
  • Mauricio Serginho Matias Conde

«Equipo ElementAxiom»


Referencias

Google search, https://pypi.org/project/googlesearch-python/

Beautifulsoup, https://pypi.org/project/beautifulsoup4/

Modelo Bert en español, https://huggingface.co/mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es

Modelo Bert en inglés, https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squadSaturdays.AI

Saturdays.AIFollow


WRITTEN BY

Ana Paola Cespedes Sejas

Saturdays.AI

Presentación del proyecto: DemoDay

¡Más Inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

Saturdays.AI

Saturdays.AI is an impact-focused organization on a mission to empower diverse individuals to learn Artificial Intelligence in a collaborative and project-based way, beyond the conventional path of traditional education.

res.txt machine learning

res.txt: Resumen y traducción de texto con Machine Learning

res.txt machine learning

La Paz. 2021

Introducción

El resumen de texto es el proceso de extraer la información más importante de un texto fuente para producir una versión abreviada para un usuario. Los seres humanos llevamos a cabo la tarea de resumen, ya que tenemos la capacidad de comprender el significado de un documento y extraer características destacadas para resumir los documentos utilizando nuestras propias palabras. Sin embargo, los métodos automáticos para el resumen de texto son cruciales en el mundo actual, donde hay falta de trabajadores y de tiempo para interpretar los datos.

Figura 1:  Cantidad de datos generados de manera anual

Problema

internet languages

Figura 2: Idiomas predominantes en internet

Hoy en día, con el constante crecimiento de la información el estar actualizados en cualquier tema es una necesidad. Pero las fuentes de información usualmente son extensas y poseen una gran cantidad de texto pero lo más importante es que la información está en inglés.

Objetivo

Desarrollar una aplicación que pueda ayudar a la comprensión de un documento de texto en inglés y acorte el tiempo de comprensión de un texto largo.

Solución propuesta

Hacer la aplicación en base a métodos de DeepLearning enfocados a attention mechanism. Estas técnicas imitan la atención cognitiva. Esto provoca la mejora en las partes más importantes de los datos de entrada y desvanece el resto.

Dataset

CNN Daily Mail es un conjunto de datos de más de 300 mil artículos en inglés escritos por periodistas en CNN y en Daily Mail. El tamaño del conjunto de datos es de 1.27 GiB en la versión actual, esta admite el resumen extractivo y abstracto, aunque la versión original se creó para la lectura y comprensión automática y la respuesta a preguntas abstractas. Los datos se pueden usar para entrenar un modelo para el resumen abstracto y extractivo

Modelo de DL

Figura 3: Esquema BART

BART es una arquitectura que se basa tanto en BERT y GPT, BART utiliza la arquitectura de transformer seq2seq estándar pero, después de GPT, que modificamos las funciones de activación de ReLU a GeLU. La arquitectura está estrechamente relacionada con BERT, con las siguientes diferencias:

  1. Cada capa del decodificador, además, realiza una atención cruzada sobre la capa oculta final del codificador (como en el modelo de secuencia a secuencia del transformador)
  2. BERT utiliza una feed-forward network antes de la predicción de palabras, lo que BART no hace.

Entonces en pocas palabras usa la comprensión de texto o input de BERT y GPT para el output o la generación de palabras.

Para trabajar con este modelo se lo hizo mediante el modelo base que nos provee HuggingFace.

HuggingFace es una plataforma Open Source que se enfoca en NLP, nos ayuda a construir, entrenar e implementar modelos que son estado del arte. En este caso nos ayudó a construir el modelo y con el dataset.

Entrenamiento del modelo

El proyecto fue realizado en base a los modelos provistos por la página de Hugging Face, la cual posee una gran colección tanto de modelos como de datasets para tareas de NLP (Procesamiento de Lenguaje Natural). De todas las opciones se seleccionó el modelo de sumarización abstractiva BART.

El código hace uso de las librerías “datasets” y “transformers” de HuggingFace, además de nltk para realizar la evaluación.

# Imported libraries
from datasets import load_dataset, load_metric
from transformers import AutoTokenizer
from transformers import AutoModelForSeq2SeqLM,
DataCollatorForSeq2Seq, Seq2SeqTrainingArguments, Seq2SeqTrainer
import nltk
import numpy as np
from transformers import pipeline

Para realizar el fine tuning se hizo uso del dataset “cnn_dailymail”, para la evaluación se utilizó la métrica “rouge”, y el modelo base que se usó fue “facebook/bart-base”.

raw_datasets = load_dataset(“cnn_dailymail”, “3.0.0”)
metric = load_metric(“rouge”)
model_checkpoint = “facebook/bart-base”

Se cargaron un tokenizer y un modelo haciendo referencia al modelo base seleccionado.

tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)model = AutoModelForSeq2SeqLM.from_pretrained(model_checkpoint)

Del dataset “cnn_dailymail” se extrajeron los elementos que se encuentran bajo las etiquetas de “article” y “highlights” como datos de entrada y salida respectivamente.

max_input_length = 512
max_target_length = 128
def preprocess_function(examples):
inputs = [doc for doc in examples[“article”]] model_inputs = tokenizer(inputs, max_length=max_input_length, truncation=True)
# Setup the tokenizer for targets
with tokenizer.as_target_tokenizer():
labels = tokenizer(examples[“highlights”], max_length=max_target_length,
truncation=True)
model_inputs[“labels”] = labels[“input_ids”] return model_inputstokenized_datasets = raw_datasets.map(preprocess_function, batched=True)

Antes de entrenar el modelo se realiza la configuración de hiperparámetros.

batch_size = 4
args = Seq2SeqTrainingArguments(
“BART_Finetuned_CNN_dailymail”,
evaluation_strategy = “epoch”,
learning_rate=2e-5,
per_device_train_batch_size=batch_size,
per_device_eval_batch_size=batch_size,
gradient_accumulation_steps=2,
weight_decay=0.01,
save_total_limit=2,
num_train_epochs=1,
predict_with_generate=True,
fp16=True,
)

Se crea una función para realizar el cómputo de métricas haciendo uso de rouge score.

def compute_metrics(eval_pred):
predictions, labels = eval_pred
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=True)
# Replace -100 in the labels as we can’t decode them.
labels = np.where(labels != -100, labels, tokenizer.pad_token_id)
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True)

# Rouge expects a newline after each sentence
decoded_preds = [“\n”.join(nltk.sent_tokenize(pred.strip())) for pred in decoded_preds]decoded_labels = [“\n”.join(nltk.sent_tokenize(label.strip())) for label in decoded_labels]

result = metric.compute(predictions=decoded_preds, references=decoded_labels, use_stemmer=True)
# Extract a few results
result = {key: value.mid.fmeasure * 100 for key, value in result.items()}

# Add mean generated length
prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) for pred in predictions]result[“gen_len”] = np.mean(prediction_lens)

return {k: round(v, 4) for k, v in result.items()}

Una vez inicializado el modelo, definidos los hiperparámetros, datasets, tokenizer y métricas creamos un Trainer.

trainer = Seq2SeqTrainer(
model,
args,
train_dataset=tokenized_datasets[“train”],
eval_dataset=tokenized_datasets[“validation”],
data_collator=data_collator,
tokenizer=tokenizer,
compute_metrics=compute_metrics
)

Descargamos punkt tokenizer que nos permite transformar un texto por oraciones.

nltk.download(‘punkt’)

Finalmente realizamos el entrenamiento y la evaluación

trainer.train()trainer.evaluate()

Resultados

Figura 4: Pérdida a lo largo del entrenamiento

Una vez finalizada la fase de entrenamiento podemos observar la pérdida a lo largo del entrenamiento realizado en el dataset “train”.

Si bien se muestran buenos resultados, se pueden mejorar haciendo mejor sintonización y tiempos de entrenamiento con el modelo.

Los resultados obtenidos al evaluar el modelo entrenado con la métrica rouge score fueron los siguientes:

eval_loss: 1.5510817766189575

eval_rouge1: 46.8771

eval_rouge2: 23.5647

eval_rougeL: 39.6525

eval_rougeLsum: 43.3625

eval_gen_len: 17.8154

Conclusiones

Se logró realizar una aplicación que resume y traduce el texto dado, se vio que los resultados obtenidos son óptimos para la tarea.

Se usó dos modelos para hacer la aplicación, el primer modelo es el que se entrenó de resumen este modelo ya esta en huggingface , para la parte de traducción se usó un modelo ya entrenado de huggingface. (https://huggingface.co/Helsinki-NLP/opus-mt-en-es).

Trabajo Futuro

Mejorar los tiempos de inferencia que tienen los modelos al usar servicios en la nube.

Expandir los tipos de entradas que pueda tener, puesto que ahora solo soporta texto puro. (txt, docx)

Integrantes

Sergio Flores. — www.linkedin.com/in/sergio-flores-ll

Anna Montevilla. — www.linkedin.com/in/anna-i-montevilla

Koichi Sato. — www.linkedin.com/in/koichi-sato-316902182

Josmar Suarez. — www.linkedin.com/in/josmar-suarez-l

Referencias

https://arxiv.org/abs/1910.13461v1

https://huggingface.co/datasets/cnn_dailymail

https://huggingface.co/transformers/model_doc/bart.html

https://arxiv.org/abs/1810.04805

https://medium.com/walmartglobaltech/the-journey-of-open-ai-gpt-models-32d95b7b7fb2

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) a la vez que se realizan proyectos para el bien (#ai4good). Los talleres que realizamos forman parte del programa AI 4 Schools para que cualquier persona “aprenda haciendo” IA sin importar su especialidad o nivel de partida.

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en este link o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

WRITTEN BY

Detección de Discurso de Odio

Detección de Discurso de Odio en Redes Sociales mediante Transformers y Natural Language Processing

Detección de Discurso de Odio

La Paz. Deep Learning. 2021

De acuerdo con las Naciones Unidas, el discurso de odio se define como “Todas las formas de expresión que comparten, alienten, justifiquen o promueven la humillación, el menosprecio, la estigmatización o amenaza contra una persona o grupo como las mujeres y las niñas”.

Actualmente, estamos experimentando una oleada de discurso de odio en varios ámbitos y hacia diferentes minorías. Por ejemplo, después de la final de la Eurocopa 2020 se desató una ola de ataques racistas en redes sociales contra jugadores de la sección inglesa después de haber fallado penales. En particular, se destaca el uso de Internet para la propagación de este tipo de agresiones gracias a que éste proporciona anonimidad, distanciamiento, ausencia de normativa de los contenidos, entre otros.

Las redes sociales y otras plataformas en Internet cuentan con algunos mecanismos automáticos para detectar discursos de odio. Estas herramientas han adquirido mayor relevancia ante diversos sucesos que han disparado la proliferación de contenido con discurso de odio. La siguiente gráfica muestra cómo el discurso de odio aumentó durante el año de pandemia, según los mensajes de odio eliminados por Facebook:

Figura 1:Número de publicaciones con discurso de odio eliminadas en Twitter. Fuente: https://es.statista.com/grafico/21710/publicaciones-de-discurso-del-odio-eliminadas-por-facebook/

Sin embargo, estas herramientas no se encuentran disponibles para cualquier ciudadano que quisiera analizar contenidos para determinar la existencia de discurso de odio. Es por esta razón que decidimos construir un método que sirviera como herramienta o base para la construcción de tecnologías que pudieran ayudar en la detección de este tipo de comentarios y así poder detener su propagación.

En este artículo, describimos cómo aplicamos métodos de Deep Learning y Procesamiento de Lenguaje Natural (NLP, por sus siglas en inglés) para la detección de discurso de odio en comentarios de Twitter en idioma español. Este trabajo es una continuación del proyecto Violentómetro Online. En dicho proyecto tuvimos un primer acercamiento al problema de detección de discurso de odio contra mujeres mediante el uso de técnicas clásicas de Machine Learning.

En esta sección, describimos la metodología (Transformers y Data Augmentation), así como los datos que utilizamos durante la realización de este proyecto. También detallamos los parámetros del modelo y las técnicas de interpretación que empleamos para entender sus predicciones.

Conjunto de Datos

MEX-A3T: Fake News and Aggressiveness Analysis es un evento organizado por la comunidad de NLP en México para detectar noticias falsas y textos con discurso de odio. Los organizadores compartieron con el equipo el conjunto de datos de entrenamiento que consiste en Tweets en el idioma español. El conjunto tiene las siguientes características:

  • 7 mil 332 registros
  • 2 columnas:
  • Text: Texto del Tweet (no contiene handlers).
  • Category:
  • 1: Contiene odio en general (2110 registros)
  • 0: No contiene odio (5222 registros)
Figura 2: Distribución del conjunto de datos MEX-A3T

Data Augmentation

La distribución del conjunto de datos (Figura 2) muestra que se tienen menos registros de la categoría 1 (discurso de odio). Este problema afecta en particular a los modelos de Deep Learning por lo que fue necesario aplicar técnicas que nos permitieran generar nuevos ejemplos (sintéticos) para tener una cantidad de registros cercana a la de la categoría 2.

Las operaciones de data augmentation que se aplicaron al 50% de mensajes de discurso de odio del dataset para obtener más ejemplos son las siguientes:

  • Synonym Replacement: Reemplazo de algunas palabras por su sinónimo.
  • Random Deletion: Borrado de algunas palabras de manera aleatoria con probabilidad p.
  • Random Swap: Intercambio de palabras de manera aleatoria.
  • Random Insertion: Inserción de un sinónimo en una posición aleatoria n.

Modelo

Para crear el modelo utilizamos la librería de Transformers de Hugging Face (Figura 4) que contiene modelos de Deep Learning pre entrenados para varios propósitos como clasificación de texto, extracción de información, traducción, entre otros. En particular utilizamos el modelo BETO, el cual es un modelo con la arquitectura BERT entrenado con un corpus en español, para obtener la representación vectorial del texto (embeddings). Además se utilizaron dos capas adicionales: multi-layer bi-directional GRU y otra lineal que obtiene las predicciones. Es posible utilizar otras arquitecturas en lugar de multi-layer bi-directional GRU, pero para este proyecto decidimos utilizar ésta ya que es más eficiente computacionalmente que LSTM.

Nota: El código completo se puede consultar en el repositorio del proyecto violentometro-online.

Mejores Parámetros

Probamos diferentes variaciones de BETO para obtener los mejores parámetros de entrenamiento para el modelo final. Evaluamos cada modelo utilizando la métrica F1 ya que ésta es comúnmente utilizada en problemas de clasificación de textos además de tomar en cuenta las siguientes variaciones:

  • Model: Variación de BETO (cased y uncased).
  • Epochs: Número de iteraciones en el entrenamiento.
  • Preprocessed: Preprocesamiento del texto que incluye operaciones como remover emojis, dígitos, stopwords, entre otros.
  • Sample frac: Proporción de ejemplos sintéticos en el conjunto de datos.

La siguiente tabla muestra los modelos con los que obtuvimos los mejores resultados:

Tabla 1: Resultados de los mejores parámetros del modelo

Como podemos observar, el mejor modelo (BETO-Uncased) no requirió un preprocesamiento del texto además de que fue necesario generar una importante cantidad de datos sintéticos. Dicho modelo obtuvo el mejor valor (0.842) de la métrica F1. Queremos resaltar que dicho resultado es mucho mejor al que habíamos obtenido anteriormente utilizando el modelo de Random Forest..

Explicación de las Predicciones

Utilizamos la API Lime para obtener una explicación detallada de las predicciones del modelo. Lime es capaz de explicar cualquier modelo de clasificación que haga predicciones de una o más clases. Para poder utilizar Lime es necesario crear una función que regrese un arreglo de Numpy con las probabilidades de cada una de las clases. Lime muestra los pesos de cada una de las palabras del texto en la predicción. La Figura 4 contiene la explicación de la predicción de un texto:

Figura 4: Ejemplo de explicación de la predicción de un texto con discurso de odio

Se puede observar que en la predicción del modelo, se le dio más peso a la palabra que aparece primero en la lista además de la representación en texto del emoji.

Aplicación Web

Desarrollamos el prototipo de una aplicación web con el modelo que obtuvo los mejores resultados. Dicha aplicación web se puede consultar aquí. El prototipo fue desarrollado con el framework Streamlit y se utilizó GitHub Actions para desplegarlo (integración continua) en AWS. La siguiente imágen muestra el prototipo:

Figura 5: Aplicación Web Violentómetro Online

Los usuarios pueden introducir cualquier texto en la aplicación. Cuando los usuarios pulsan las teclas Ctrl+Enter, la aplicación (modelo) devuelve como resultado las siguientes categorías:

  • 1 = Contiene discurso de odio
  • 0 = No contiene discurso de odio

El objetivo de nuestro proyecto es desarrollar un método efectivo para detectar automáticamente la violencia verbal en idioma español que ocurre en discursos en línea. Con este proyecto pudimos crear un método que tiene una efectividad bastante razonable utilizando técnicas avanzadas como Deep Learning y data augmentation, además de estar construido con herramientas gratuitas y de código abierto. También se utilizó una API que nos permitió entender las predicciones del modelo.

Entre los siguientes pasos de nuestro proyecto podemos destacar lo siguiente:

  • Utilizar otras variantes del idioma español.
  • Recolectar más ejemplos de discurso de odio que se encuentren dirigidos a diferentes minorías (mujeres, religiones, opiniones, entre otros) para obtener un modelo más robusto.
  • Incorporar un mecanismo de feedback para los usuarios de la aplicación web.

Queremos agradecer a María José Díaz-Torres, Paulina Alejandra Morán-Méndez, Luis Villasenor-Pineda, Manuel Montes-y-Gómez, Juan Aguilera, Luis Meneses-Lerín, autores del Dataset MEX-A3T y del artículo Automatic Detection of Offensive Language in Social Media: Defining Linguistic Criteria to build a Mexican Spanish Dataset. También queremos agradecer al equipo que hizo posible Saturdays.AI La Paz por todo su trabajo y dedicación en la organización del programa.

Integrantes

Presentación del proyecto: DemoDay

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) a la vez que se realizan proyectos para el bien (#ai4good). Los talleres que realizamos forman parte del programa AI 4 Schools para que cualquier persona “aprenda haciendo” IA sin importar su especialidad o nivel de partida.

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en este link o visítanos en nuestra web www.saturdays.ai ¡te esperamos!