Saltar al contenido
🛠️ToolsShed

Resumidor de Texto

Resume texto largo extrayendo las oraciones más importantes.

110

Acerca de esta herramienta

Un resumidor de texto te ayuda a extraer rápidamente la información más importante de documentos largos, artículos o reportes al identificar y preservar las oraciones clave. Esta herramienta es esencial para cualquiera que maneje grandes cantidades de texto—ya seas un estudiante revisando trabajos de investigación, un profesional gestionando múltiples documentos, o alguien tratando de mantenerse informado sin pasar horas leyendo.

Simplemente pega o escribe tu texto en el campo de entrada, ajusta la longitud del resumen según tus necesidades, y la herramienta identificará inteligentemente las oraciones más significativas y las presentará en un formato condensado. Funciona al instante en tu navegador sin requerir ninguna cuenta o carga de archivos en servidores externos, lo que la convierte en una solución rápida y privada para la reducción de texto cotidiana.

El resumidor funciona mejor con contenido formal y bien estructurado como artículos de noticias, trabajos académicos y documentos empresariales donde la información importante se expresa claramente. Para escritura creativa o contenido altamente técnico con vocabulario especializado, los resultados pueden variar, así que siempre vale la pena comparar el resumen con el original para asegurarse de que no se perdieron detalles críticos.

Preguntas Frecuentes

Implementación de Código

# Extractive text summarization (TF-based)
import re
from collections import Counter

STOP_WORDS = {
    "the", "a", "an", "and", "or", "but", "in", "on", "at", "to", "for",
    "of", "with", "by", "from", "is", "was", "are", "were", "be", "been",
    "has", "have", "had", "do", "does", "did", "will", "would", "could",
    "should", "that", "this", "it", "its", "he", "she", "they", "we", "you",
    "i", "not", "no", "as", "if", "so", "than", "then", "more", "most",
}

def tokenize_sentences(text: str) -> list[str]:
    sentences = re.split(r'(?<=[.!?])\s+', text.strip())
    return [s.strip() for s in sentences if len(s.strip()) > 10]

def word_frequency(sentences: list[str]) -> dict[str, int]:
    words = re.findall(r"[a-z']+", " ".join(sentences).lower())
    return Counter(w for w in words if w not in STOP_WORDS and len(w) > 2)

def score_sentences(sentences: list[str], freq: dict[str, int]) -> list[float]:
    scores = []
    n = len(sentences)
    for i, sentence in enumerate(sentences):
        words = re.findall(r"[a-z']+", sentence.lower())
        score = sum(freq.get(w, 0) for w in words)
        if words:
            score /= len(words)  # normalize by length
        # Position weight
        rel_pos = i / max(n - 1, 1)
        if rel_pos <= 0.2:
            score *= 1.4
        elif rel_pos >= 0.8:
            score *= 1.2
        scores.append(score)
    return scores

def summarize(text: str, num_sentences: int = 3) -> str:
    sentences = tokenize_sentences(text)
    if len(sentences) <= num_sentences:
        return text

    freq = word_frequency(sentences)
    scores = score_sentences(sentences, freq)

    # Get top-N sentence indices, sort by original position
    ranked = sorted(range(len(scores)), key=lambda i: -scores[i])[:num_sentences]
    selected = sorted(ranked)

    return " ".join(sentences[i] for i in selected)

# Example
text = """..."""  # Your long text here
print(summarize(text, num_sentences=3))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.