Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI-0202 Principios de informática - III-2012
Profesor Jeisson Hidalgo-Céspedes
Grupo 903. Entrega límite: 06-mar-2013 11:55 p.m.

Tarea 05

Supóngase que usted está colaborando en un gran proyecto de automatización de herramientas lingüísticas, y se necesita un algoritmo implementado en Java que dada una palabra en español, la divida en sílabas. El departamento de investigación ha creado un archivo palabras_silabas.csv con 56,336 palabras y su división silábica correcta. Usted debe implementar su algoritmo y luego probarlo contra este archivo. El siguiente listado muestra un extracto:

a	a
aarónico	a-a-ró-ni-co/
ababíllame	a-ba-bí-lla-me
ababillar	a-ba-bi-llar
abacería	a-ba-ce-rí-a
abacero	a-ba-ce-ro
ábaco	á-ba-co
abad	a-bad
abadejo	a-ba-de-jo
abadengo	a-ba-den-go
Primeras 10 líneas del archivo palabras_silabas.csv.

Su algoritmo debe obtener una efectividad de al menos 67.5%. La efectividad se calcula como: $$efectividad = \frac {cantidad\,de\,aciertos} {total\,de\,palabras} * 100$$ Es decir, el programa debe leer cada palabra del archivo palabras_silabas.csv, separarla utilizando su algoritmo y comparar el resultado que éste genera contra la división correcta de la palabra que está en el mismo archivo. Si el resultado coincide, se considera un acierto. El programa debe contar cuantos aciertos se obtuvieron y reportarlos en la pantalla. Puede tomar como punto de partida el siguiente código fuente que ya realiza este trabajo y necesita únicamente que se implemente el algoritmmo de división silábica.

]]>
Programa que evalúa la efectividad de un algoritmo de división silábica contra un archivo de palabras correctamente divididas. Obtener código fuente.

En el idioma español, toda sílaba se compone de al menos una vocal (V1) obligatoria, llamada núcleo silábico, por ejemplo la sílaba "a" en "a-re-te". El núcleo silábico puede contener dos vocales de la forma V1 V2 si forman un diptongo (como en "fue"); de lo contrario, formarían un hiato y significaría el inicio de otra sílaba (como en "mí-o"). Se puede incluso tener sílabas con tres vocales formando un triptongo compuesto de una vocal fuerte rodeada de dos débiles (como en "guau", y "es-tu-diáis"). Dentro del diptongo podría encontrase una 'h' que no se considera por ser muda (como en "prohi-bi-do", "inhu-ma-no".

El núcleo vocálico puede ser antecedido a lo sumo por dos consonantes C1 C2 opcionales llamadas ataque silábico o arranque silábico. Si C2 no está presente, C1 puede tomar cualquier consonante ("bcdfghjklmnñpqrstvwxyz"); si C2 es la consontante 'l', C1 puede sólo tomar una de las consonantes "bcfglpt"; y si C2 es la consontante 'r', C1 sólo puede tomar una de las consonantes "bcdfgpt".

El núcleo vocálico puede estar seguido por a lo sumo dos consonantes opcionales llamadas coda, compuesta de una consonante C3 (una de "bcdfglmnprstz") y una 's' únicamente presente en la sílaba "trans".

La estructura silábica aquí presentada se puede esquematizar en la siguiente figura, donde los corchetes ([ ]) indican opcionalidad. Cabe aclarar que préstamos lingüísticos (como en "mo-to-cross") y palabras compuestas (¿"pro-to-his-to-ria" ó "pro-tohis-to-ria"?) pueden escapar a la estructura presentada. Se puede además encontrar reglas prácticas para la división silábica, como en esta publicación de la Universidad Interamericana de Puerto Rico.

Partes de la sílaba

Evaluación

Si \(p\) es el porcentaje de efectividad obtenido por la solución presentada, la nota \(N\) de la Tarea 05 se tomará como \[N = \frac{100 * p}{67.5}\] con \(N \in \left[0, 148\right]\). Para presentar su solución, suba su archivo .java a Mediación virtual en la asignación con nombre Tarea05. Si utilizó varios archivos .java debe comprimirlos primero (no incluya el archivo palabras_silabas.csv).