Procesamiento de Lenguaje Natural (PNL): resumenes con spaCy
Tutorial rápido, en español, para obtener resumenes de texto con la librería spaCy.
Basado en "Text summarization with spaCy" [Text summarization using spacy]
¿Qué es spaCy?
Una librería open-source para el procesamiento de lenguaje natural escrita en Python y Cython.
Resumenes de texto
Dos grandes categorías:
- Resumenes extractivos: Extraer partes del texto (frases, sentencias) para crear un resumen a partir de ellas. El problema aquí es identificar cuales frases o sentencias son las correctas para componer el resumen.
- resumenes abstractivos: usan técnicas avanzadas para generar un resumen. Incluso creando nuevo texto que no esta contenido en el original
En el tutorial se aborda los Resumenes extractivos:
Paso 1: Instalar librerias.
Requerimiento: tener instalado Python en un ambiente Linux (yo prefiero Fedora Linux). Para windows la literatura recomienda Anaconda.
Para verificar python
$python --version
Luego instalar la librería spacy
$pip install -U spacy
Instalar el modelo pre entrenado en lenguaje Ingles
$python3 -m spacy download en_core_web_sm
Esto conforme a los pasos del tutorial de referencia, para español instalar un modelo pre entrenado
$python3 -m spacy download es_core_news_sm
También es recomendable usar Spyder un IDE para programación científica.
$dnf install spyder3
En el guión de comandos adjunto documento los pasos en español [descargar aquí]. Abrir el archivo en Spyder3 y ejecutar.
Este es el resultado de la ejecución de spaCy para un texto en español de un contexto turistico gastronómico.
Texto original [http://emporiolojano.com/entry/cecina-lojana-en-el-centro-de-loja] | Texto resumido |
Dentro de los platos tradicionales y típicos de la deliciosa gastronomía lojana estan la deliciosa Cecina, este es un plato tradicional lojano que consiste en un filete muy muy fino de lomo de cerdo. El proceso de obtener el filete "finitito" se conoce como cecinar la carne y por eso recibe el nombre de Cecina. Es un plato muy tradicional en toda la provincia de Loja, y dependiendo del lugar se prepara de forma diferente. La preparación más frecuente es la de secar la cecina al sol y/o aumarla en leña, luego adobar con ajo y sal. Finalmente se asa al carbón o a la plancha. El sabor se determina por la calidad de la carne y el toque secreto lo agrega el aliño. Cuando estes en Loja, debes disfrutar una buena Cecina Lojana, mucho mejor si lo haces en el Emporio Lojano. El edificio emporio lojano, es una de las primeras edificaciones de la ciudad, su decoración simple y elegante, fiel a la Loja de antaño, es el escenario propicio para degustar buena comida en compañia de colegas, amigos y familia. |
Dentro de los platos tradicionales y típicos de la deliciosa gastronomía lojana estan la deliciosa Cecina, este es un plato tradicional lojano que consiste en un filete muy muy fino de lomo de cerdo. El edificio emporio lojano, es una de las primeras edificaciones de la ciudad, su decoración simple y elegante, fiel a la Loja de antaño, es el escenario propicio para degustar buena comida en compañia de colegas, amigos y familia. Cuando estes en Loja, debes disfrutar una buena Cecina Lojana, mucho mejor si lo haces en el Emporio Lojano. |
Palabras: 183 | Palabras: 92 |
En el tutorial se detalla la siguiente secuencia de pasos para el procesamiento de texto:
- Construir el modelo y cargar el texto a procesar.
- Tokenización (tokens) y Etiquetado (tags). En este punto se obtiene frecuencias de uso de palabras
- Normalización: se calcula un valor entre 0 y 1 para cada palabra tomando como referencia la máxima frecuencia.
- Pesado de sentencias: se recorre sentencia a sentencia y palabra a palabra en cada una, acumulando el valor normalizado de la frecuencia. El resultado un arreglo con las sentencias y el peso dentro del texto.
- spaCy presenta la función nlargest que recibe 3 parámetros: cantidad de sentencias relevantes, la lista de sentencia y sus pesos basados en la frecuencia normalizada y el valor de la clave de la sentencia.
- En el código se obtienen 3 sentencias principales que contienen el resumen del texto.