Spanish Texts Statistics (esTS)¶
¿Cómo esTáS, texto?
esTS calcula estadísticas de textos en español: estadísticas básicas, legibilidad, diversidad léxica, complejidad léxica, estilo, fonoestadística, morfología, sintaxis y cohesión, con fórmulas publicadas y con los coeficientes y las escalas de sus autores, y con las categorías, los rasgos y las dependencias de Universal Dependencies.
La biblioteca trabaja tanto con cadenas como con objetos Doc de spaCy; la mayoría de las estadísticas no necesita un modelo entrenado (Instalación).
Se puede probar sin instalar en la demo en Hugging Face Spaces: pegue un texto y obtenga su legibilidad, las métricas, los gráficos y el resaltado de sus fragmentos.
Funcionalidad¶
-
Extracción
Tokenizadores de oraciones, palabras y N-gramas de caracteres que conocen los signos de apertura, la raya de diálogo y las abreviaturas del español, y los párrafos de un texto
-
Sílabas y acento
División de una palabra en sílabas y su acento por las reglas ortográficas, sin diccionario
-
Estadísticas básicas
Número de oraciones, palabras, letras, sílabas y signos de puntuación por tipo, sus distribuciones y las entropías de las longitudes de las palabras
-
Legibilidad
Fernández Huerta, Szigriszt-Pazos con la escala INFLESZ, Gutiérrez de Polini, Crawford, Legibilidad µ, SOL, LIX y RIX con grado de consenso, etapas escolares de España y tiempo de lectura, y fórmulas de otros idiomas con sus propios coeficientes
-
Diversidad léxica
Type-Token Ratio y sus variantes, MATTR, MSTTR, Measure of Textual Lexical Diversity y su media móvil, HD-D, los índices de Simpson y de Yule, la entropía, la Z de Orlov, las ráfagas de los lexemas, las leyes de Zipf y de Heaps, sobre todo el texto o por ventanas con intervalos de confianza
-
Morfología
Categorías gramaticales y quince rasgos morfológicos de Universal Dependencies con los marcadores del español: los modos, las formas no personales, las cópulas
seryestar, los adverbios en-mente -
Sintaxis
Estadísticas del árbol de dependencias (distancias, profundidad, cláusulas, coordinación, las unidades de producción de L2SCA, las cadenas preposicionales, el orden del sujeto y del objeto, la semejanza de las oraciones contiguas) con las construcciones del estilo administrativo: la pasiva con
sery conse, las cláusulas de participio y de gerundio, las cadenas dede, los predicados escindidos -
Cohesión
Repetición de sustantivos, argumentos y palabras con contenido entre oraciones a la manera de Coh-Metrix y en las oraciones siguientes y los párrafos a la manera de TAACO, información dada, cohesión temporal y la densidad de 273 marcadores del discurso del español por clase y por lugar, entre oraciones y dentro de ellas
-
Complejidad léxica
Cuán raras son las palabras de un texto, a la manera de TAALES: frecuencia, rango, dispersión y sorpresa según un diccionario de frecuencias de Google Books Ngram, las bandas de frecuencia del top-1000 al 10000, la densidad léxica
-
Estilo
Indicadores SEO de Advego y Text.ru (náusea, contenido de agua, índice de spam, naturalidad según Zipf, densidad de palabras clave) y los marcadores del estilo burocrático según las guías de lenguaje claro en español: sustantivos deverbales, locuciones prepositivas, expresiones parentéticas y clichés
-
Fonética
Proporciones de las clases de sonidos de una transcripción por reglas, grupos consonánticos, hiatos, sílabas abiertas, dureza e índices de aliteración y de asonancia
-
Verso
Las sílabas métricas y el metro de un poema, el perfil acentual y los tipos del endecasílabo, la rima consonante y asonante con su esquema, las estrofas y la forma de un poema
-
Medidas de corpus
Palabras clave frente a un corpus de referencia o al diccionario de frecuencias, colocaciones, la dispersión de una palabra por las partes de un texto, una concordancia KWIC, la autoría por estilometría (la Delta de Burrows y la Delta móvil, Zeta y sus marcadores en segmentos, la curva de Mendenhall, las palabras funcionales) y la comparación de corpus por 163 rasgos de un texto
-
Conjuntos de datos
Un corpus de literatura en español de dominio público (150 obras de 33 autores en cuatro géneros), una colección de sonetos de los siglos XV-XX con el patrón métrico y la rima de cada verso y un diccionario de frecuencias de 83 785 lemas según Google Books Ngram
-
Visualización
Ley de Zipf, huella literaria, árbol de palabras, gráficos de corpus y estilométricos, crecimiento del vocabulario y espectro de frecuencias, longitudes de las oraciones y el resaltado del texto por los fragmentos que cuentan las estadísticas
-
Componentes
Componentes de un pipeline de spaCy, de modo que el texto se anote y se mida en una sola pasada y las estadísticas viajen con el
Doc -
Excepciones
Errores de una sola jerarquía cuyas clases son también excepciones integradas de Python
Instalación¶
Se requiere Python 3.11 o superior.
pip install pyests
La distribución en PyPI se llama pyests y el paquete que instala es ests. Las dependencias, el modelo de spaCy y los conjuntos de datos están en la página de Instalación.
Primeros pasos¶
from ests import BasicStats, DiversityStats, ReadabilityStats
text = "Hay tres clases de mentiras: mentiras, malditas mentiras y estadísticas"
BasicStats(text).get_stats()
ReadabilityStats(text).flesch_reading_easy
DiversityStats(text).ttr
{'c_letters': {1: 1, 2: 1, 3: 1, 4: 1, 6: 1, 8: 4, 12: 1},
'c_syllables': {1: 4, 2: 1, 3: 4, 5: 1},
'n_sents': 1,
'n_words': 10,
'n_unique_words': 8,
'n_long_words': 5,
'n_complex_words': 5,
'n_simple_words': 5,
'n_monosyllable_words': 4,
'n_polysyllable_words': 6,
'n_chars': 71,
'n_letters': 60,
'n_spaces': 9,
'n_syllables': 23,
'n_punctuations': 2,
'letters_entropy': 2.5219280948873624,
'syllables_entropy': 1.7219280948873623,
'c_punctuations': {'comma': 1,
'period': 0,
'question': 0,
'exclamation': 0,
'ellipsis': 0,
'colon': 1,
'semicolon': 0,
'dash': 0,
'hyphen': 0,
'angle_quotes': 0,
'straight_quotes': 0,
'parentheses': 0,
'other': 0}}
53.545000000000016
0.8
Cualquier estadística puede mostrarse en forma legible:
BasicStats(text).print_stats()
Statistic | Value
-----------------------------------------------------------
Sentences | 1
Words | 10
Unique words | 8
Long words | 5
Complex words | 5
Simple words | 5
Monosyllabic words | 4
Polysyllabic words | 6
Characters | 71
Letters | 60
Spaces | 9
Syllables | 23
Punctuation marks | 2
Entropy of the word lengths in letters (bits) | 2.52
Entropy of the word lengths in syllables (bits) | 1.72
Un cuento analizado con todas las herramientas de la biblioteca está en el cuaderno examples/01_text_walkthrough.ipynb, que se abre en Colab; los cuadernos sobre los prosistas, los sonetos y las medidas de corpus están en la página de ejemplos.
Estructura del proyecto
- demo - la demo en Hugging Face Spaces (Gradio)
- docs - documentación del proyecto
- ests:
- basic_stats.py - estadísticas básicas del texto
- cohesion_stats.py - estadísticas de cohesión
- components.py - componentes de spaCy
- constants.py - constantes de la lengua española y de las métricas
- diversity_stats.py - métricas de diversidad léxica
- exceptions.py - excepciones de la biblioteca
- extractors.py - extractores de oraciones, palabras y N-gramas de caracteres con los tokenizadores del español, los párrafos de un texto
- lexical_stats.py - estadísticas de complejidad léxica
- morph_stats.py - estadísticas morfológicas
- phon_stats.py - fonoestadística
- readability_stats.py - métricas de legibilidad
- unadapted_readability_stats.py - fórmulas de legibilidad de otros idiomas
- style_stats.py - métricas de estilo
- syllables.py - silabificación y acento
- syntax_stats.py - estadísticas sintácticas
- utils.py - herramientas auxiliares
- verse_stats.py - estadísticas del verso
- corpus - medidas de corpus:
- collocations.py - colocaciones y medidas de asociación
- compare.py - comparación de corpus por los rasgos de un texto
- dispersion.py - dispersión de una palabra por las partes de un texto
- keyness.py - palabras clave frente a un corpus de referencia o al diccionario de frecuencias
- kwic.py - concordancia KWIC
- stylometry.py - la Delta de Burrows, Zeta, las palabras funcionales y otras medidas de estilometría
- datasets - conjuntos de datos:
- freq_dict.py - el diccionario de frecuencias según Google Books Ngram
- spanish_literature.py - el corpus de literatura en español
- spanish_sonnets.py - los sonetos de los siglos XV-XX
- resources - recursos léxicos incluidos (los marcadores del discurso, los 10 000 lemas más frecuentes)
- visualizers - gráficos:
- corpus.py - dispersión léxica, gráfico de palabras clave, red de colocaciones
- fingerprinting.py - huella literaria
- highlight.py - resaltado del texto
- sentences.py - longitudes de las oraciones
- stylometry.py - dendrograma, componentes principales, escalamiento, distancias dentro de un autor y entre autores, Delta móvil, marcadores de Zeta, curvas de Mendenhall
- vocabulary.py - crecimiento del vocabulario y espectro de frecuencias
- word_tree.py - árbol de palabras
- zipf.py - ley de Zipf
- examples - cuadernos con ejemplos
- scripts - scripts que construyen los archivos de los conjuntos de datos, traen las páginas de anyTS de la documentación y comprueban las salidas de los cuadernos
- tests - pruebas que reproducen la estructura del paquete