Fonoestadística¶
ests.phon_stats.PhonStats
Descripción¶
Módulo para calcular la fonoestadística de un texto: las proporciones de las clases de sonidos, los grupos consonánticos, los hiatos, la variedad de la forma fónica de las palabras, las sílabas abiertas y los índices de aliteración y de asonancia, que dicen si las repeticiones de un sonido se agrupan en palabras vecinas. La fuente de datos puede ser un texto o un objeto Doc de la biblioteca spaCy; no hace falta ningún modelo entrenado.
Las estadísticas se cuentan sobre los sonidos de la transcripción de las palabras (transcribe), no sobre las letras: ch, ll, rr y qu son un sonido, la h y la u de que y gui ninguno, y la x dos. La pronunciación es la del estándar de España: yeísmo (ll e y son un solo sonido) y distinción (c ante e e i y z son θ, distinta de s).
| Clase | Sonidos |
|---|---|
| Vocales | a, e, i, o, u |
| Sonantes | m, n, ɲ (ñ), l, r (la vibrante simple y la múltiple son un sonido) |
| Obstruyentes sonoras | b (b, v), d, g, ʝ (y, ll) |
| Obstruyentes sordas | p, t, k (c, qu, k), f, θ (c, z), s, x (j, g), tʃ (ch) |
Las sílabas son las de syllabify, por las reglas ortográficas, y un hiato son dos vocales en dos sílabas vecinas de una palabra (po-e-ta, dí-a, bú-ho).
Nota
Las estadísticas se calculan al crear el objeto PhonStats. Las estadísticas y las funciones que las calculan se describen en la sección correspondiente.
Parámetros¶
| Parámetro | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
source |
str/Doc | - |
Fuente de datos (una cadena o un objeto Doc) |
words_extractor |
WordsExtractor | None |
Herramienta de extracción de palabras |
window_len |
int | 3 |
Ventana en palabras para la aliteración y la asonancia |
Atributos¶
| Atributo | Tipo | Descripción |
|---|---|---|
words |
tuple[str] | Tupla de las palabras extraídas en minúsculas |
syllables |
tuple[tuple[str]] | Tupla de las sílabas de cada palabra |
sounds |
tuple[tuple[str]] | Tupla de los sonidos de cada palabra |
n_vowels |
int | Número de vocales |
n_consonants |
int | Número de consonantes |
n_sonorants |
int | Número de consonantes sonantes |
n_voiced |
int | Número de obstruyentes sonoras |
n_voiceless |
int | Número de obstruyentes sordas |
c_clusters |
dict[int, int] | Distribución de los grupos consonánticos por longitud |
c_syllable_patterns |
dict[str, int] | Distribución de las sílabas por patrón CV |
p_vowels |
float | Proporción de vocales entre los sonidos |
p_sonorants |
float | Proporción de consonantes sonantes entre los sonidos |
p_voiced |
float | Proporción de obstruyentes sonoras entre los sonidos |
p_voiceless |
float | Proporción de obstruyentes sordas entre los sonidos |
consonant_vowel_ratio |
float | Razón de consonantes a vocales |
p_heavy_clusters |
float | Proporción de los grupos de 3 consonantes o más |
p_hiatus |
float | Hiatos por palabra |
cv_entropy |
float | Entropía de los patrones CV de las palabras en bits |
hardness |
float | Razón de las obstruyentes sordas a las vocales y las sonantes |
alliteration |
float | Índice de aliteración |
assonance |
float | Índice de asonancia |
p_open_syllables |
float | Proporción de sílabas abiertas |
mean_syllable_len |
float | Longitud media de una sílaba en sonidos |
Métodos¶
get_stats¶
Devuelve un diccionario con la fonoestadística calculada.
Ejemplo
from ests import PhonStats
ps = PhonStats("Tres tristes tigres tragaban trigo en un trigal")
ps.get_stats()
# {'p_vowels': 0.35,
# 'p_sonorants': 0.25,
# 'p_voiced': 0.125,
# 'p_voiceless': 0.275,
# 'consonant_vowel_ratio': 1.8571428571428572,
# 'p_heavy_clusters': 0.0,
# 'p_hiatus': 0.0,
# 'cv_entropy': 2.75,
# 'hardness': 0.4583333333333333,
# 'alliteration': 0.9175627240143369,
# 'assonance': 0.6708595387840671,
# 'p_open_syllables': 0.42857142857142855,
# 'mean_syllable_len': 2.857142857142857}
ps.syllables[:3], ps.sounds[:2]
# ((('tres',), ('tris', 'tes'), ('ti', 'gres')),
# (('t', 'r', 'e', 's'), ('t', 'r', 'i', 's', 't', 'e', 's')))
print_stats¶
Muestra una tabla con la fonoestadística calculada.
Ejemplo
Código:
from ests import PhonStats
# La primera estrofa de Sonatina de Rubén Darío (Prosas profanas, 1896)
sonatina = (
"La princesa está triste... ¿qué tendrá la princesa?\n"
"Los suspiros se escapan de su boca de fresa,\n"
"que ha perdido la risa, que ha perdido el color.\n"
"La princesa está pálida en su silla de oro,\n"
"está mudo el teclado de su clave sonoro;\n"
"y en un vaso olvidada se desmaya una flor."
)
PhonStats(sonatina).print_stats()
Resultado:
Statistic | Value
--------------------------------------------------------
Share of vowels | 0.46
Share of sonorant consonants | 0.19
Share of voiced obstruents | 0.10
Share of voiceless obstruents | 0.25
Ratio of consonants to vowels | 1.19
Share of clusters of 3 consonants or more | 0.01
Hiatuses per word | 0.00
Entropy of the CV patterns of words (bits) | 3.55
Hardness | 0.39
Alliteration index | 0.83
Assonance index | 0.86
Share of open syllables | 0.74
Mean length of a syllable (sounds) | 2.19
Sobre un libro entero los índices de aliteración y de asonancia se acercan a 1 tanto en verso como en prosa, como en los libros del corpus de literatura: las repeticiones de un poema son locales, y los lugares donde se agrupan los muestra la capa alliteration del resaltado.