Saltar a contenido

Extracción de oraciones

ests.extractors.SentsExtractor

Descripción

Módulo para extraer oraciones de un texto. Permite usar distintos tokenizadores y fijar la longitud mínima y máxima de las oraciones extraídas.

Nota

El tokenizador por defecto es la función sentenize de ests.utils, basada en reglas. Una oración termina con un punto, un signo de exclamación o de interrogación o unos puntos suspensivos, seguidos opcionalmente de comillas o paréntesis de cierre, cuando la palabra siguiente empieza por mayúscula, cifra, signo de apertura ¿ ¡, comilla o paréntesis de apertura o raya; una línea en blanco también cierra la oración. Las abreviaturas (Sr., Dra., p. ej., EE. UU., a. m.), las iniciales (J. L. Borges) y los marcadores de lista al principio de la oración o de la línea (1., 2.1., IV.) no cierran la oración - decisión tomada a sabiendas. Ante una palabra en minúscula la lista no decide nada, porque una minúscula nunca abre una oración; decide ante una mayúscula o una cifra, y ahí las dos lecturas chocan: a las 5 p. m. 30 personas esperaban es una sola oración, Llegó a las 5 p. m. Luego se fue. son dos, y ninguna regla las distingue. Mantener la abreviatura une las dos, y unir dos oraciones cuesta menos que partir una por la mitad - una palabra en minúscula tras puntos suspensivos o signo de exclamación la continúa, y un salto de línea simple no la divide, así que los textos con líneas cortadas se tratan bien. Las oraciones se devuelven sin espacios en los extremos.

Nota

El sentencizer de spaCy no se usa a propósito: pega ¡ y « a la oración anterior y no corta en .... Aun así se puede pasar un pipeline de spaCy como tokenizador: tokenizer=lambda text: (sent.text for sent in nlp(text).sents).

Parámetros

Parámetro Tipo Por defecto Descripción
tokenizer Pattern/Callable None Tokenizador o expresión regular
min_len int 0 Longitud mínima de la oración extraída
max_len int 0 Longitud máxima de la oración extraída

Métodos

extract

Extrae las oraciones de un texto.

Parámetros:

Parámetro Tipo Por defecto Descripción
text str - Cadena de texto

Ejemplo de extracción de oraciones con el tokenizador por defecto:

Ejemplo

Código:

# Importar la biblioteca
from ests import SentsExtractor

# Preparar los datos
text = "¿No tienes cien euros? ¡Ten cien amigos! El Sr. García lo dijo... Y se fue."

# Extraer las oraciones
se = SentsExtractor()
se.extract(text)

Resultado:

('¿No tienes cien euros?', '¡Ten cien amigos!', 'El Sr. García lo dijo...', 'Y se fue.')

Ejemplo de extracción de oraciones con una expresión regular como tokenizador:

Ejemplo

Código:

# Importar las bibliotecas
import re
from ests import SentsExtractor

# Preparar los datos
text = "No tengas 100 euros, ten 100 amigos"

# Extraer las oraciones
se = SentsExtractor(tokenizer=re.compile(r", "))
se.extract(text)

Resultado:

('No tengas 100 euros', 'ten 100 amigos')