Separar palabras en sílabas

Este algoritmo esta inspirado en el paper “A Syllabification Algorithm for Spanish” de Heriberto Cuayáhuitl. Pero realizando algunos cambios.

Para separar las palabras en sílabas usamos un algoritmo de dos pasos.

Paso 1

La clave del primer paso está en analizar las consonantes entre vocales. Podemos tener los siguientes casos: VCV, VCCV, VCCCV, VCCCCV. Siempre dividimos por delante de la última consonante: V|CV, VC|CV, VCC|CV, VCCC|CV . Sin embargo si la última consonante es una ‘r’, ‘l’ o ‘h’. Estamos ante una estructura de dos consonantes como cr, fr, rr, ll, ch,… Por lo que desplazaremos el corte a la consonante anterior.

Hay que tener en cuenta algún detalle más. Cuando hay varias vocales juntas actúan como si fueran una sola. Así que realmente las V pueden ser varia vocales (V+).

¿Y qué pasa con el principio y final de la frase? Pues para este caso los consideramos como si fueran vocales. De hecho el algoritmo creado elimina la parte analizada de la frase y es como si siempre empezase. Para ello el algoritmo al cortar un bloque de vocales y consonantes toma el lado de la izquierda, lo junta con el lado de la derecha del anterior corte, eso forma una silaba y la guarda. Luego almacena en una variable la parte de la derecha del corte hasta poder juntarlo con la parte izquierda del siguiente corte (si no hubiera más cortes lo guarda y listo).

Al final las reglas que quedan son:

^VC -> Almacena la V

^CV -> |CV

^C[rlh]V -> |CCV

^CCV -> C|CV

^CC[rlh]V -> C|CCV

^CCCV -> CC|CV

^CCC[rlh]V -> CC|CCV

^CCCCV -> CCC|CV

*(siendo ^ = inicio de cadena, [rlh] = consonante que sea r, l, h)

Ejemplo:

Palabra Bloque Variable Temporal Sílabas
instrumento i
nstrumento ns|tru tru ins,
mento |me me ins, tru
nto n|to to ins, tru, men
ins, tru, men, to

Paso 2

En el segundo paso repasamos cada uno de los grupos creados en el paso anterior y vamos a dividir los grupos de vocales cuando sea necesario. Separaremos las vocales en dos grupos: débiles {i,u} y fuerte {a,e,o}. Denotaremos el grupo de débiles con d y el de fuertes con f. A su vez pueden estar acentuadas o no, lo indicaremos como D y F. Para dos vocales juntas las reglas son:

  • Permanecen juntas: dd, dF, Fd
  • Se separan:  ff, Ff, fF, Df, fD

En el caso de tres vocales solo se separan si hay dos fuertes juntas.

Ejemplo:

“avión” tras el paso uno queda dividida en “a”,”vión”. Al ser “vión” un caso fF las vocales se dividirán el paso dos devolverá “a”,”vi”,”ón”

En cambio “ca”,”ca”,”hue”,”te” en el caso de “hue” al ser df seguirán juntas.


 

Todo esto está recopilado en la librería jsESsyllable.


var syllable = new jsESsyllable();

var word = "...";
var syllables = syllable.divide(word);

Puedes usar la demo online.

 

 

 

Un comentario en “Separar palabras en sílabas

  1. Pingback: Calcular la dificultad de lectura de una palabra | Construyendo a Chispas

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.