Proyecto 1: Traducción automática con MarianMT
Paso 3: Traducción de Texto
El proceso de traducción implica varios pasos sofisticados. Primero, el tokenizador convierte el texto de entrada en tokens numéricos que el modelo puede comprender. Estos tokens son luego procesados por el modelo MarianMT, que utiliza su red neuronal entrenada para generar la traducción. El modelo emplea mecanismos de atención para comprender el contexto y mantener la coherencia en la traducción. Finalmente, los tokens de salida se decodifican de nuevo en texto legible en el idioma objetivo. Este proceso ocurre de manera automática y eficiente, aprovechando el poder de las arquitecturas modernas de aprendizaje profundo.
Preparación de Conjuntos de Datos Multilingües
Antes de trabajar con los ejemplos de conjuntos de datos, asegúrese de tener instalada la biblioteca pandas:
pip install pandas
Pandas es una poderosa biblioteca de manipulación de datos para Python que facilita la carga, el procesamiento y el análisis de datos estructurados. Es particularmente útil para manejar grandes conjuntos de datos y proporciona funciones convenientes para leer varios formatos de archivo como CSV, Excel y JSON.
Para tareas de traducción a gran escala, tener acceso a conjuntos de datos multilingües completos es crucial para entrenar y evaluar modelos de traducción automática. Estos conjuntos de datos proporcionan textos paralelos en múltiples idiomas, permitiendo el aprendizaje y la evaluación precisa de traducciones. Aquí hay algunos ejemplos ampliamente utilizados:
- Conjunto de Datos de TED Talks:
- Enlace: TED Talks Translation Dataset (https://github.com/neulab/word-embeddings-for-nmt)
- Contiene transcripciones de charlas TED en múltiples idiomas, ofreciendo traducciones de alta calidad de discursos contemporáneos que cubren diversos temas, desde tecnología hasta cuestiones sociales.
- Particularmente valioso para entrenar modelos de traducción de estilo conversacional y de presentaciones.
- Incluye más de 50,000 oraciones paralelas en múltiples pares de idiomas.
- Corpus Europarl:
- Enlace: Europarl (https://www.statmt.org/europarl/)
- Un gran corpus de texto paralelo de las actas del Parlamento Europeo, que contiene más de 40 millones de palabras en cada idioma.
- Cubre todos los idiomas oficiales de la UE, haciéndolo ideal para tareas de traducción de lenguas europeas.
- Conocido por su lenguaje formal y terminología política, perfecto para entrenar modelos en traducción de documentos oficiales.
Aquí hay un ejemplo de cómo cargar y preprocesar un conjunto de datos:
import pandas as pd
# Load a sample multilingual dataset
df = pd.read_csv("path_to_dataset.csv")
# Filter for specific language pairs
en_text = df[df['lang'] == 'en']['text']
fr_text = df[df['lang'] == 'fr']['text']
# Prepare data for MarianMT
text_pairs = list(zip(en_text, fr_text))
print(f"Loaded {len(text_pairs)} sentence pairs for translation.")
Analicemos este código:
1. Carga de Datos
- Utiliza pandas (
pd
) para leer un archivo CSV que contiene el conjunto de datos multilingüe - Se espera que el archivo CSV tenga al menos dos columnas: el texto y el identificador de idioma ('lang')
2. Filtrado de Idiomas
- Filtra el conjunto de datos para extraer los textos en inglés:
df[df['lang'] == 'en']['text']
- De manera similar extrae los textos en francés:
df[df['lang'] == 'fr']['text']
3. Preparación de Datos
- Crea pares de traducciones inglés-francés usando
zip()
- Almacena estos pares en una lista para fácil acceso durante la traducción
4. Informe de Estado
- Imprime el número total de pares de oraciones cargadas, ayudando a rastrear el tamaño del conjunto de datos
Evaluación de la Calidad de Traducción
Para medir la calidad de la traducción automática, utilizamos varias métricas de evaluación sofisticadas:
BLEU (Evaluación Bilingüe Sustituta) compara la traducción generada por la máquina con una o más traducciones de referencia calculando la superposición de n-gramas. Produce una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones. BLEU es particularmente bueno para medir la precisión de la traducción a nivel de frase.
ROUGE (Evaluación Sustituta Orientada al Recuerdo para Resumen) se centra en comparar unidades superpuestas como n-gramas, secuencias de palabras y pares de palabras entre la traducción automática y los textos de referencia. Es especialmente útil para evaluar la fluidez y legibilidad de las traducciones.
BERTScore aprovecha las incrustaciones contextuales de BERT para calcular puntuaciones de similitud mediante la coincidencia de palabras en traducciones candidatas y de referencia. Esta métrica captura mejor las similitudes semánticas incluso cuando las palabras exactas no coinciden, haciéndola particularmente efectiva para evaluar la preservación del significado en las traducciones.
Estas métricas trabajan juntas para proporcionar una evaluación integral de la calidad de la traducción, ayudando a evaluar tanto la precisión lingüística como la fidelidad semántica al texto original.
Aquí hay un ejemplo de cómo usar la biblioteca nltk
para calcular la puntuación BLEU:
pip install nltk
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
def evaluate_bleu(reference, hypothesis):
"""
Calculate BLEU score for a single sentence.
Args:
reference (list): List of reference translations (tokenized).
hypothesis (list): Hypothesis translation (tokenized).
Returns:
float: BLEU score
"""
smoothing_function = SmoothingFunction().method4
bleu_score = sentence_bleu([reference], hypothesis, smoothing_function=smoothing_function)
return bleu_score
# Example usage
reference = "Bonjour, comment ça va ?".split() # Reference translation (tokenized)
hypothesis = "Salut, comment ça va ?".split() # Model's output (tokenized)
bleu = evaluate_bleu(reference, hypothesis)
print(f"BLEU Score: {bleu:.2f}")
Aquí está el desglose del código:
1. Definición de la Función:
- La función
evaluate_bleu
toma dos parámetros:- reference: La traducción correcta (como una lista de tokens)
- hypothesis: La traducción generada por la máquina (como una lista de tokens)
2. Función de Suavizado:
- Utiliza SmoothingFunction.method4 de NLTK para manejar casos donde no hay n-gramas coincidentes entre la referencia y la hipótesis
Esto evita que la puntuación BLEU sea cero debido a la falta de coincidencias
3. Cálculo de la Puntuación BLEU:
- La función calcula una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones
- Utiliza sentence_bleu() de NLTK para comparar la superposición entre las traducciones de referencia e hipótesis
4. Ejemplo de Uso:
- Muestra un ejemplo práctico usando frases en francés:
- Traducción de referencia: "Bonjour, comment ça va ?"
- Traducción de hipótesis: "Salut, comment ça va ?"
El código divide estas cadenas en tokens y calcula su puntuación BLEU
Esta métrica de evaluación es particularmente efectiva para medir la precisión de la traducción a nivel de frase, convirtiéndola en una herramienta valiosa para evaluar la calidad de la traducción automática.
Paso 3: Traducción de Texto
El proceso de traducción implica varios pasos sofisticados. Primero, el tokenizador convierte el texto de entrada en tokens numéricos que el modelo puede comprender. Estos tokens son luego procesados por el modelo MarianMT, que utiliza su red neuronal entrenada para generar la traducción. El modelo emplea mecanismos de atención para comprender el contexto y mantener la coherencia en la traducción. Finalmente, los tokens de salida se decodifican de nuevo en texto legible en el idioma objetivo. Este proceso ocurre de manera automática y eficiente, aprovechando el poder de las arquitecturas modernas de aprendizaje profundo.
Preparación de Conjuntos de Datos Multilingües
Antes de trabajar con los ejemplos de conjuntos de datos, asegúrese de tener instalada la biblioteca pandas:
pip install pandas
Pandas es una poderosa biblioteca de manipulación de datos para Python que facilita la carga, el procesamiento y el análisis de datos estructurados. Es particularmente útil para manejar grandes conjuntos de datos y proporciona funciones convenientes para leer varios formatos de archivo como CSV, Excel y JSON.
Para tareas de traducción a gran escala, tener acceso a conjuntos de datos multilingües completos es crucial para entrenar y evaluar modelos de traducción automática. Estos conjuntos de datos proporcionan textos paralelos en múltiples idiomas, permitiendo el aprendizaje y la evaluación precisa de traducciones. Aquí hay algunos ejemplos ampliamente utilizados:
- Conjunto de Datos de TED Talks:
- Enlace: TED Talks Translation Dataset (https://github.com/neulab/word-embeddings-for-nmt)
- Contiene transcripciones de charlas TED en múltiples idiomas, ofreciendo traducciones de alta calidad de discursos contemporáneos que cubren diversos temas, desde tecnología hasta cuestiones sociales.
- Particularmente valioso para entrenar modelos de traducción de estilo conversacional y de presentaciones.
- Incluye más de 50,000 oraciones paralelas en múltiples pares de idiomas.
- Corpus Europarl:
- Enlace: Europarl (https://www.statmt.org/europarl/)
- Un gran corpus de texto paralelo de las actas del Parlamento Europeo, que contiene más de 40 millones de palabras en cada idioma.
- Cubre todos los idiomas oficiales de la UE, haciéndolo ideal para tareas de traducción de lenguas europeas.
- Conocido por su lenguaje formal y terminología política, perfecto para entrenar modelos en traducción de documentos oficiales.
Aquí hay un ejemplo de cómo cargar y preprocesar un conjunto de datos:
import pandas as pd
# Load a sample multilingual dataset
df = pd.read_csv("path_to_dataset.csv")
# Filter for specific language pairs
en_text = df[df['lang'] == 'en']['text']
fr_text = df[df['lang'] == 'fr']['text']
# Prepare data for MarianMT
text_pairs = list(zip(en_text, fr_text))
print(f"Loaded {len(text_pairs)} sentence pairs for translation.")
Analicemos este código:
1. Carga de Datos
- Utiliza pandas (
pd
) para leer un archivo CSV que contiene el conjunto de datos multilingüe - Se espera que el archivo CSV tenga al menos dos columnas: el texto y el identificador de idioma ('lang')
2. Filtrado de Idiomas
- Filtra el conjunto de datos para extraer los textos en inglés:
df[df['lang'] == 'en']['text']
- De manera similar extrae los textos en francés:
df[df['lang'] == 'fr']['text']
3. Preparación de Datos
- Crea pares de traducciones inglés-francés usando
zip()
- Almacena estos pares en una lista para fácil acceso durante la traducción
4. Informe de Estado
- Imprime el número total de pares de oraciones cargadas, ayudando a rastrear el tamaño del conjunto de datos
Evaluación de la Calidad de Traducción
Para medir la calidad de la traducción automática, utilizamos varias métricas de evaluación sofisticadas:
BLEU (Evaluación Bilingüe Sustituta) compara la traducción generada por la máquina con una o más traducciones de referencia calculando la superposición de n-gramas. Produce una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones. BLEU es particularmente bueno para medir la precisión de la traducción a nivel de frase.
ROUGE (Evaluación Sustituta Orientada al Recuerdo para Resumen) se centra en comparar unidades superpuestas como n-gramas, secuencias de palabras y pares de palabras entre la traducción automática y los textos de referencia. Es especialmente útil para evaluar la fluidez y legibilidad de las traducciones.
BERTScore aprovecha las incrustaciones contextuales de BERT para calcular puntuaciones de similitud mediante la coincidencia de palabras en traducciones candidatas y de referencia. Esta métrica captura mejor las similitudes semánticas incluso cuando las palabras exactas no coinciden, haciéndola particularmente efectiva para evaluar la preservación del significado en las traducciones.
Estas métricas trabajan juntas para proporcionar una evaluación integral de la calidad de la traducción, ayudando a evaluar tanto la precisión lingüística como la fidelidad semántica al texto original.
Aquí hay un ejemplo de cómo usar la biblioteca nltk
para calcular la puntuación BLEU:
pip install nltk
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
def evaluate_bleu(reference, hypothesis):
"""
Calculate BLEU score for a single sentence.
Args:
reference (list): List of reference translations (tokenized).
hypothesis (list): Hypothesis translation (tokenized).
Returns:
float: BLEU score
"""
smoothing_function = SmoothingFunction().method4
bleu_score = sentence_bleu([reference], hypothesis, smoothing_function=smoothing_function)
return bleu_score
# Example usage
reference = "Bonjour, comment ça va ?".split() # Reference translation (tokenized)
hypothesis = "Salut, comment ça va ?".split() # Model's output (tokenized)
bleu = evaluate_bleu(reference, hypothesis)
print(f"BLEU Score: {bleu:.2f}")
Aquí está el desglose del código:
1. Definición de la Función:
- La función
evaluate_bleu
toma dos parámetros:- reference: La traducción correcta (como una lista de tokens)
- hypothesis: La traducción generada por la máquina (como una lista de tokens)
2. Función de Suavizado:
- Utiliza SmoothingFunction.method4 de NLTK para manejar casos donde no hay n-gramas coincidentes entre la referencia y la hipótesis
Esto evita que la puntuación BLEU sea cero debido a la falta de coincidencias
3. Cálculo de la Puntuación BLEU:
- La función calcula una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones
- Utiliza sentence_bleu() de NLTK para comparar la superposición entre las traducciones de referencia e hipótesis
4. Ejemplo de Uso:
- Muestra un ejemplo práctico usando frases en francés:
- Traducción de referencia: "Bonjour, comment ça va ?"
- Traducción de hipótesis: "Salut, comment ça va ?"
El código divide estas cadenas en tokens y calcula su puntuación BLEU
Esta métrica de evaluación es particularmente efectiva para medir la precisión de la traducción a nivel de frase, convirtiéndola en una herramienta valiosa para evaluar la calidad de la traducción automática.
Paso 3: Traducción de Texto
El proceso de traducción implica varios pasos sofisticados. Primero, el tokenizador convierte el texto de entrada en tokens numéricos que el modelo puede comprender. Estos tokens son luego procesados por el modelo MarianMT, que utiliza su red neuronal entrenada para generar la traducción. El modelo emplea mecanismos de atención para comprender el contexto y mantener la coherencia en la traducción. Finalmente, los tokens de salida se decodifican de nuevo en texto legible en el idioma objetivo. Este proceso ocurre de manera automática y eficiente, aprovechando el poder de las arquitecturas modernas de aprendizaje profundo.
Preparación de Conjuntos de Datos Multilingües
Antes de trabajar con los ejemplos de conjuntos de datos, asegúrese de tener instalada la biblioteca pandas:
pip install pandas
Pandas es una poderosa biblioteca de manipulación de datos para Python que facilita la carga, el procesamiento y el análisis de datos estructurados. Es particularmente útil para manejar grandes conjuntos de datos y proporciona funciones convenientes para leer varios formatos de archivo como CSV, Excel y JSON.
Para tareas de traducción a gran escala, tener acceso a conjuntos de datos multilingües completos es crucial para entrenar y evaluar modelos de traducción automática. Estos conjuntos de datos proporcionan textos paralelos en múltiples idiomas, permitiendo el aprendizaje y la evaluación precisa de traducciones. Aquí hay algunos ejemplos ampliamente utilizados:
- Conjunto de Datos de TED Talks:
- Enlace: TED Talks Translation Dataset (https://github.com/neulab/word-embeddings-for-nmt)
- Contiene transcripciones de charlas TED en múltiples idiomas, ofreciendo traducciones de alta calidad de discursos contemporáneos que cubren diversos temas, desde tecnología hasta cuestiones sociales.
- Particularmente valioso para entrenar modelos de traducción de estilo conversacional y de presentaciones.
- Incluye más de 50,000 oraciones paralelas en múltiples pares de idiomas.
- Corpus Europarl:
- Enlace: Europarl (https://www.statmt.org/europarl/)
- Un gran corpus de texto paralelo de las actas del Parlamento Europeo, que contiene más de 40 millones de palabras en cada idioma.
- Cubre todos los idiomas oficiales de la UE, haciéndolo ideal para tareas de traducción de lenguas europeas.
- Conocido por su lenguaje formal y terminología política, perfecto para entrenar modelos en traducción de documentos oficiales.
Aquí hay un ejemplo de cómo cargar y preprocesar un conjunto de datos:
import pandas as pd
# Load a sample multilingual dataset
df = pd.read_csv("path_to_dataset.csv")
# Filter for specific language pairs
en_text = df[df['lang'] == 'en']['text']
fr_text = df[df['lang'] == 'fr']['text']
# Prepare data for MarianMT
text_pairs = list(zip(en_text, fr_text))
print(f"Loaded {len(text_pairs)} sentence pairs for translation.")
Analicemos este código:
1. Carga de Datos
- Utiliza pandas (
pd
) para leer un archivo CSV que contiene el conjunto de datos multilingüe - Se espera que el archivo CSV tenga al menos dos columnas: el texto y el identificador de idioma ('lang')
2. Filtrado de Idiomas
- Filtra el conjunto de datos para extraer los textos en inglés:
df[df['lang'] == 'en']['text']
- De manera similar extrae los textos en francés:
df[df['lang'] == 'fr']['text']
3. Preparación de Datos
- Crea pares de traducciones inglés-francés usando
zip()
- Almacena estos pares en una lista para fácil acceso durante la traducción
4. Informe de Estado
- Imprime el número total de pares de oraciones cargadas, ayudando a rastrear el tamaño del conjunto de datos
Evaluación de la Calidad de Traducción
Para medir la calidad de la traducción automática, utilizamos varias métricas de evaluación sofisticadas:
BLEU (Evaluación Bilingüe Sustituta) compara la traducción generada por la máquina con una o más traducciones de referencia calculando la superposición de n-gramas. Produce una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones. BLEU es particularmente bueno para medir la precisión de la traducción a nivel de frase.
ROUGE (Evaluación Sustituta Orientada al Recuerdo para Resumen) se centra en comparar unidades superpuestas como n-gramas, secuencias de palabras y pares de palabras entre la traducción automática y los textos de referencia. Es especialmente útil para evaluar la fluidez y legibilidad de las traducciones.
BERTScore aprovecha las incrustaciones contextuales de BERT para calcular puntuaciones de similitud mediante la coincidencia de palabras en traducciones candidatas y de referencia. Esta métrica captura mejor las similitudes semánticas incluso cuando las palabras exactas no coinciden, haciéndola particularmente efectiva para evaluar la preservación del significado en las traducciones.
Estas métricas trabajan juntas para proporcionar una evaluación integral de la calidad de la traducción, ayudando a evaluar tanto la precisión lingüística como la fidelidad semántica al texto original.
Aquí hay un ejemplo de cómo usar la biblioteca nltk
para calcular la puntuación BLEU:
pip install nltk
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
def evaluate_bleu(reference, hypothesis):
"""
Calculate BLEU score for a single sentence.
Args:
reference (list): List of reference translations (tokenized).
hypothesis (list): Hypothesis translation (tokenized).
Returns:
float: BLEU score
"""
smoothing_function = SmoothingFunction().method4
bleu_score = sentence_bleu([reference], hypothesis, smoothing_function=smoothing_function)
return bleu_score
# Example usage
reference = "Bonjour, comment ça va ?".split() # Reference translation (tokenized)
hypothesis = "Salut, comment ça va ?".split() # Model's output (tokenized)
bleu = evaluate_bleu(reference, hypothesis)
print(f"BLEU Score: {bleu:.2f}")
Aquí está el desglose del código:
1. Definición de la Función:
- La función
evaluate_bleu
toma dos parámetros:- reference: La traducción correcta (como una lista de tokens)
- hypothesis: La traducción generada por la máquina (como una lista de tokens)
2. Función de Suavizado:
- Utiliza SmoothingFunction.method4 de NLTK para manejar casos donde no hay n-gramas coincidentes entre la referencia y la hipótesis
Esto evita que la puntuación BLEU sea cero debido a la falta de coincidencias
3. Cálculo de la Puntuación BLEU:
- La función calcula una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones
- Utiliza sentence_bleu() de NLTK para comparar la superposición entre las traducciones de referencia e hipótesis
4. Ejemplo de Uso:
- Muestra un ejemplo práctico usando frases en francés:
- Traducción de referencia: "Bonjour, comment ça va ?"
- Traducción de hipótesis: "Salut, comment ça va ?"
El código divide estas cadenas en tokens y calcula su puntuación BLEU
Esta métrica de evaluación es particularmente efectiva para medir la precisión de la traducción a nivel de frase, convirtiéndola en una herramienta valiosa para evaluar la calidad de la traducción automática.
Paso 3: Traducción de Texto
El proceso de traducción implica varios pasos sofisticados. Primero, el tokenizador convierte el texto de entrada en tokens numéricos que el modelo puede comprender. Estos tokens son luego procesados por el modelo MarianMT, que utiliza su red neuronal entrenada para generar la traducción. El modelo emplea mecanismos de atención para comprender el contexto y mantener la coherencia en la traducción. Finalmente, los tokens de salida se decodifican de nuevo en texto legible en el idioma objetivo. Este proceso ocurre de manera automática y eficiente, aprovechando el poder de las arquitecturas modernas de aprendizaje profundo.
Preparación de Conjuntos de Datos Multilingües
Antes de trabajar con los ejemplos de conjuntos de datos, asegúrese de tener instalada la biblioteca pandas:
pip install pandas
Pandas es una poderosa biblioteca de manipulación de datos para Python que facilita la carga, el procesamiento y el análisis de datos estructurados. Es particularmente útil para manejar grandes conjuntos de datos y proporciona funciones convenientes para leer varios formatos de archivo como CSV, Excel y JSON.
Para tareas de traducción a gran escala, tener acceso a conjuntos de datos multilingües completos es crucial para entrenar y evaluar modelos de traducción automática. Estos conjuntos de datos proporcionan textos paralelos en múltiples idiomas, permitiendo el aprendizaje y la evaluación precisa de traducciones. Aquí hay algunos ejemplos ampliamente utilizados:
- Conjunto de Datos de TED Talks:
- Enlace: TED Talks Translation Dataset (https://github.com/neulab/word-embeddings-for-nmt)
- Contiene transcripciones de charlas TED en múltiples idiomas, ofreciendo traducciones de alta calidad de discursos contemporáneos que cubren diversos temas, desde tecnología hasta cuestiones sociales.
- Particularmente valioso para entrenar modelos de traducción de estilo conversacional y de presentaciones.
- Incluye más de 50,000 oraciones paralelas en múltiples pares de idiomas.
- Corpus Europarl:
- Enlace: Europarl (https://www.statmt.org/europarl/)
- Un gran corpus de texto paralelo de las actas del Parlamento Europeo, que contiene más de 40 millones de palabras en cada idioma.
- Cubre todos los idiomas oficiales de la UE, haciéndolo ideal para tareas de traducción de lenguas europeas.
- Conocido por su lenguaje formal y terminología política, perfecto para entrenar modelos en traducción de documentos oficiales.
Aquí hay un ejemplo de cómo cargar y preprocesar un conjunto de datos:
import pandas as pd
# Load a sample multilingual dataset
df = pd.read_csv("path_to_dataset.csv")
# Filter for specific language pairs
en_text = df[df['lang'] == 'en']['text']
fr_text = df[df['lang'] == 'fr']['text']
# Prepare data for MarianMT
text_pairs = list(zip(en_text, fr_text))
print(f"Loaded {len(text_pairs)} sentence pairs for translation.")
Analicemos este código:
1. Carga de Datos
- Utiliza pandas (
pd
) para leer un archivo CSV que contiene el conjunto de datos multilingüe - Se espera que el archivo CSV tenga al menos dos columnas: el texto y el identificador de idioma ('lang')
2. Filtrado de Idiomas
- Filtra el conjunto de datos para extraer los textos en inglés:
df[df['lang'] == 'en']['text']
- De manera similar extrae los textos en francés:
df[df['lang'] == 'fr']['text']
3. Preparación de Datos
- Crea pares de traducciones inglés-francés usando
zip()
- Almacena estos pares en una lista para fácil acceso durante la traducción
4. Informe de Estado
- Imprime el número total de pares de oraciones cargadas, ayudando a rastrear el tamaño del conjunto de datos
Evaluación de la Calidad de Traducción
Para medir la calidad de la traducción automática, utilizamos varias métricas de evaluación sofisticadas:
BLEU (Evaluación Bilingüe Sustituta) compara la traducción generada por la máquina con una o más traducciones de referencia calculando la superposición de n-gramas. Produce una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones. BLEU es particularmente bueno para medir la precisión de la traducción a nivel de frase.
ROUGE (Evaluación Sustituta Orientada al Recuerdo para Resumen) se centra en comparar unidades superpuestas como n-gramas, secuencias de palabras y pares de palabras entre la traducción automática y los textos de referencia. Es especialmente útil para evaluar la fluidez y legibilidad de las traducciones.
BERTScore aprovecha las incrustaciones contextuales de BERT para calcular puntuaciones de similitud mediante la coincidencia de palabras en traducciones candidatas y de referencia. Esta métrica captura mejor las similitudes semánticas incluso cuando las palabras exactas no coinciden, haciéndola particularmente efectiva para evaluar la preservación del significado en las traducciones.
Estas métricas trabajan juntas para proporcionar una evaluación integral de la calidad de la traducción, ayudando a evaluar tanto la precisión lingüística como la fidelidad semántica al texto original.
Aquí hay un ejemplo de cómo usar la biblioteca nltk
para calcular la puntuación BLEU:
pip install nltk
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
def evaluate_bleu(reference, hypothesis):
"""
Calculate BLEU score for a single sentence.
Args:
reference (list): List of reference translations (tokenized).
hypothesis (list): Hypothesis translation (tokenized).
Returns:
float: BLEU score
"""
smoothing_function = SmoothingFunction().method4
bleu_score = sentence_bleu([reference], hypothesis, smoothing_function=smoothing_function)
return bleu_score
# Example usage
reference = "Bonjour, comment ça va ?".split() # Reference translation (tokenized)
hypothesis = "Salut, comment ça va ?".split() # Model's output (tokenized)
bleu = evaluate_bleu(reference, hypothesis)
print(f"BLEU Score: {bleu:.2f}")
Aquí está el desglose del código:
1. Definición de la Función:
- La función
evaluate_bleu
toma dos parámetros:- reference: La traducción correcta (como una lista de tokens)
- hypothesis: La traducción generada por la máquina (como una lista de tokens)
2. Función de Suavizado:
- Utiliza SmoothingFunction.method4 de NLTK para manejar casos donde no hay n-gramas coincidentes entre la referencia y la hipótesis
Esto evita que la puntuación BLEU sea cero debido a la falta de coincidencias
3. Cálculo de la Puntuación BLEU:
- La función calcula una puntuación entre 0 y 1, donde puntuaciones más altas indican mejores traducciones
- Utiliza sentence_bleu() de NLTK para comparar la superposición entre las traducciones de referencia e hipótesis
4. Ejemplo de Uso:
- Muestra un ejemplo práctico usando frases en francés:
- Traducción de referencia: "Bonjour, comment ça va ?"
- Traducción de hipótesis: "Salut, comment ça va ?"
El código divide estas cadenas en tokens y calcula su puntuación BLEU
Esta métrica de evaluación es particularmente efectiva para medir la precisión de la traducción a nivel de frase, convirtiéndola en una herramienta valiosa para evaluar la calidad de la traducción automática.