Menu iconMenu icon
NLP con Transformadores: Técnicas Avanzadas y Aplicaciones Multimodales

Capítulo 5: Innovaciones y Desafíos en Transformadores

5.4 Ejercicios Prácticos

Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.

Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras

Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.

Instrucciones:

  1. Cargar un modelo de incrustación de palabras pre-entrenado.
  2. Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
  3. Interpretar los resultados para identificar sesgos potenciales.

Solución:

from whatlies.language import SpacyLanguage

# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")

# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]

# Calculate and display similarity scores
for profession in professions:
    for gender in genders:
        similarity = language[profession].similarity(language[gender])
        print(f"Similarity between {profession} and {gender}: {similarity:.2f}")

Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos

Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.

Instrucciones:

  1. Utilizar un pipeline de análisis de sentimientos de Hugging Face.
  2. Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
  3. Comparar las puntuaciones de sentimiento.

Solución:

from transformers import pipeline

# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")

# Test sentences
sentences = [
    "He is a doctor.",
    "She is a doctor.",
    "He is a nurse.",
    "She is a nurse."
]

# Perform sentiment analysis
for sentence in sentences:
    result = sentiment_pipeline(sentence)
    print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")

Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales

Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.

Instrucciones:

  1. Crear un conjunto de datos con oraciones que contengan términos específicos de género.
  2. Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
  3. Imprimir el conjunto de datos aumentado.

Solución:

# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]

# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
    if "He" in sentence:
        augmented_dataset.append(sentence.replace("He", "She"))
    elif "She" in sentence:
        augmented_dataset.append(sentence.replace("She", "He"))

# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)

Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP

Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.

Instrucciones:

  1. Cargar un pipeline de análisis de sentimientos de Hugging Face.
  2. Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
  3. Visualizar las explicaciones.

Solución:

import shap
from transformers import pipeline

# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)

# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]

# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)

# Calculate SHAP values
shap_values = explainer(sentences)

# Visualize the SHAP values
shap.plots.text(shap_values)

Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género

Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.

Instrucciones:

  1. Cargar un pequeño conjunto de datos de oraciones.
  2. Filtrar las oraciones que contengan "él" o "ella".
  3. Mostrar el conjunto de datos filtrado.

Solución:

import pandas as pd

# Create a sample dataset
data = pd.DataFrame({
    "text": [
        "He is a doctor.",
        "She is a nurse.",
        "Engineers solve problems.",
        "Teachers educate students."
    ]
})

# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)

Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.

5.4 Ejercicios Prácticos

Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.

Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras

Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.

Instrucciones:

  1. Cargar un modelo de incrustación de palabras pre-entrenado.
  2. Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
  3. Interpretar los resultados para identificar sesgos potenciales.

Solución:

from whatlies.language import SpacyLanguage

# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")

# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]

# Calculate and display similarity scores
for profession in professions:
    for gender in genders:
        similarity = language[profession].similarity(language[gender])
        print(f"Similarity between {profession} and {gender}: {similarity:.2f}")

Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos

Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.

Instrucciones:

  1. Utilizar un pipeline de análisis de sentimientos de Hugging Face.
  2. Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
  3. Comparar las puntuaciones de sentimiento.

Solución:

from transformers import pipeline

# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")

# Test sentences
sentences = [
    "He is a doctor.",
    "She is a doctor.",
    "He is a nurse.",
    "She is a nurse."
]

# Perform sentiment analysis
for sentence in sentences:
    result = sentiment_pipeline(sentence)
    print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")

Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales

Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.

Instrucciones:

  1. Crear un conjunto de datos con oraciones que contengan términos específicos de género.
  2. Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
  3. Imprimir el conjunto de datos aumentado.

Solución:

# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]

# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
    if "He" in sentence:
        augmented_dataset.append(sentence.replace("He", "She"))
    elif "She" in sentence:
        augmented_dataset.append(sentence.replace("She", "He"))

# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)

Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP

Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.

Instrucciones:

  1. Cargar un pipeline de análisis de sentimientos de Hugging Face.
  2. Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
  3. Visualizar las explicaciones.

Solución:

import shap
from transformers import pipeline

# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)

# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]

# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)

# Calculate SHAP values
shap_values = explainer(sentences)

# Visualize the SHAP values
shap.plots.text(shap_values)

Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género

Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.

Instrucciones:

  1. Cargar un pequeño conjunto de datos de oraciones.
  2. Filtrar las oraciones que contengan "él" o "ella".
  3. Mostrar el conjunto de datos filtrado.

Solución:

import pandas as pd

# Create a sample dataset
data = pd.DataFrame({
    "text": [
        "He is a doctor.",
        "She is a nurse.",
        "Engineers solve problems.",
        "Teachers educate students."
    ]
})

# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)

Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.

5.4 Ejercicios Prácticos

Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.

Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras

Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.

Instrucciones:

  1. Cargar un modelo de incrustación de palabras pre-entrenado.
  2. Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
  3. Interpretar los resultados para identificar sesgos potenciales.

Solución:

from whatlies.language import SpacyLanguage

# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")

# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]

# Calculate and display similarity scores
for profession in professions:
    for gender in genders:
        similarity = language[profession].similarity(language[gender])
        print(f"Similarity between {profession} and {gender}: {similarity:.2f}")

Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos

Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.

Instrucciones:

  1. Utilizar un pipeline de análisis de sentimientos de Hugging Face.
  2. Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
  3. Comparar las puntuaciones de sentimiento.

Solución:

from transformers import pipeline

# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")

# Test sentences
sentences = [
    "He is a doctor.",
    "She is a doctor.",
    "He is a nurse.",
    "She is a nurse."
]

# Perform sentiment analysis
for sentence in sentences:
    result = sentiment_pipeline(sentence)
    print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")

Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales

Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.

Instrucciones:

  1. Crear un conjunto de datos con oraciones que contengan términos específicos de género.
  2. Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
  3. Imprimir el conjunto de datos aumentado.

Solución:

# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]

# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
    if "He" in sentence:
        augmented_dataset.append(sentence.replace("He", "She"))
    elif "She" in sentence:
        augmented_dataset.append(sentence.replace("She", "He"))

# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)

Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP

Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.

Instrucciones:

  1. Cargar un pipeline de análisis de sentimientos de Hugging Face.
  2. Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
  3. Visualizar las explicaciones.

Solución:

import shap
from transformers import pipeline

# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)

# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]

# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)

# Calculate SHAP values
shap_values = explainer(sentences)

# Visualize the SHAP values
shap.plots.text(shap_values)

Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género

Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.

Instrucciones:

  1. Cargar un pequeño conjunto de datos de oraciones.
  2. Filtrar las oraciones que contengan "él" o "ella".
  3. Mostrar el conjunto de datos filtrado.

Solución:

import pandas as pd

# Create a sample dataset
data = pd.DataFrame({
    "text": [
        "He is a doctor.",
        "She is a nurse.",
        "Engineers solve problems.",
        "Teachers educate students."
    ]
})

# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)

Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.

5.4 Ejercicios Prácticos

Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.

Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras

Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.

Instrucciones:

  1. Cargar un modelo de incrustación de palabras pre-entrenado.
  2. Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
  3. Interpretar los resultados para identificar sesgos potenciales.

Solución:

from whatlies.language import SpacyLanguage

# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")

# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]

# Calculate and display similarity scores
for profession in professions:
    for gender in genders:
        similarity = language[profession].similarity(language[gender])
        print(f"Similarity between {profession} and {gender}: {similarity:.2f}")

Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos

Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.

Instrucciones:

  1. Utilizar un pipeline de análisis de sentimientos de Hugging Face.
  2. Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
  3. Comparar las puntuaciones de sentimiento.

Solución:

from transformers import pipeline

# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")

# Test sentences
sentences = [
    "He is a doctor.",
    "She is a doctor.",
    "He is a nurse.",
    "She is a nurse."
]

# Perform sentiment analysis
for sentence in sentences:
    result = sentiment_pipeline(sentence)
    print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")

Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales

Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.

Instrucciones:

  1. Crear un conjunto de datos con oraciones que contengan términos específicos de género.
  2. Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
  3. Imprimir el conjunto de datos aumentado.

Solución:

# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]

# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
    if "He" in sentence:
        augmented_dataset.append(sentence.replace("He", "She"))
    elif "She" in sentence:
        augmented_dataset.append(sentence.replace("She", "He"))

# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)

Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP

Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.

Instrucciones:

  1. Cargar un pipeline de análisis de sentimientos de Hugging Face.
  2. Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
  3. Visualizar las explicaciones.

Solución:

import shap
from transformers import pipeline

# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)

# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]

# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)

# Calculate SHAP values
shap_values = explainer(sentences)

# Visualize the SHAP values
shap.plots.text(shap_values)

Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género

Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.

Instrucciones:

  1. Cargar un pequeño conjunto de datos de oraciones.
  2. Filtrar las oraciones que contengan "él" o "ella".
  3. Mostrar el conjunto de datos filtrado.

Solución:

import pandas as pd

# Create a sample dataset
data = pd.DataFrame({
    "text": [
        "He is a doctor.",
        "She is a nurse.",
        "Engineers solve problems.",
        "Teachers educate students."
    ]
})

# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)

Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.