Buckets:
Resumen[[summarization]]
{#if fw === 'pt'}
{:else}
{/if}
El resumen de texto busca condensar documentos largos en resúmenes cortos que conserven la información esencial. Es una tarea difícil porque combina comprensión del contexto, selección de información relevante y generación coherente.
En esta sección entrenaremos un modelo bilingüe inglés-español usando reseñas de Amazon y sus títulos como resúmenes objetivo.
Preparar un corpus multilingüe[[preparing-a-multilingual-corpus]]
from datasets import load_dataset
spanish_dataset = load_dataset("amazon_reviews_multi", "es")
english_dataset = load_dataset("amazon_reviews_multi", "en")
Filtraremos las categorías relacionadas con libros para mantener el problema acotado y luego concatenaremos los datos en ambos idiomas:
from datasets import concatenate_datasets, DatasetDict
def filter_books(example):
return (
example["product_category"] == "book"
or example["product_category"] == "digital_ebook_purchase"
)
spanish_books = spanish_dataset.filter(filter_books)
english_books = english_dataset.filter(filter_books)
books_dataset = DatasetDict()
for split in english_books.keys():
books_dataset[split] = concatenate_datasets(
[english_books[split], spanish_books[split]]
).shuffle(seed=42)
Como muchos títulos son demasiado cortos, también conviene eliminar los ejemplos con resúmenes de solo una o dos palabras.
Elegir un modelo[[models-for-text-summarization]]
Los modelos más usados para resumen suelen ser de tipo encoder-decoder. Aquí usaremos mT5, una versión multilingüe de T5:
from transformers import AutoTokenizer
model_checkpoint = "google/mt5-small"
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
Preprocesamiento[[preprocessing-the-data]]
Tenemos que truncar tanto la reseña como el título:
max_input_length = 512
max_target_length = 30
def preprocess_function(examples):
model_inputs = tokenizer(
examples["review_body"], max_length=max_input_length, truncation=True
)
labels = tokenizer(
examples["review_title"], max_length=max_target_length, truncation=True
)
model_inputs["labels"] = labels["input_ids"]
return model_inputs
tokenized_datasets = books_dataset.map(preprocess_function, batched=True)
Métricas[[metrics-for-text-summarization]]
En resumen se usa con frecuencia ROUGE. Esta familia de métricas compara el resumen generado con uno o varios resúmenes de referencia.
!pip install rouge_score
import evaluate
rouge_score = evaluate.load("rouge")
ROUGE no es perfecto, porque la calidad de un resumen no depende solo de compartir n-gramas, pero es una métrica estándar muy útil para comparar sistemas.
Con este flujo tendrás un modelo multilingüe capaz de resumir reseñas tanto en inglés como en español.
Xet Storage Details
- Size:
- 2.92 kB
- Xet hash:
- 3d0c74de0b4a84c5cf6e02a49d7e574efd586f5396cda2c79347cf554804fd44
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.