Extracción de N-gramas de caracteres¶
ests.extractors.CharNgramsExtractor
Descripción¶
Módulo para extraer N-gramas de caracteres de un texto: secuencias de N caracteres tomadas con una ventana deslizante sobre la cadena. Los N-gramas de caracteres son un rasgo clásico de la estilometría y la atribución de autoría (Stamatatos 2009): recogen morfología, puntuación y combinaciones de letras típicas sin lematizar. La lista de N-gramas sirve como unidades del texto en lugar de las palabras en medidas estilométricas como la Delta de Burrows.
Las secuencias de espacios se reducen antes a un solo espacio y los signos de puntuación se conservan: un espacio o un signo dentro de un N-grama también es una señal de estilo. Con within_words=True los N-gramas no cruzan los límites de las palabras: el texto se divide en palabras con el tokenizador, la puntuación se descarta y las palabras más cortas que N no producen N-gramas.
Nota
El tokenizador de palabras por defecto para within_words es el de la clase de idioma español de spaCy (ests.utils.tokenize).
Parámetros¶
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n |
int | 2 |
Longitud del N-grama en caracteres |
lowercase |
bool | False |
Convertir el texto a minúsculas |
within_words |
bool | False |
Tomar los N-gramas solo dentro de las palabras |
tokenizer |
Pattern/Callable | None |
Tokenizador de palabras para within_words o expresión regular |
Métodos¶
extract¶
Extrae los N-gramas de un texto.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
text |
str | - |
Cadena de texto |
Ejemplo
from ests import CharNgramsExtractor
text = "El gato dormía en la ventana, y el perro - en el suelo."
ce = CharNgramsExtractor()
ce.extract(text)[:8]
# ('El', 'l ', ' g', 'ga', 'at', 'to', 'o ', ' d')
ce = CharNgramsExtractor(n=3, lowercase=True)
ce.extract(text)[:6]
# ('el ', 'l g', ' ga', 'gat', 'ato', 'to ')
CharNgramsExtractor(n=4, lowercase=True, within_words=True).extract(text)
# ('gato', 'dorm', 'ormí', 'rmía', 'vent', 'enta', 'ntan', 'tana', 'perr', 'erro', 'suel', 'uelo')
get_most_common¶
Devuelve los N-gramas más frecuentes de la última extracción.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n |
int | 10 |
Número de N-gramas |
Ejemplo
ce = CharNgramsExtractor(n=3, lowercase=True)
ce.extract(text)
ce.get_most_common(2)
# [('el ', 3), (' en', 2)]