Fórmulas de otros idiomas¶
UnadaptedReadabilityStats(source, sents_extractor=None, words_extractor=None)
Fórmulas de legibilidad creadas para el inglés, el alemán o el italiano, calculadas a partir de las estadísticas básicas de un texto con los coeficientes con que se publicaron (Linsear Write en la forma de textstat), sin calibración para su idioma. Sus valores comparan entre sí los textos de un mismo idioma; no son grados escolares de otro idioma. Una palabra sin sílabas (un número, una preposición de una sola consonante) cuenta como monosílaba en FORCAST y en las Wiener Sachtextformeln y como fácil en Linsear Write, como en textstat. La fuente de datos es un texto, un objeto Doc de spaCy o un objeto BasicStats ya calculado, como para ReadabilityStats.
Excepciones:
SourceTypeError- una fuente que no es ni una cadena, ni unDoc, ni un objetoBasicStats, unas estadísticas básicas de otra clase, un extractor de otro tipo, una cadena o unDocpasados a una clase sinbasic_stats_class;SourceError- una fuente sin palabras o sin oraciones.
La clase extiende el UnadaptedReadabilityStats del núcleo anyTS con las estadísticas básicas de esTS, que cuentan las sílabas y las letras de las palabras españolas y toman por defecto los SentsExtractor y WordsExtractor del español. La tabla de print_stats lleva las descripciones inglesas del núcleo, anyts.constants.UNADAPTED_READABILITY_STATS_DESC. Una cadena con un carácter sin forma UTF-8 también lanza SourceError.
Las fórmulas no están calibradas para el español. Sus valores sirven para comparar textos españoles entre sí y con los resultados de estas fórmulas en otras herramientas, pero no dan un grado español: una palabra española tiene más sílabas que las inglesas con que se ajustaron las fórmulas, así que las fórmulas que cuentan sílabas leen un texto español como más difícil - en 60 ventanas de 1000 palabras de la prosa del corpus de literatura, con 1.96 sílabas por palabra, la mediana de FORCAST es 13.2 y la de Linsear Write 13.7, frente a un grado de consenso de 5.0 de las fórmulas españolas. Por eso estas fórmulas no tienen escalas de lectura, describe da None para ellas y no entran en el grado de consenso. Las fórmulas con coeficientes para el español están en ReadabilityStats.
En español las palabras sin sílabas son los números, las abreviaturas sin vocal (D., Sr., km) y las interjecciones sin vocal (pst, sh); las conjunciones y y e, así como la preposición a, tienen una sílaba.
from ests import UnadaptedReadabilityStats
text = (
"Pies no tengo, ando; boca no tengo, hablo: cuándo dormir, cuándo levantarse, "
"cuándo empezar labores"
)
urs = UnadaptedReadabilityStats(text)
urs.print_stats()
Metric | Value
----------------------------------------
FORCAST grade | 17.00
Linsear Write grade | 10.50
Powers-Sumner-Kearl grade | 8.37
McAlpine EFLAW score | 17.00
Wiener Sachtextformel 1 | 7.44
Wiener Sachtextformel 2 | 6.50
Wiener Sachtextformel 3 | 7.67
Wiener Sachtextformel 4 | 7.78
Dickes-Steiwer index | 30.42
Gulpease index | 56.33
Fucks index | 31.00
Strain index | 9.30
Easy listening formula (ELF) | 16.00
Wheeler-Smith index | 120.00
Parámetros¶
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
source |
str / Doc / BasicStats |
- | Fuente de datos |
sents_extractor |
SentsExtractor |
None |
Herramienta de extracción de oraciones, que no se usa con unas estadísticas básicas ya calculadas |
words_extractor |
WordsExtractor |
None |
Herramienta de extracción de palabras, que no se usa con unas estadísticas básicas ya calculadas |
Atributos¶
| Atributo | Tipo | Descripción |
|---|---|---|
bs |
BasicStats |
Estadísticas básicas del texto |
Las estadísticas básicas ya calculadas pueden tomarse de un objeto ReadabilityStats, para no calcularlas otra vez:
from ests import ReadabilityStats
rs = ReadabilityStats(text)
urs = UnadaptedReadabilityStats(rs.bs)
urs.bs is rs.bs, urs.forcast
(True, 17.0)
Métricas¶
Cada métrica es una propiedad del objeto, calculada en cada acceso a partir de bs, y get_stats las da todas. Una palabra difícil tiene complex_syl_factor sílabas o más (3), una palabra larga, long_word_letter_factor letras o más (7).
| Métrica | Idioma y lectores | Rango | Un valor mayor indica |
|---|---|---|---|
forcast |
Textos técnicos en inglés, un grado | 5-20 | Un texto más difícil |
linsear_write |
Inglés, un grado | -1 o más | Un texto más difícil |
powers_sumner_kearl |
Textos de primaria en inglés, un grado | Cualquiera | Un texto más difícil |
eflaw |
Inglés para estudiantes extranjeros | 1 o más | Un texto más difícil |
wiener_sachtextformel_1 ... wiener_sachtextformel_4 |
Textos de no ficción en alemán, un grado de 4 a 15 | Cualquiera | Un texto más difícil |
dickes_steiwer |
Alemán, sin sílabas | Cualquiera | Un texto más fácil |
gulpease |
Italiano, por letras | 0-100 para la mayoría de los textos | Un texto más fácil |
fucks |
Alemán, sílabas por oración | 0 o más | Un texto más difícil |
strain_index |
Inglés | 0 o más | Un texto más difícil |
elf |
Textos en inglés leídos en voz alta | 0 o más | Un texto más difícil |
wheeler_smith |
Textos de primaria en inglés | 0 o más | Un texto más difícil |
Aquí ASL es el número medio de palabras por oración y ASW el número medio de sílabas por palabra. Las funciones de las fórmulas se importan de ests.unadapted_readability_stats y calculan un valor a partir de recuentos:
from ests.unadapted_readability_stats import calc_forcast, calc_gulpease
calc_forcast(n_monosyllable_words=30, n_words=150)
calc_gulpease(n_letters=550, n_words=100, n_sents=8)
17.0
58.0
FORCAST¶
calc_forcast(n_monosyllable_words, n_words)
El grado de Caylor et al. (1973) para textos técnicos: 20 menos la décima parte de las palabras monosílabas por cada 150 palabras, de 5 (todas las palabras monosílabas) a 20; nan sin palabras.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_monosyllable_words |
int |
- | Número de palabras monosílabas |
n_words |
int |
- | Número de palabras |
Un recuento que no es un entero no negativo y más palabras monosílabas que palabras lanzan ParameterError.
Linsear Write¶
calc_linsear_write(n_easy_words, n_hard_words, n_sents)
El grado de Linsear Write en la forma de textstat; la Lensear Write Formula de O'Hayre (1966) es otra fórmula, de las palabras monosílabas y las oraciones de una muestra de 100 palabras. Una palabra fácil, de dos sílabas como mucho, pesa 1 y una difícil 3; su suma por oración \(r\) se divide entre 2 por encima de 20 y, en otro caso, pierde 2 antes de dividirse entre 2. Se calcula sobre todo el texto en lugar de una muestra de 100 palabras; nan sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_easy_words |
int |
- | Número de palabras de una o dos sílabas |
n_hard_words |
int |
- | Número de palabras de tres o más sílabas |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Grado de Powers-Sumner-Kearl¶
calc_powers_sumner_kearl(n_syllables, n_words, n_sents)
El nuevo cálculo de la fórmula de Flesch de Powers, Sumner y Kearl (1958) como grado, para textos de primaria; nan sin palabras o sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_syllables |
int |
- | Número de sílabas |
n_words |
int |
- | Número de palabras |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
EFLAW de McAlpine¶
calc_eflaw(n_mini_words, n_words, n_sents)
La puntuación de McAlpine (2005) para los lectores del inglés como lengua extranjera: las palabras y las minipalabras, de una a tres letras (mini_word_letters), por oración; 20 o menos es muy fácil, 30 o más, confuso. nan sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_mini_words |
int |
- | Número de palabras de una a tres letras |
n_words |
int |
- | Número de palabras |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Wiener Sachtextformel¶
calc_wiener_sachtextformel(n_complex, n_long_words, n_monosyllable_words, n_words, n_sents, variant=1)
Las cuatro fórmulas de Bamberger y Vanecek (1984) para textos de no ficción en alemán, un grado de 4 a 15, según los porcentajes de palabras de tres o más sílabas (MS), de más de seis letras (IW) y de una sílaba (ES) y la longitud media de la oración (SL); nan sin palabras o sin oraciones. Una variante que no es un entero de 1 a 4 lanza ParameterError.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_complex |
int |
- | Número de palabras de tres o más sílabas |
n_long_words |
int |
- | Número de palabras de más de seis letras |
n_monosyllable_words |
int |
- | Número de palabras monosílabas |
n_words |
int |
- | Número de palabras |
n_sents |
int |
- | Número de oraciones |
variant |
int |
1 |
Variante de la fórmula, de 1 a 4 |
Un recuento que no es un entero no negativo lanza ParameterError.
Índice de Dickes-Steiwer¶
calc_dickes_steiwer(n_letters, n_words, n_sents, n_types)
La fórmula corta de Dickes y Steiwer (1977) para el alemán, tal como la dan Bamberger y Vanecek (1984), según las letras por palabra, las palabras por oración y la proporción de lexemas entre las palabras (TTR), sin sílabas; un valor mayor indica un texto más fácil. nan sin palabras o sin oraciones. Esa proporción baja con la longitud de un texto, así que se comparan los valores de textos de igual longitud.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_letters |
int |
- | Número de letras de las palabras |
n_words |
int |
- | Número de palabras |
n_sents |
int |
- | Número de oraciones |
n_types |
int |
- | Número de palabras distintas |
Un recuento que no es un entero no negativo lanza ParameterError.
Índice Gulpease¶
calc_gulpease(n_letters, n_words, n_sents)
El índice de Lucisano y Piemontese (1988) para el italiano, por letras en lugar de sílabas: cerca de 0 para los textos más difíciles y de 100 para los más fáciles, más allá de esos valores para los textos extremos; por debajo de 80 un texto es difícil para un lector de primaria, por debajo de 40 para un lector con estudios secundarios. nan sin palabras.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_letters |
int |
- | Número de letras de las palabras |
n_words |
int |
- | Número de palabras |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Índice de Fucks¶
calc_fucks(n_syllables, n_sents)
La característica de estilo de Fucks (1955): la longitud media de la palabra en sílabas por la longitud media de la oración en palabras, es decir, las sílabas por oración; nan sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_syllables |
int |
- | Número de sílabas |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Índice Strain¶
calc_strain_index(n_syllables, n_sents)
El índice de Nathaniel (2009): las sílabas de tres oraciones divididas entre 10, aquí las de tres oraciones de media en todo el texto, con lo que es 0.3 veces el índice de Fucks; nan sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_syllables |
int |
- | Número de sílabas |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Fórmula de escucha fácil¶
calc_elf(n_syllables, n_syllabic_words, n_sents)
La fórmula de Fang (1966) para textos leídos en voz alta: las sílabas que pasan de una por palabra, por oración, sin que una palabra sin sílabas (un número) añada ninguna; 12 o menos es fácil de escuchar. nan sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_syllables |
int |
- | Número de sílabas |
n_syllabic_words |
int |
- | Número de palabras de una o más sílabas |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Índice de Wheeler-Smith¶
calc_wheeler_smith(n_polysyllable_words, n_sents)
El índice de Wheeler y Smith (1954) para textos de primaria: la longitud media de la oración por la proporción de palabras de dos o más sílabas, por 10: diez veces el número de esas palabras por oración; cuenta oraciones donde el original cuenta unidades terminadas por cualquier signo final. nan sin oraciones.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
n_polysyllable_words |
int |
- | Número de palabras de dos o más sílabas |
n_sents |
int |
- | Número de oraciones |
Un recuento que no es un entero no negativo lanza ParameterError.
Métodos¶
Los métodos get_stats, to_dataframe, print_stats y describe son los de la interfaz de estadísticas del núcleo anyTS; las fórmulas no tienen escalas, y describe da None para cualquiera de ellas.
urs = UnadaptedReadabilityStats(text)
urs.describe("forcast"), urs.describe("gulpease")
urs.get_stats()
(None, None)
{'forcast': 17.0,
'linsear_write': 10.5,
'powers_sumner_kearl': 8.367433333333333,
'eflaw': 17.0,
'wiener_sachtextformel_1': 7.443000000000001,
'wiener_sachtextformel_2': 6.504,
'wiener_sachtextformel_3': 7.6691,
'wiener_sachtextformel_4': 7.779,
'dickes_steiwer': 30.42186181527815,
'gulpease': 56.333333333333336,
'fucks': 31.0,
'strain_index': 9.3,
'elf': 16.0,
'wheeler_smith': 120.0}