Saltar a contenido

Excepciones y registro

ests.exceptions

Excepciones

Todas las excepciones de la biblioteca heredan de la clase base EstsError y de una de las clases integradas de Python, así que pueden capturarse tanto por su nombre en esTS como por el tipo integrado habitual: el código existente con except ValueError sigue funcionando.

Excepción Clase integrada Cuándo se lanza
EstsError Exception Clase base, nunca se lanza directamente
SourceTypeError TypeError La fuente de datos no es una cadena ni un Doc, se pasa una cadena o un Doc donde se espera una lista de palabras, el tokenizador no es invocable o devuelve un objeto no iterable
SourceError ValueError La fuente no tiene palabras, oraciones ni textos, le falta la anotación que una estadística necesita (las categorías gramaticales, los lemas, el análisis de dependencias), es una cadena más larga que el max_length del pipeline o no queda ninguna unidad tras el filtrado
ParameterError ValueError Un umbral, ventana, tamaño de segmento, número de elementos, base del logaritmo o nivel de confianza fuera de rango; un preajuste, escala, nombre de métrica, medida o variante desconocidos
UnknownStatError ParameterError, KeyError Se pide por nombre una estadística desconocida, como en DiversityStats.windowed
DatasetNotFoundError OSError El modelo de spaCy no está instalado o un conjunto de datos no está descargado; el mensaje muestra el comando que trae lo que falta
DataFileError ValueError Un archivo del conjunto de datos está dañado, tiene un formato inesperado o no se puede decodificar
DownloadError RuntimeError El archivo no se pudo descargar o no superó la comprobación de la suma de verificación

Las clases están disponibles desde ests y desde ests.exceptions.

Nota

DatasetNotFoundError es lo que levanta una estadística de Universal Dependencies cuando el modelo es_core_news_sm no está instalado, que es lo primero con lo que se topa un lector nuevo: MorphStats("El gato duerme") sin el modelo dice cómo descargarlo. DataFileError y DownloadError quedan reservadas para los cargadores de conjuntos de datos de las próximas versiones; todavía nada las lanza.

Ejemplo

from ests import EstsError, ParameterError, WordsExtractor

try:
    WordsExtractor(ngram_range=(2, 1))
except ParameterError as e:
    print(e)
# The lower N-gram bound is greater than the upper

try:
    WordsExtractor(tokenizer=42).extract("El gato duerme.")
except EstsError as e:
    print(type(e).__name__)
# SourceTypeError

Registro

La biblioteca no imprime nada por su cuenta: sus mensajes van al logger ests, que por defecto tiene un NullHandler, así que quedan en silencio. Para verlos, configure el registro en su aplicación:

Ejemplo

import logging

logging.basicConfig(level=logging.INFO, format="%(name)s: %(message)s")

Los métodos que imprimen a propósito, como los métodos print_stats() de las clases de estadísticas, escriben en la salida estándar; el registro no les afecta.